Check-in [7514898c36]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:update libcurl to version 7.67.0
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 7514898c36a5bcaf95979d8b3b1d62332f7de78b
User & Date: chw 2019-11-07 15:26:55.085
Context
2019-11-07
17:40
make ffidl compile/link on freebsd 12.1 check-in: dce7402899 user: chw tags: trunk
15:28
merge with trunk check-in: 52620b1658 user: chw tags: wtf-8-experiment
15:26
update libcurl to version 7.67.0 check-in: 7514898c36 user: chw tags: trunk
14:32
improve handling of right mouse button in jsmpeg driver check-in: af21b3793f user: chw tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to jni/curl/CHANGES.
1
2
3
4
5
6
7
8



























































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































9
10
11
12
13
14
15
                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

                                  Changelog




























































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Version 7.66.0 (10 Sep 2019)

Daniel Stenberg (10 Sep 2019)
- RELEASE-NOTES: curl 7.66.0

- THANKS: from the 7.66.0 release









>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

                                  Changelog

Version 7.67.0 (5 Nov 2019)

Daniel Stenberg (5 Nov 2019)
- RELEASE-NOTES: synced
  
  The 7.67.0 release

- THANKS: add new names from 7.67.0

- configure: only say ipv6 enabled when the variable is set
  
  Previously it could say "IPv6: enabled" at the end of the configure run
  but the define wasn't set because of a missing getaddrinfo().
  
  Reported-by: Marcel Raad
  Fixes #4555
  Closes #4560

Marcel Raad (2 Nov 2019)
- certs/Server-localhost-lastSAN-sv: regenerate with sha256
  
  All other certificates were regenerated in commit ba782baac30, but
  this one was missed.
  Fixes test3001 on modern systems.
  
  Closes https://github.com/curl/curl/pull/4551

Daniel Stenberg (2 Nov 2019)
- [Vilhelm Prytz brought this change]

  copyrights: update all copyright notices to 2019 on files changed this year
  
  Closes #4547

- [Bastien Bouclet brought this change]

  mbedtls: add error message for cert validity starting in the future
  
  Closes #4552

Jay Satiro (1 Nov 2019)
- schannel_verify: Fix concurrent openings of CA file
  
  - Open the CA file using FILE_SHARE_READ mode so that others can read
    from it as well.
  
  Prior to this change our schannel code opened the CA file without
  sharing which meant concurrent openings (eg an attempt from another
  thread or process) would fail during the time it was open without
  sharing, which in curl's case would cause error:
  "schannel: failed to open CA file".
  
  Bug: https://curl.haxx.se/mail/lib-2019-10/0104.html
  Reported-by: Richard Alcock

Daniel Stenberg (31 Oct 2019)
- gtls: make gnutls_bye() not wait for response on shutdown
  
  ... as it can make it wait there for a long time for no good purpose.
  
  Patched-by: Jay Satiro
  Reported-by: Bylon2 on github
  Adviced-by: Nikos Mavrogiannopoulos
  
  Fixes #4487
  Closes #4541

- [Michał Janiszewski brought this change]

  appveyor: publish artifacts on appveyor
  
  This allows obtaining upstream builds of curl directly from appveyor for
  all the available configurations
  
  Closes #4509

- url: make Curl_close() NULLify the pointer too
  
  This is the common pattern used in the code and by a unified approach we
  avoid mistakes.
  
  Closes #4534

- [Trivikram Kamat brought this change]

  INSTALL: add missing space for configure commands
  
  Closes #4539

- url: Curl_free_request_state() should also free doh handles
  
  ... or risk DoH memory leaks.
  
  Reported-by: Paul Dreik
  Fixes #4463
  Closes #4527

- examples: remove the "this exact code has not been verified"
  
  ... as really confuses the reader to not know what to believe!

- [Trivikram Kamat brought this change]

  HTTP3: fix typo somehere1 > somewhere1
  
  Closes #4535

Jay Satiro (28 Oct 2019)
- [Javier Blazquez brought this change]

  HTTP3: fix invalid use of sendto for connected UDP socket
  
  On macOS/BSD, trying to call sendto on a connected UDP socket fails
  with a EISCONN error. Because the singleipconnect has already called
  connect on the socket when we're trying to use it for QUIC transfers
  we need to use plain send instead.
  
  Fixes #4529
  Closes https://github.com/curl/curl/pull/4533

Daniel Stenberg (28 Oct 2019)
- RELEASE-NOTES: synced

- [Javier Blazquez brought this change]

  HTTP3: fix Windows build
  
  The ngtcp2 QUIC backend was using the MSG_DONTWAIT flag for send/recv
  in order to perform nonblocking operations. On Windows this flag does
  not exist. Instead, the socket must be set to nonblocking mode via
  ioctlsocket.
  
  This change sets the nonblocking flag on UDP sockets used for QUIC on
  all platforms so the use of MSG_DONTWAIT is not needed.
  
  Fixes #4531
  Closes #4532

Marcel Raad (27 Oct 2019)
- appveyor: add --disable-proxy autotools build
  
  This would have caught issue #3926.
  
  Also make formatting more consistent.
  
  Closes https://github.com/curl/curl/pull/4526

Daniel Stenberg (25 Oct 2019)
- appveyor: make winbuilds with DEBUG=no/yes and VS 2015/2017
  
  ... and invoke "curl -V" once done
  
  Co-Authored-By: Jay Satiro
  
  Closes #4523

- [Francois Rivard brought this change]

  schannel: reverse the order of certinfo insertions
  
  Fixes #4518
  Closes #4519

Marcel Raad (24 Oct 2019)
- test1591: fix spelling of http feature
  
  The test never got run because the feature name is `http` in lowercase.
  
  Closes https://github.com/curl/curl/pull/4520

Daniel Stenberg (23 Oct 2019)
- [Michał Janiszewski brought this change]

  appveyor: Use two parallel compilation on appveyor with CMake
  
  Appveyor provides 2 CPUs for each builder[1], make sure to use parallel
  compilation, when running with CMake. CMake learned this new option in
  version 3.12[2] and the version provided by appveyor is fresh enough.
  
  Curl doesn't really take that long to build and it is using the slowest
  builder available, msbuild, so expect only a moderate improvement in
  build times.
  
  [1] https://www.appveyor.com/docs/build-environment/
  [2] https://cmake.org/cmake/help/v3.12/release/3.12.html
  
  Closes #4508

- conn-reuse: requests wanting NTLM can reuse non-NTLM connections
  
  Added test case 338 to verify.
  
  Reported-by: Daniel Silverstone
  Fixes #4499
  Closes #4514

Marcel Raad (23 Oct 2019)
- tests: add missing proxy features

Daniel Stenberg (22 Oct 2019)
- RELEASE-NOTES: synced

Marcel Raad (21 Oct 2019)
- tests: use %FILE_PWD for file:// URLs
  
  This way, we always have exactly one slash after the host name, making
  the tests pass when curl is compiled with the MSYS GCC.
  
  Closes https://github.com/curl/curl/pull/4512

- tests: add `connect to non-listen` keywords
  
  These tests try to connect to ports nothing is listening on.
  
  Closes https://github.com/curl/curl/pull/4511

- runtests: get textaware info from curl instead of perl
  
  The MSYS system on Windows can run the test suite for curl built with
  any toolset. When built with the MSYS GCC, curl uses Unix line endings,
  while it uses Windows line endings when built with the MinGW GCC, and
  `^O` reports 'msys' in both cases. Use the curl executable itself to
  determine the line endings instead, which reports 'x86_64-pc-msys' when
  built with the MSYS GCC.
  
  Closes https://github.com/curl/curl/pull/4506

Daniel Stenberg (20 Oct 2019)
- [Michał Janiszewski brought this change]

  appveyor: Add MSVC ARM64 build
  
  Closes #4507

- http2_recv: a closed stream trumps pause state
  
  ... and thus should return 0, not EAGAIN.
  
  Reported-by: Tom van der Woerdt
  Fixes #4496
  Closes #4505

- http2: expire a timeout at end of stream
  
  To make sure that transfer is being dealt with. Streams without
  Content-Length need a final read to notice the end-of-stream state.
  
  Reported-by: Tom van der Woerdt
  Fixes #4496

Dan Fandrich (18 Oct 2019)
- travis: Add an ARM64 build
  
  Test 323 is failing for some reason, so disable it there for now.

Marcel Raad (18 Oct 2019)
- examples/sslbackend: fix -Wchar-subscripts warning
  
  With the `isdigit` implementation that comes with MSYS2, the argument
  is used as an array subscript, resulting in a -Wchar-subscripts
  warning. `isdigit`'s behavior is undefined if the argument is negative
  and not EOF [0]. As done in lib/curl_ctype.h, cast the `char` variable
  to `unsigned char` to avoid that.
  
  [0] https://en.cppreference.com/w/c/string/byte/isdigit
  
  Closes https://github.com/curl/curl/pull/4503

Daniel Stenberg (18 Oct 2019)
- configure: remove all cyassl references
  
  In particular, this removes the case where configure would find an old
  cyall installation rather than a wolfssl one if present. The library is
  named wolfssl in modern days so there's no real need to keep support for
  the former.
  
  Reported-by: Jacob Barthelmeh
  Closes #4502

Marcel Raad (17 Oct 2019)
- test1162: disable MSYS2's POSIX path conversion
  
  This avoids MSYS2 converting the backslasb in the URL to a slash,
  causing the test to fail.

Daniel Stenberg (17 Oct 2019)
- RELEASE-NOTES: synced

Jay Satiro (16 Oct 2019)
- CURLOPT_TIMEOUT.3: Clarify transfer timeout time includes queue time
  
  Prior to this change some users did not understand that the "request"
  starts when the handle is added to the multi handle, or probably they
  did not understand that some of those transfers may be queued and that
  time is included in timeout.
  
  Reported-by: Jeroen Ooms
  
  Fixes https://github.com/curl/curl/issues/4486
  Closes https://github.com/curl/curl/pull/4489

- [Stian Soiland-Reyes brought this change]

  tool_operate: Fix retry sleep time shown to user when Retry-After
  
  - If server header Retry-After is being used for retry sleep time then
    show that value to the user instead of the normal retry sleep time.
  
  This is a follow-up to 640b973 (7.66.0) which changed curl tool so that
  the value from Retry-After header overrides other retry timing options.
  
  Closes https://github.com/curl/curl/pull/4498

Daniel Stenberg (16 Oct 2019)
- url: normalize CURLINFO_EFFECTIVE_URL
  
  The URL extracted with CURLINFO_EFFECTIVE_URL was returned as given as
  input in most cases, which made it not get a scheme prefixed like before
  if the URL was given without one, and it didn't remove dotdot sequences
  etc.
  
  Added test case 1907 to verify that this now works as intended and as
  before 7.62.0.
  
  Regression introduced in 7.62.0
  
  Reported-by: Christophe Dervieux
  Fixes #4491
  Closes #4493

Marcel Raad (16 Oct 2019)
- tests: line ending fixes for Windows
  
  Mark some files as text.
  
  Closes https://github.com/curl/curl/pull/4490

- tests: use proxy feature
  
  This makes the tests succeed when using --disable-proxy.
  
  Closes https://github.com/curl/curl/pull/4488

- smbserver: fix Python 3 compatibility
  
  Python 2's `ConfigParser` module is spelled `configparser` in Python 3.
  
  Closes https://github.com/curl/curl/pull/4484

- security: silence conversion warning
  
  With MinGW-w64, `curl_socket_t` is is a 32 or 64 bit unsigned integer,
  while `read` expects a 32 bit signed integer.
  Use `sread` instead of `read` to use the correct parameter type.
  
  Closes https://github.com/curl/curl/pull/4483

- connect: silence sign-compare warning
  
  With MinGW-w64 using WinSock, `curl_socklen_t` is signed, while the
  result of `sizeof` is unsigned.
  
  Closes https://github.com/curl/curl/pull/4483

Daniel Stenberg (13 Oct 2019)
- TODO: Handle growing SFTP files
  
  Closes #4344

- KNOWN_BUGS: remove "CURLFORM_CONTENTLEN in an array"
  
  The curl_formadd() function is deprecated and shouldn't be used so the
  real fix for applications is to switch to the curl_mime_* API.

- KNOWN_BUGS: "LDAP on Windows does authentication wrong"
  
  Closes #3116

- appveyor: add a winbuild that uses VS2017
  
  Closes #4482

- [Harry Sintonen brought this change]

  socketpair: fix include and define for older TCP header systems
  
  fixed build for systems that need netinet/in.h for IPPROTO_TCP and are
  missing INADDR_LOOPBACK
  
  Closes #4480

- socketpair: fix double-close in error case
  
  Follow-up to bc2dbef0afc08

- gskit: use the generic Curl_socketpair

- asyn-thread: make use of Curl_socketpair() where available

- socketpair: an implemention for Windows and more
  
  Curl_socketpair() is designed to be used and work everywhere if there's
  no native version or the native version isn't good enough.
  
  Closes #4466

- RELEASE-NOTES: synced

- connect: return CURLE_OPERATION_TIMEDOUT for errno == ETIMEDOUT
  
  Previosly all connect() failures would return CURLE_COULDNT_CONNECT, no
  matter what errno said.
  
  This makes for example --retry work on these transfer failures.
  
  Reported-by: Nathaniel J. Smith
  Fixes #4461
  Clsoes #4462

- cirrus: switch off blackhole status on the freebsd CI machines

- tests: use port 2 instead of 60000 for a safer non-listening port
  
  ... when the tests want "connection refused".

- KNOWN_BUGS: IDN tests failing on Windows
  
  Closes #3747

Dan Fandrich (9 Oct 2019)
- cirrus: Increase the git clone depth.
  
  If more commits are submitted to master between the time of triggering
  the first Cirrus build and the time the final build gets started, the
  desired commit is no longer at HEAD and the build will error out.
  [skip ci]

Daniel Stenberg (9 Oct 2019)
- docs: make sure the --no-progress-meter docs file is in dist too

- docs: document it as --no-progress-meter instead of the reverse
  
  Follow-up to 93373a960c3bb4
  
  Reported-by: infinnovation-dev on github
  Fixes #4474
  Closes #4475

Dan Fandrich (9 Oct 2019)
- cirrus: Switch the FreeBSD 11.x build to 11.3 and add a 13.0 build.
  
  Also, select the images using image_family to get the latest snapshots
  automatically.
  [skip ci]

Daniel Stenberg (8 Oct 2019)
- curl: --no-progress-meter
  
  New option that allows a user to ONLY switch off curl's progress meter
  and leave everything else in "talkative" mode.
  
  Reported-by: Piotr Komborski
  Fixes #4422
  Closes #4470

- TODO: Consult %APPDATA% also for .netrc
  
  Closes #4016

- CURLOPT_TIMEOUT.3: remove the mention of "minutes"
  
  ... just say that limiting operations risk aborting otherwise fine
  working transfers. If that means seconds, minutes or hours, we leave to
  the user.
  
  Reported-by: Martin Gartner
  Closes #4469

- [Andrei Valeriu BICA brought this change]

  docs: added multi-event.c example
  
  Similar to multi-uv.c but using libevent 2. This is a simpler libevent
  integration example then hiperfifo.c.
  
  Closes #4471

Jay Satiro (5 Oct 2019)
- [Nicolas brought this change]

  ldap: fix OOM error on missing query string
  
  - Allow missing queries, don't return NO_MEMORY error in such a case.
  
  It is acceptable for there to be no specified query string, for example:
  
  curl ldap://ldap.forumsys.com
  
  A regression bug in 1b443a7 caused this issue.
  
  This is a partial fix for #4261.
  
  Bug: https://github.com/curl/curl/issues/4261#issuecomment-525543077
  Reported-by: Jojojov@users.noreply.github.com
  Analyzed-by: Samuel Surtees
  
  Closes https://github.com/curl/curl/pull/4467

- [Paul B. Omta brought this change]

  build: Remove unused HAVE_LIBSSL and HAVE_LIBCRYPTO defines
  
  Closes https://github.com/curl/curl/pull/4460

Daniel Stenberg (5 Oct 2019)
- RELEASE-NOTES: synced

- [Stian Soiland-Reyes brought this change]

  curl: ensure HTTP 429 triggers --retry
  
  This completes #3794.
  
  Also make sure the new tests from #4195 are enabled
  
  Closes #4465

Marcel Raad (4 Oct 2019)
- [apique brought this change]

  winbuild: add ENABLE_UNICODE option
  
  Fixes https://github.com/curl/curl/issues/4308
  Closes https://github.com/curl/curl/pull/4309

Daniel Stenberg (4 Oct 2019)
- ngtcp2: adapt to API change
  
  Closes #4457

- cookies: change argument type for Curl_flush_cookies
  
  The second argument is really a 'bool' so use that and pass in TRUE/FALSE
  to make it clear.
  
  Closes #4455

- http2: move state-init from creation to pre-transfer
  
  To make sure that the HTTP/2 state is initialized correctly for
  duplicated handles. It would otherwise easily generate "spurious"
  PRIORITY frames to get sent over HTTP/2 connections when duplicated easy
  handles were used.
  
  Reported-by: Daniel Silverstone
  Fixes #4303
  Closes #4442

- urlapi: fix use-after-free bug
  
  Follow-up from 2c20109a9b5d04
  
  Added test 663 to verify.
  
  Reported by OSS-Fuzz
  Bug: https://crbug.com/oss-fuzz/17954
  
  Closes #4453

- [Paul Dreik brought this change]

  cookie: avoid harmless use after free
  
  This fix removes a use after free which can be triggered by
  the internal cookie fuzzer, but otherwise is probably
  impossible to trigger from an ordinary application.
  
  The following program reproduces it:
  
          curl_global_init(CURL_GLOBAL_DEFAULT);
          CURL*  handle=curl_easy_init();
          CookieInfo* info=Curl_cookie_init(handle,NULL,NULL,false);
          curl_easy_setopt(handle, CURLOPT_COOKIEJAR, "/dev/null");
          Curl_flush_cookies(handle, true);
          Curl_cookie_cleanup(info);
          curl_easy_cleanup(handle);
          curl_global_cleanup();
  
  This was found through fuzzing.
  
  Closes #4454

- [Denis Chaplygin brought this change]

  docs: add note on failed handles not being counted by curl_multi_perform
  
  Closes #4446

- CURLMOPT_MAX_CONCURRENT_STREAMS.3: fix SEE ALSO typo

- [Niall brought this change]

  ESNI: initial build/setup
  
  Closes #4011

- RELEASE-NOTES: synced

- redirect: when following redirects to an absolute URL, URL encode it
  
  ... to make it handle for example (RFC violating) embeded spaces.
  
  Reported-by: momala454 on github
  Fixes #4445
  Closes #4447

- urlapi: fix URL encoding when setting a full URL

- tool_operate: rename functions to make more sense

- curl: create easy handles on-demand and not ahead of time
  
  This should again enable crazy-large download ranges of the style
  [1-10000000] that otherwise easily ran out of memory starting in 7.66.0
  when this new handle allocating scheme was introduced.
  
  Reported-by: Peter Sumatra
  Fixes #4393
  Closes #4438

- [Kunal Ekawde brought this change]

  CURLMOPT_MAX_CONCURRENT_STREAMS: new setopt
  
  Closes #4410

- chunked-encoding: stop hiding the CURLE_BAD_CONTENT_ENCODING error
  
  Unknown content-encoding would get returned as CURLE_WRITE_ERROR if the
  response is chunked-encoded.
  
  Reported-by: Ilya Kosarev
  Fixes #4310
  Closes #4449

Marcel Raad (1 Oct 2019)
- checksrc: fix uninitialized variable warning
  
  The loop doesn't need to be executed without a file argument.
  
  Closes https://github.com/curl/curl/pull/4444

- urlapi: fix unused variable warning
  
  `dest` is only used with `ENABLE_IPV6`.
  
  Closes https://github.com/curl/curl/pull/4444

- lib: silence conversion warnings
  
  Closes https://github.com/curl/curl/pull/4444

- AppVeyor: add 32-bit MinGW-w64 build
  
  With WinSSL and testing enabled so that it would have detected most of
  the warnings fixed in [0] and [1].
  
  [0] https://github.com/curl/curl/pull/4398
  [1] https://github.com/curl/curl/pull/4415
  
  Closes https://github.com/curl/curl/pull/4433

- AppVeyor: remove MSYS2_ARG_CONV_EXCL for winbuild
  
  It's only used for MSYS2 with MinGW.
  
  Closes

Daniel Stenberg (30 Sep 2019)
- [Emil Engler brought this change]

  git: add tests/server/disabled to .gitignore
  
  Closes #4441

- altsvc: accept quoted ma and persist values
  
  As mandated by the spec. Test 1654 is extended to verify.
  
  Closes #4443

- mailmap: a Lucas fix

Alessandro Ghedini (29 Sep 2019)
- [Lucas Pardue brought this change]

  quiche: update HTTP/3 config creation to new API

Daniel Stenberg (29 Sep 2019)
- BINDINGS: PureBasic, Net::Curl for perl and Nim

- BINDINGS: Kapito is an Erlang library, basically a binding

- BINDINGS: added clj-curl
  
  Reported-by: Lucas Severo

- [Jay Satiro brought this change]

  docs: disambiguate CURLUPART_HOST is for host name (ie no port)
  
  Closes #4424

- cookies: using a share with cookies shouldn't enable the cookie engine
  
  The 'share object' only sets the storage area for cookies. The "cookie
  engine" still needs to be enabled or activated using the normal cookie
  options.
  
  This caused the curl command line tool to accidentally use cookies
  without having been told to, since curl switched to using shared cookies
  in 7.66.0.
  
  Test 1166 verifies
  
  Updated test 506
  
  Fixes #4429
  Closes #4434

- setopt: handle ALTSVC set to NULL

- RELEASE-NOTES: synced

- [grdowns brought this change]

  INSTALL: add vcpkg installation instructions
  
  Closes #4435

- [Zenju brought this change]

  FTP: add test for FTPFILE_NOCWD: Avoid redundant CWDs
  
  Add libtest 661
  
  Closes #4417

- [Zenju brought this change]

  FTP: url-decode path before evaluation
  
  Closes #4428

Marcel Raad (27 Sep 2019)
- tests: fix narrowing conversion warnings
  
  `timediff_t` is 64 bits wide also on 32-bit systems since
  commit b1616dad8f0.
  
  Closes https://github.com/curl/curl/pull/4415

Jay Satiro (27 Sep 2019)
- [julian brought this change]

  vtls: Fix comment typo about macosx-version-min compiler flag
  
  Closes https://github.com/curl/curl/pull/4425

Daniel Stenberg (26 Sep 2019)
- [Yechiel Kalmenson brought this change]

  README: minor grammar fix
  
  Closes #4431

- [Spezifant brought this change]

  HTTP3: fix prefix parameter for ngtcp2 build
  
  Closes #4430

- quiche: don't close connection at end of stream!

- quiche: set 'drain' when returning without having drained the queues

- Revert "FTP: url-decode path before evaluation"
  
  This reverts commit 2f036a72d543e96128bd75cb0fedd88815fd42e2.

- HTTP3: merged and simplified the two 'running' sections

- HTTP3: show an --alt-svc using example too

- [Zenju brought this change]

  FTP: url-decode path before evaluation
  
  Closes #4423

- openssl: use strerror on SSL_ERROR_SYSCALL
  
  Instead of showing the somewhat nonsensical errno number, use strerror()
  to provide a more relatable error message.
  
  Closes #4411

- HTTP3: update quic.aiortc.org + add link to server list
  
  Reported-by: Jeremy Lainé

Jay Satiro (26 Sep 2019)
- url: don't set appconnect time for non-ssl/non-ssh connections
  
  Prior to this change non-ssl/non-ssh connections that were reused set
  TIMER_APPCONNECT [1]. Arguably that was incorrect since no SSL/SSH
  handshake took place.
  
  [1]: TIMER_APPCONNECT is publicly known as CURLINFO_APPCONNECT_TIME in
  libcurl and %{time_appconnect} in the curl tool. It is documented as
  "the time until the SSL/SSH handshake is completed".
  
  Reported-by: Marcel Hernandez
  
  Ref: https://github.com/curl/curl/issues/3760
  
  Closes https://github.com/curl/curl/pull/3773

Daniel Stenberg (25 Sep 2019)
- ngtcp2: remove fprintf() calls
  
  - convert some of them to H3BUF() calls to infof()
  - remove some of them completely
  - made DEBUG_HTTP3 defined only if CURLDEBUG is set for now
  
  Closes #4421

- [Jay Satiro brought this change]

  url: fix the NULL hostname compiler warning case
  
  Closes #4403

- [Jay Satiro brought this change]

  travis: move the go install to linux-only
  
  ... to repair the build again
  Closes #4403

- altsvc: correct the #ifdef for the ngtcp2 backend

- altsvc: save h3 as h3-23
  
  Follow-up to d176a2c7e5

- urlapi: question mark within fragment is still fragment
  
  The parser would check for a query part before fragment, which caused it
  to do wrong when the fragment contains a question mark.
  
  Extended test 1560 to verify.
  
  Reported-by: Alex Konev
  Fixes #4412
  Closes #4413

- [Alex Samorukov brought this change]

  HTTP3.md: move -p for mkdir, remove -j for make
  
  - mkdir on OSX/Darwin requires `-p` argument before dir
  
  - portabbly figuring out number of cores is an exercise for somewhere
    else
  
  Closes #4407

Patrick Monnerat (24 Sep 2019)
- os400: getpeername() and getsockname() return ebcdic AF_UNIX sockaddr,
  
  As libcurl now uses these 2 system functions, wrappers are needed on os400
  to convert returned AF_UNIX sockaddrs to ascii.
  
  This is a follow-up to commit 7fb54ef.
  See also #4037.
  Closes #4214

Jay Satiro (24 Sep 2019)
- [Lucas Pardue brought this change]

  strcase: fix raw lowercasing the letter X
  
  Casing mistake in Curl_raw_tolower 'X' wasn't lowercased as 'x' prior to
  this change.
  
  Follow-up to 0023fce which added the function several days ago.
  
  Ref: https://github.com/curl/curl/pull/4401#discussion_r327396546
  
  Closes https://github.com/curl/curl/pull/4408

Daniel Stenberg (23 Sep 2019)
- http2: Expression 'stream->stream_id != - 1' is always true
  
  PVS-Studio warning
  Fixes #4402

- http2: A value is being subtracted from the unsigned variable
  
  PVS-Studio warning
  Fixes #4402

- libssh: part of conditional expression is always true: !result
  
  PVS-Studio warning
  Fixed #4402

- libssh: part of conditional expression is always true
  
  PVS-Studio warning
  Fixes #4402

- libssh: The expression is excessive or contains a misprint
  
  PVS-Studio warning
  Fixes #4402

- quiche: The expression must be surrounded by parentheses
  
  PVS-Studio warning
  Fixes #4402

- vauth: The parameter 'status' must be surrounded by parentheses
  
  PVS-Studio warning
  Fixes #4402

- [Paul Dreik brought this change]

  doh: allow only http and https in debug mode
  
  Otherwise curl may be told to use for instance pop3 to
  communicate with the doh server, which most likely
  is not what you want.
  
  Found through fuzzing.
  
  Closes #4406

- [Paul Dreik brought this change]

  doh: return early if there is no time left
  
  Closes #4406

- [Barry Pollard brought this change]

  http: lowercase headernames for HTTP/2 and HTTP/3
  
  Closes #4401
  Fixes #4400

Marcel Raad (23 Sep 2019)
- vtls: fix narrowing conversion warnings
  
  Curl_timeleft returns `timediff_t`, which is 64 bits wide also on
  32-bit systems since commit b1616dad8f0.
  
  Closes https://github.com/curl/curl/pull/4398

Daniel Stenberg (23 Sep 2019)
- [Joel Depooter brought this change]

  winbuild: Add manifest to curl.exe for proper OS version detection
  
  This is a small fix to commit ebd213270a017a6830928ee2e1f4a9cabc799898
  in pull request #1221. That commit added the CURL_EMBED_MANIFEST flag to
  CURL_RC_FLAGS. However, later in the file CURL_RC_FLAGS is
  overwritten. The fix is to append values to CURL_RC_FLAGS instead of
  overwriting
  
  Closes #4399

- RELEASE-NOTES: synced

Marcel Raad (22 Sep 2019)
- openssl: fix compiler warning with LibreSSL
  
  It was already fixed for BoringSSL in commit a0f8fccb1e0.
  LibreSSL has had the second argument to SSL_CTX_set_min_proto_version
  as uint16_t ever since the function was added in [0].
  
  [0] https://github.com/libressl-portable/openbsd/commit/56f107201baefb5533486d665a58d8f57fd3aeda
  
  Closes https://github.com/curl/curl/pull/4397

Daniel Stenberg (22 Sep 2019)
- curl: exit the create_transfers loop on errors
  
  When looping around the ranges and given URLs to create transfers, all
  errors should exit the loop and return. Previously it would keep
  looping.
  
  Reported-by: SumatraPeter on github
  Bug: #4393
  Closes #4396

Jay Satiro (21 Sep 2019)
- socks: Fix destination host shown on SOCKS5 error
  
  Prior to this change when a server returned a socks5 connect error then
  curl would parse the destination address:port from that data and show it
  to the user as the destination:
  
  curld -v --socks5 10.0.3.1:1080 http://google.com:99
  * SOCKS5 communication to google.com:99
  * SOCKS5 connect to IPv4 172.217.12.206 (locally resolved)
  * Can't complete SOCKS5 connection to 253.127.0.0:26673. (1)
  curl: (7) Can't complete SOCKS5 connection to 253.127.0.0:26673. (1)
  
  That's incorrect because the address:port included in the connect error
  is actually a bind address:port (typically unused) and not the
  destination address:port. This fix changes curl to show the destination
  information that curl sent to the server instead:
  
  curld -v --socks5 10.0.3.1:1080 http://google.com:99
  * SOCKS5 communication to google.com:99
  * SOCKS5 connect to IPv4 172.217.7.14:99 (locally resolved)
  * Can't complete SOCKS5 connection to 172.217.7.14:99. (1)
  curl: (7) Can't complete SOCKS5 connection to 172.217.7.14:99. (1)
  
  curld -v --socks5-hostname 10.0.3.1:1080 http://google.com:99
  * SOCKS5 communication to google.com:99
  * SOCKS5 connect to google.com:99 (remotely resolved)
  * Can't complete SOCKS5 connection to google.com:99. (1)
  curl: (7) Can't complete SOCKS5 connection to google.com:99. (1)
  
  Ref: https://tools.ietf.org/html/rfc1928#section-6
  
  Closes https://github.com/curl/curl/pull/4394

Daniel Stenberg (21 Sep 2019)
- travis: enable ngtcp2 h3-23 builds

- altsvc: both backends run h3-23 now
  
  Closes #4395

- http: fix warning on conversion from int to bit
  
  Follow-up from 03ebe66d70

- urldata: use 'bool' for the bit type on MSVC compilers
  
  Closes #4387
  Fixes #4379

- appveyor: upgrade VS2017 to VS2019
  
  Closes #4383

- [Zenju brought this change]

  FTP: FTPFILE_NOCWD: avoid redundant CWDs
  
  Closes #4382

- cookie: pass in the correct cookie amount to qsort()
  
  As the loop discards cookies without domain set. This bug would lead to
  qsort() trying to sort uninitialized pointers. We have however not found
  it a security problem.
  
  Reported-by: Paul Dreik
  Closes #4386

- [Paul Dreik brought this change]

  urlapi: avoid index underflow for short ipv6 hostnames
  
  If the input hostname is "[", hlen will underflow to max of size_t when
  it is subtracted with 2.
  
  hostname[hlen] will then cause a warning by ubsanitizer:
  
  runtime error: addition of unsigned offset to 0x<snip> overflowed to
  0x<snip>
  
  I think that in practice, the generated code will work, and the output
  of hostname[hlen] will be the first character "[".
  
  This can be demonstrated by the following program (tested in both clang
  and gcc, with -O3)
  
  int main() {
    char* hostname=strdup("[");
    size_t hlen = strlen(hostname);
  
    hlen-=2;
    hostname++;
    printf("character is %d\n",+hostname[hlen]);
    free(hostname-1);
  }
  
  I found this through fuzzing, and even if it seems harmless, the proper
  thing is to return early with an error.
  
  Closes #4389

- [Tatsuhiro Tsujikawa brought this change]

  ngtcp2: compile with latest ngtcp2 + nghttp3 draft-23
  
  Closes #4392

- THANKS-filter: deal with my typos 'Jat' => 'Jay'

- travis: use go master
  
  ... as the boringssl builds needs a very recent version
  
  Co-authored-by: Jat Satiro
  Closes #4361

- tool_operate: removed unused variable 'done'
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- tool_operate: Expression 'config->resume_from' is always true
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- tool_getparam: remove duplicate switch case
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- libssh2: part of conditional expression is always true: !result
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- urlapi: Expression 'storep' is always true
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- urlapi: 'scheme' is always true
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- urlapi: part of conditional expression is always true: (relurl[0] == '/')
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- setopt: store CURLOPT_RTSP_SERVER_CSEQ correctly
  
  Fixes bug detected by PVS-Studio
  Fixes #4374

- mime: make Curl_mime_duppart() assert if called without valid dst
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- http_proxy: part of conditional expression is always true: !error
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- imap: merged two case-branches performing the same action
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- multi: value '2L' is assigned to a boolean
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- easy: part of conditional expression is always true: !result
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- netrc: part of conditional expression is always true: !done
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- version: Expression 'left > 1' is always true
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- url: remove dead code
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- url: part of expression is always true: (bundle->multiuse == 0)
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- ftp: the conditional expression is always true
  
  ... both !result and (ftp->transfer != FTPTRANSFER_BODY)!
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- ftp: Expression 'ftpc->wait_data_conn' is always false
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- ftp: Expression 'ftpc->wait_data_conn' is always true
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- ftp: part of conditional expression is always true: !result
  
  Fixes warning detected by PVS-Studio
  Fixes #4374

- http: fix Expression 'http->postdata' is always false
  
  Fixes warning detected by PVS-Studio
  Fixes #4374
  Reported-by: Valerii Zapodovnikov

- [Niall O'Reilly brought this change]

  doh: avoid truncating DNS QTYPE to lower octet
  
  Closes #4381

- [Jens Finkhaeuser brought this change]

  urlapi: CURLU_NO_AUTHORITY allows empty authority/host part
  
  CURLU_NO_AUTHORITY is intended for use with unknown schemes (i.e. not
  "file:///") to override cURL's default demand that an authority exists.
  
  Closes #4349

- version: next release will be 7.67.0

- RELEASE-NOTES: synced

- url: only reuse TLS connections with matching pinning
  
  If the requests have different CURLOPT_PINNEDPUBLICKEY strings set, the
  connection should not be reused.
  
  Bug: https://curl.haxx.se/mail/lib-2019-09/0061.html
  Reported-by: Sebastian Haglund
  
  Closes #4347

- README: add OSS-Fuzz badge [skip ci]
  
  Closes #4380

Michael Kaufmann (18 Sep 2019)
- http: merge two "case" statements

Daniel Stenberg (18 Sep 2019)
- [Zenju brought this change]

  FTP: remove trailing slash from path for LIST/MLSD
  
  Closes #4348

- mime: when disabled, avoid C99 macro
  
  Closes #4368

- url: cleanup dangling DOH request headers too
  
  Follow-up to 9bc44ff64d9081
  
  Credit to OSS-Fuzz
  Bug: https://crbug.com/oss-fuzz/17269
  
  Closes #4372

- [Christoph M. Becker brought this change]

  http2: relax verification of :authority in push promise requests
  
  If the :authority pseudo header field doesn't contain an explicit port,
  we assume it is valid for the default port, instead of rejecting the
  request for all ports.
  
  Ref: https://curl.haxx.se/mail/lib-2019-09/0041.html
  
  Closes #4365

- doh: clean up dangling DOH handles and memory on easy close
  
  If you set the same URL for target as for DoH (and it isn't a DoH
  server), like "https://example.com" in both, the easy handles used for
  the DoH requests could be left "dangling" and end up not getting freed.
  
  Reported-by: Paul Dreik
  Closes #4366

- unit1655: make it C90 compliant
  
  Unclear why this was not detected in the CI.
  
  Follow-up to b7666027296a

- smb: check for full size message before reading message details
  
  To avoid reading of uninitialized data.
  
  Assisted-by: Max Dymond
  Bug: https://crbug.com/oss-fuzz/16907
  Closes #4363

- quiche: persist connection details
  
  ... like we do for other protocols at connect time. This makes "curl -I"
  and other things work.
  
  Reported-by: George Liu
  Fixes #4358
  Closes #4360

- openssl: fix warning with boringssl and SSL_CTX_set_min_proto_version
  
  Follow-up to ffe34b7b59
  Closes #4359

- [Paul Dreik brought this change]

  doh: fix undefined behaviour and open up for gcc and clang optimization
  
  The undefined behaviour is annoying when running fuzzing with
  sanitizers. The codegen is the same, but the meaning is now not up for
  dispute. See https://cppinsights.io/s/516a2ff4
  
  By incrementing the pointer first, both gcc and clang recognize this as
  a bswap and optimizes it to a single instruction.  See
  https://godbolt.org/z/994Zpx
  
  Closes #4350

- [Paul Dreik brought this change]

  doh: fix (harmless) buffer overrun
  
  Added unit test case 1655 to verify.
  Close #4352
  
  the code correctly finds the flaws in the old code,
  if one temporarily restores doh.c to the old version.

Alessandro Ghedini (15 Sep 2019)
- docs: remove trailing ':' from section names in CURLOPT_TRAILER* man

- docs: fix typo in CURLOPT_HTTP_VERSION man

GitHub (14 Sep 2019)
- [Daniel Stenberg brought this change]

  CI: inintial github action job
  
  First shot at a CI build on github actions

Daniel Stenberg (13 Sep 2019)
- appveyor: add a winbuild
  
  Assisted-by: Marcel Raad
  Assisted-by: Jay Satiro
  
  Closes #4324

- FTP: allow "rubbish" prepended to the SIZE response
  
  This is a protocol violation but apparently there are legacy proprietary
  servers doing this.
  
  Added test 336 and 337 to verify.
  
  Reported-by: Philippe Marguinaud
  Closes #4339

- [Zenju brought this change]

  FTP: skip CWD to entry dir when target is absolute
  
  Closes #4332

Kamil Dudka (13 Sep 2019)
- curl: fix memory leaked by parse_metalink()
  
  This commit fixes a regression introduced by curl-7_65_3-5-gb88940850.
  Detected by tests 2005, 2008, 2009, 2010, 2011, and 2012 with valgrind
  and libmetalink enabled.
  
  Closes #4326

Daniel Stenberg (13 Sep 2019)
- parsedate: still provide the name arrays when disabled
  
  If FILE or FTP are enabled, since they also use them!
  
  Reported-by: Roland Hieber
  Fixes #4325
  Closes #4343

- [Gilles Vollant brought this change]

  curl:file2string: load large files much faster
  
  ... by using a more efficient realloc scheme.
  
  Bug: https://curl.haxx.se/mail/lib-2019-09/0045.html
  Closes #4336

- openssl: close_notify on the FTP data connection doesn't mean closure
  
  For FTPS transfers, curl gets close_notify on the data connection
  without that being a signal to close the control connection!
  
  Regression since 3f5da4e59a556fc (7.65.0)
  
  Reported-by: Zenju on github
  Reviewed-by: Jay Satiro
  Fixes #4329
  Closes #4340

- [Jimmy Gaussen brought this change]

  docs/HTTP3: fix `--with-ssl` ngtcp2 configure flag
  
  Closes #4338

- RELEASE-NOTES: synced

- curlver: bump to 7.66.1

- [Zenju brought this change]

  setopt: make it easier to add new enum values
  
  ... by using the *_LAST define names better.
  
  Closes #4321

- asyn-thread: s/AF_LOCAL/AF_UNIX for Solaris
  
  Reported-by: Dagobert Michelsen
  Fixes #4328
  Closes #4333

- [Bernhard Walle brought this change]

  winbuild/MakefileBuild.vc: Add vssh
  
  Without that modification, the Windows build using the makefiles doesn't
  work.
  
  Signed-off-by: Bernhard Walle <bernhard.walle@posteo.eu>
  
  Fixes #4322
  Closes #4323

Bernhard Walle (11 Sep 2019)
- winbuild/MakefileBuild.vc: Fix line endings
  
  The file had mixed line endings.
  
  Signed-off-by: Bernhard Walle <bernhard.walle@posteo.eu>

Jay Satiro (11 Sep 2019)
- ldap: Stop using wide char version of ldapp_err2string
  
  Despite ldapp_err2string being documented by MS as returning a
  PCHAR (char *), when UNICODE it is mapped to ldap_err2stringW and
  returns PWCHAR (wchar_t *).
  
  We have lots of code that expects ldap_err2string to return char *,
  most of it failf used like this:
  
  failf(data, "LDAP local: Some error: %s", ldap_err2string(rc));
  
  Closes https://github.com/curl/curl/pull/4272

Version 7.66.0 (10 Sep 2019)

Daniel Stenberg (10 Sep 2019)
- RELEASE-NOTES: curl 7.66.0

- THANKS: from the 7.66.0 release

5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
  
  The problem can be reproduced as follows:
  
   % curl --reso<TAB>
   % curl -E <TAB>
  
  Bug: https://bugs.debian.org/921452

- zsh.pl: update regex to better match curl -h output
  
  The current regex fails to match '<...>' arguments properly (e.g. those
  with spaces in them), which causes an completion script with wrong
  descriptions for some options.
  
  Here's a diff of the generated completion script, comparing the previous
  version to the one with this fix:
  
  --- /usr/share/zsh/vendor-completions/_curl     2019-01-15 20:47:40.000000000 +0000
  +++ _curl       2019-02-05 20:57:29.453349040 +0000
  @@ -9,48 +9,48 @@
  
   _arguments -C -S \
     --happy-eyeballs-timeout-ms'[How long to wait in milliseconds for IPv6 before trying IPv4]':'<milliseconds>' \
  +  --resolve'[Resolve the host+port to this address]':'<host:port:address[,address]...>' \
     {-c,--cookie-jar}'[Write cookies to <filename> after operation]':'<filename>':_files \
     {-D,--dump-header}'[Write the received headers to <filename>]':'<filename>':_files \
     {-y,--speed-time}'[Trigger '\''speed-limit'\'' abort after this time]':'<seconds>' \
     --proxy-cacert'[CA certificate to verify peer against for proxy]':'<file>':_files \
  -  --tls13-ciphers'[of TLS 1.3 ciphersuites> TLS 1.3 cipher suites to use]':'<list' \
  +  --tls13-ciphers'[TLS 1.3 cipher suites to use]':'<list of TLS 1.3 ciphersuites>' \
     {-E,--cert}'[Client certificate file and password]':'<certificate[:password]>' \
     --libcurl'[Dump libcurl equivalent code of this command line]':'<file>':_files \
     --proxy-capath'[CA directory to verify peer against for proxy]':'<dir>':_files \
  -  --proxy-negotiate'[HTTP Negotiate (SPNEGO) authentication on the proxy]':'Use' \
     --proxy-pinnedpubkey'[FILE/HASHES public key to verify proxy with]':'<hashes>' \
     --crlfile'[Get a CRL list in PEM format from the given file]':'<file>':_files \
  -  --proxy-insecure'[HTTPS proxy connections without verifying the proxy]':'Do' \
  -  --proxy-ssl-allow-beast'[security flaw for interop for HTTPS proxy]':'Allow' \
  +  --proxy-negotiate'[Use HTTP Negotiate (SPNEGO) authentication on the proxy]' \
     --abstract-unix-socket'[Connect via abstract Unix domain socket]':'<path>' \
     --pinnedpubkey'[FILE/HASHES Public key to verify peer against]':'<hashes>' \
  +  --proxy-insecure'[Do HTTPS proxy connections without verifying the proxy]' \
     --proxy-pass'[Pass phrase for the private key for HTTPS proxy]':'<phrase>' \
  +  --proxy-ssl-allow-beast'[Allow security flaw for interop for HTTPS proxy]' \
     {-p,--proxytunnel}'[Operate through an HTTP proxy tunnel (using CONNECT)]' \
     --socks5-hostname'[SOCKS5 proxy, pass host name to proxy]':'<host[:port]>' \
     --proto-default'[Use PROTOCOL for any URL missing a scheme]':'<protocol>' \
  -  --proxy-tls13-ciphers'[list> TLS 1.3 proxy cipher suites]':'<ciphersuite' \
  +  --proxy-tls13-ciphers'[TLS 1.3 proxy cipher suites]':'<ciphersuite list>' \
     --socks5-gssapi-service'[SOCKS5 proxy service name for GSS-API]':'<name>' \
     --ftp-alternative-to-user'[String to replace USER \[name\]]':'<command>' \
  -  --ftp-ssl-control'[SSL/TLS for FTP login, clear for transfer]':'Require' \
     {-T,--upload-file}'[Transfer local FILE to destination]':'<file>':_files \
     --local-port'[Force use of RANGE for local port numbers]':'<num/range>' \
     --proxy-tlsauthtype'[TLS authentication type for HTTPS proxy]':'<type>' \
     {-R,--remote-time}'[Set the remote file'\''s time on the local output]' \
  -  --retry-connrefused'[on connection refused (use with --retry)]':'Retry' \
  -  --suppress-connect-headers'[proxy CONNECT response headers]':'Suppress' \
  -  {-j,--junk-session-cookies}'[session cookies read from file]':'Ignore' \
  -  --location-trusted'[--location, and send auth to other hosts]':'Like' \
  +  --ftp-ssl-control'[Require SSL/TLS for FTP login, clear for transfer]' \
     --proxy-cert-type'[Client certificate type for HTTPS proxy]':'<type>' \
     {-O,--remote-name}'[Write output to a file named as the remote file]' \
  +  --retry-connrefused'[Retry on connection refused (use with --retry)]' \
  +  --suppress-connect-headers'[Suppress proxy CONNECT response headers]' \
     --trace-ascii'[Like --trace, but without hex output]':'<file>':_files \
     --connect-timeout'[Maximum time allowed for connection]':'<seconds>' \
     --expect100-timeout'[How long to wait for 100-continue]':'<seconds>' \
     {-g,--globoff}'[Disable URL sequences and ranges using {} and \[\]]' \
  +  {-j,--junk-session-cookies}'[Ignore session cookies read from file]' \
     {-m,--max-time}'[Maximum time allowed for the transfer]':'<seconds>' \
     --dns-ipv4-addr'[IPv4 address to use for DNS requests]':'<address>' \
     --dns-ipv6-addr'[IPv6 address to use for DNS requests]':'<address>' \
  -  --ignore-content-length'[the size of the remote resource]':'Ignore' \
     {-k,--insecure}'[Allow insecure server connections when using SSL]' \
  +  --location-trusted'[Like --location, and send auth to other hosts]' \
     --mail-auth'[Originator address of the original email]':'<address>' \
     --noproxy'[List of hosts which do not use proxy]':'<no-proxy-list>' \
     --proto-redir'[Enable/disable PROTOCOLS on redirect]':'<protocols>' \
  @@ -62,18 +62,19 @@
     --socks5-basic'[Enable username/password auth for SOCKS5 proxies]' \
     --cacert'[CA certificate to verify peer against]':'<file>':_files \
     {-H,--header}'[Pass custom header(s) to server]':'<header/@file>' \
  +  --ignore-content-length'[Ignore the size of the remote resource]' \
     {-i,--include}'[Include protocol response headers in the output]' \
     --proxy-header'[Pass custom header(s) to proxy]':'<header/@file>' \
     --unix-socket'[Connect through this Unix domain socket]':'<path>' \
     {-w,--write-out}'[Use output FORMAT after completion]':'<format>' \
  -  --http2-prior-knowledge'[HTTP 2 without HTTP/1.1 Upgrade]':'Use' \
     {-o,--output}'[Write to file instead of stdout]':'<file>':_files \
  -  {-J,--remote-header-name}'[the header-provided filename]':'Use' \
  +  --preproxy'[\[protocol://\]host\[:port\] Use this proxy first]' \
     --socks4a'[SOCKS4a proxy on given host + port]':'<host[:port]>' \
     {-Y,--speed-limit}'[Stop transfers slower than this]':'<speed>' \
     {-z,--time-cond}'[Transfer based on a time condition]':'<time>' \
     --capath'[CA directory to verify peer against]':'<dir>':_files \
     {-f,--fail}'[Fail silently (no output at all) on HTTP errors]' \
  +  --http2-prior-knowledge'[Use HTTP 2 without HTTP/1.1 Upgrade]' \
     --proxy-tlspassword'[TLS password for HTTPS proxy]':'<string>' \
     {-U,--proxy-user}'[Proxy user and password]':'<user:password>' \
     --proxy1.0'[Use HTTP/1.0 proxy on given port]':'<host[:port]>' \
  @@ -81,52 +82,49 @@
     {-A,--user-agent}'[Send User-Agent <name> to server]':'<name>' \
     --egd-file'[EGD socket path for random data]':'<file>':_files \
     --fail-early'[Fail on first transfer error, do not continue]' \
  -  --haproxy-protocol'[HAProxy PROXY protocol v1 header]':'Send' \
  -  --preproxy'[Use this proxy first]':'[protocol://]host[:port]' \
  +  {-J,--remote-header-name}'[Use the header-provided filename]' \
     --retry-max-time'[Retry only within this period]':'<seconds>' \
     --socks4'[SOCKS4 proxy on given host + port]':'<host[:port]>' \
     --socks5'[SOCKS5 proxy on given host + port]':'<host[:port]>' \
  -  --socks5-gssapi-nec'[with NEC SOCKS5 server]':'Compatibility' \
  -  --ssl-allow-beast'[security flaw to improve interop]':'Allow' \
     --cert-status'[Verify the status of the server certificate]' \
  -  --ftp-create-dirs'[the remote dirs if not present]':'Create' \
     {-:,--next}'[Make next URL use its separate set of options]' \
     --proxy-key-type'[Private key file type for proxy]':'<type>' \
  -  --remote-name-all'[the remote file name for all URLs]':'Use' \
     {-X,--request}'[Specify request command to use]':'<command>' \
     --retry'[Retry request if transient problems occur]':'<num>' \
  -  --ssl-no-revoke'[cert revocation checks (WinSSL)]':'Disable' \
     --cert-type'[Certificate file type (DER/PEM/ENG)]':'<type>' \
     --connect-to'[Connect to host]':'<HOST1:PORT1:HOST2:PORT2>' \
     --create-dirs'[Create necessary local directory hierarchy]' \
  +  --haproxy-protocol'[Send HAProxy PROXY protocol v1 header]' \
     --max-redirs'[Maximum number of redirects allowed]':'<num>' \
     {-n,--netrc}'[Must read .netrc for user name and password]' \
  +  {-x,--proxy}'[\[protocol://\]host\[:port\] Use this proxy]' \
     --proxy-crlfile'[Set a CRL list for proxy]':'<file>':_files \
     --sasl-ir'[Enable initial response in SASL authentication]' \
  -  --socks5-gssapi'[GSS-API auth for SOCKS5 proxies]':'Enable' \
  +  --socks5-gssapi-nec'[Compatibility with NEC SOCKS5 server]' \
  +  --ssl-allow-beast'[Allow security flaw to improve interop]' \
  +  --ftp-create-dirs'[Create the remote dirs if not present]' \
     --interface'[Use network INTERFACE (or address)]':'<name>' \
     --key-type'[Private key file type (DER/PEM/ENG)]':'<type>' \
     --netrc-file'[Specify FILE for netrc]':'<filename>':_files \
     {-N,--no-buffer}'[Disable buffering of the output stream]' \
     --proxy-service-name'[SPNEGO proxy service name]':'<name>' \
  -  --styled-output'[styled output for HTTP headers]':'Enable' \
  +  --remote-name-all'[Use the remote file name for all URLs]' \
  +  --ssl-no-revoke'[Disable cert revocation checks (WinSSL)]' \
     --max-filesize'[Maximum file size to download]':'<bytes>' \
     --negotiate'[Use HTTP Negotiate (SPNEGO) authentication]' \
     --no-keepalive'[Disable TCP keepalive on the connection]' \
     {-#,--progress-bar}'[Display transfer progress as a bar]' \
  -  {-x,--proxy}'[Use this proxy]':'[protocol://]host[:port]' \
  -  --proxy-anyauth'[any proxy authentication method]':'Pick' \
     {-Q,--quote}'[Send command(s) to server before transfer]' \
  -  --request-target'[the target for this request]':'Specify' \
  +  --socks5-gssapi'[Enable GSS-API auth for SOCKS5 proxies]' \
     {-u,--user}'[Server user and password]':'<user:password>' \
     {-K,--config}'[Read config from a file]':'<file>':_files \
     {-C,--continue-at}'[Resumed transfer offset]':'<offset>' \
     --data-raw'[HTTP POST data, '\''@'\'' allowed]':'<data>' \
  -  --disallow-username-in-url'[username in url]':'Disallow' \
     --krb'[Enable Kerberos with security <level>]':'<level>' \
     --proxy-ciphers'[SSL ciphers to use for proxy]':'<list>' \
     --proxy-digest'[Use Digest authentication on the proxy]' \
     --proxy-tlsuser'[TLS username for HTTPS proxy]':'<name>' \
  +  --styled-output'[Enable styled output for HTTP headers]' \
     {-b,--cookie}'[Send cookies from string/file]':'<data>' \
     --data-urlencode'[HTTP POST data url encoded]':'<data>' \
     --delegation'[GSS-API delegation permission]':'<LEVEL>' \
  @@ -134,7 +132,10 @@
     --post301'[Do not switch to GET after following a 301]' \
     --post302'[Do not switch to GET after following a 302]' \
     --post303'[Do not switch to GET after following a 303]' \
  +  --proxy-anyauth'[Pick any proxy authentication method]' \
  +  --request-target'[Specify the target for this request]' \
     --trace-time'[Add time stamps to trace/verbose output]' \
  +  --disallow-username-in-url'[Disallow username in url]' \
     --dns-servers'[DNS server addrs to use]':'<addresses>' \
     {-G,--get}'[Put the post data in the URL and use GET]' \
     --limit-rate'[Limit transfer speed to RATE]':'<speed>' \
  @@ -148,21 +149,21 @@
     --metalink'[Process given URLs as metalink XML file]' \
     --tr-encoding'[Request compressed transfer encoding]' \
     --xattr'[Store metadata in extended file attributes]' \
  -  --ftp-skip-pasv-ip'[the IP address for PASV]':'Skip' \
     --pass'[Pass phrase for the private key]':'<phrase>' \
     --proxy-ntlm'[Use NTLM authentication on the proxy]' \
     {-S,--show-error}'[Show error even when -s is used]' \
  -  --ciphers'[of ciphers> SSL ciphers to use]':'<list' \
  +  --ciphers'[SSL ciphers to use]':'<list of ciphers>' \
     --form-string'[Specify multipart MIME data]':'<name=string>' \
     --login-options'[Server login options]':'<options>' \
     --tftp-blksize'[Set TFTP BLKSIZE option]':'<value>' \
  -  --tftp-no-options'[not send any TFTP options]':'Do' \
     {-v,--verbose}'[Make the operation more talkative]' \
  +  --ftp-skip-pasv-ip'[Skip the IP address for PASV]' \
     --proxy-key'[Private key for HTTPS proxy]':'<key>' \
     {-F,--form}'[Specify multipart MIME data]':'<name=content>' \
     --mail-from'[Mail from this address]':'<address>' \
     --oauth2-bearer'[OAuth 2 Bearer Token]':'<token>' \
     --proto'[Enable/disable PROTOCOLS]':'<protocols>' \
  +  --tftp-no-options'[Do not send any TFTP options]' \
     --tlsauthtype'[TLS authentication type]':'<type>' \
     --doh-url'[Resolve host names over DOH]':'<URL>' \
     --no-sessionid'[Disable SSL session-ID reusing]' \
  @@ -173,14 +174,13 @@
     --ftp-ssl-ccc'[Send CCC after authenticating]' \
     {-4,--ipv4}'[Resolve names to IPv4 addresses]' \
     {-6,--ipv6}'[Resolve names to IPv6 addresses]' \
  -  --netrc-optional'[either .netrc or URL]':'Use' \
     --service-name'[SPNEGO service name]':'<name>' \
     {-V,--version}'[Show version number and quit]' \
     --data-ascii'[HTTP POST ASCII data]':'<data>' \
     --ftp-account'[Account data string]':'<data>' \
  -  --compressed-ssh'[SSH compression]':'Enable' \
     --disable-eprt'[Inhibit using EPRT or LPRT]' \
     --ftp-method'[Control CWD usage]':'<method>' \
  +  --netrc-optional'[Use either .netrc or URL]' \
     --pubkey'[SSH Public key file name]':'<key>' \
     --raw'[Do HTTP "raw"; no transfer decoding]' \
     --anyauth'[Pick any authentication method]' \
  @@ -189,6 +189,7 @@
     --no-alpn'[Disable the ALPN TLS extension]' \
     --tcp-nodelay'[Use the TCP_NODELAY option]' \
     {-B,--use-ascii}'[Use ASCII/text transfer]' \
  +  --compressed-ssh'[Enable SSH compression]' \
     --digest'[Use HTTP Digest Authentication]' \
     --proxy-tlsv1'[Use TLSv1 for HTTPS proxy]' \
     --engine'[Crypto engine to use]':'<name>' \

Marcel Raad (7 Feb 2019)
- tool_operate: fix typecheck warning
  
  Use long for CURLOPT_HTTP09_ALLOWED to fix the following warning:
  tool_operate.c: In function 'operate_do':
  ../include/curl/typecheck-gcc.h:47:9: error: call to
  '_curl_easy_setopt_err_long' declared with attribute warning:
  curl_easy_setopt expects a long argument for this option [-Werror]
  
  Closes https://github.com/curl/curl/pull/3534

Jay Satiro (6 Feb 2019)
- [Chris Araman brought this change]

  url: close TLS before removing conn from cache
  
  - Fix potential crashes in schannel shutdown.
  
  Ensure any TLS shutdown messages are sent before removing the
  association between the connection and the easy handle. Reverts
  @bagder's previous partial fix for #3412.
  
  Fixes https://github.com/curl/curl/issues/3412
  Fixes https://github.com/curl/curl/issues/3505
  Closes https://github.com/curl/curl/pull/3531

Daniel Gustafsson (6 Feb 2019)
- INTERNALS.md: fix subsection depth and link
  
  The Kerberos subsection was mistakenly a subsubsection under FTP, and
  the curlx subsection was missing an anchor for the TOC link.
  
  Closes #3529
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Version 7.64.0 (6 Feb 2019)

Daniel Stenberg (6 Feb 2019)
- RELEASE-NOTES: 7.64.0

- RELEASE-PROCEDURE: update the release calendar

- THANKS: 7.64.0 status

Daniel Gustafsson (5 Feb 2019)
- ROADMAP: remove already performed item
  
  Commit 7a09b52c98ac8d840a8a9907b1a1d9a9e684bcf5 introduced support
  for the draft-ietf-httpbis-cookie-alone-01 cookie draft, and while
  the entry was removed from the TODO it was mistakenly left here.
  Fix by removing and rewording the entry slightly.
  
  Closes #3530
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

- [Etienne Simard brought this change]

  CONTRIBUTE.md: Fix grammatical errors
  
  Fix grammatical errors making the document read better. Also fixes
  a typo.
  
  Closes #3525
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>

Daniel Stenberg (4 Feb 2019)
- [Julian Z brought this change]

  docs: use $(INSTALL_DATA) to install man page
  
  Fixes #3518
  Closes #3522

Jay Satiro (4 Feb 2019)
- [Ladar Levison brought this change]

  runtests.pl: Fix perl call to include srcdir
  
  - Use explicit include opt for perl calls.
  
  Prior to this change some scripts couldn't find their dependencies.
  
  At the top, perl is called using with the "-Isrcdir" option, and it
  works:
  
  https://github.com/curl/curl/blob/curl-7_63_0/tests/runtests.pl#L183
  
  But on line 3868, that option is omitted. This caused problems for me,
  as the symbol-scan.pl script in particular couldn't find its
  dependencies properly:
  
  https://github.com/curl/curl/blob/curl-7_63_0/tests/runtests.pl#L3868
  
  This patch fixes that oversight by making calls to perl sub-shells
  uniform.
  
  Closes https://github.com/curl/curl/pull/3496

Daniel Stenberg (4 Feb 2019)
- [Daniel Gustafsson brought this change]

  smtp: avoid risk of buffer overflow in strtol
  
  If the incoming len 5, but the buffer does not have a termination
  after 5 bytes, the strtol() call may keep reading through the line
  buffer until is exceeds its boundary. Fix by ensuring that we are
  using a bounded read with a temporary buffer on the stack.
  
  Bug: https://curl.haxx.se/docs/CVE-2019-3823.html
  Reported-by: Brian Carpenter (Geeknik Labs)
  CVE-2019-3823

- ntlm: fix *_type3_message size check to avoid buffer overflow
  
  Bug: https://curl.haxx.se/docs/CVE-2019-3822.html
  Reported-by: Wenxiang Qian
  CVE-2019-3822

- NTLM: fix size check condition for type2 received data
  
  Bug: https://curl.haxx.se/docs/CVE-2018-16890.html
  Reported-by: Wenxiang Qian
  CVE-2018-16890

Marcel Raad (1 Feb 2019)
- [Giorgos Oikonomou brought this change]

  spnego_sspi: add support for channel binding
  
  Attempt to add support for Secure Channel binding when negotiate
  authentication is used. The problem to solve is that by default IIS
  accepts channel binding and curl doesn't utilise them. The result was a
  401 response. Scope affects only the Schannel(winssl)-SSPI combination.
  
  Fixes https://github.com/curl/curl/issues/3503
  Closes https://github.com/curl/curl/pull/3509

Daniel Stenberg (1 Feb 2019)
- RELEASE-NOTES: synced

- schannel: stop calling it "winssl"
  
  Stick to "Schannel" everywhere. The configure option --with-winssl is
  kept to allow existing builds to work but --with-schannel is added as an
  alias.
  
  Closes #3504

- multi: set the EXPIRE_*TIMEOUT timers at TIMER_STARTSINGLE time
  
  To make sure Curl_timeleft() also thinks the timeout has been reached
  when one of the EXPIRE_*TIMEOUTs expires.
  
  Bug: https://curl.haxx.se/mail/lib-2019-01/0073.html
  Reported-by: Zhao Yisha
  Closes #3501

- [John Marshall brought this change]

  doc: use meaningless port number in CURLOPT_LOCALPORT example
  
  Use an ephemeral port number here; previously the example had 8080
  which could be confusing as the common web server port number might
  be misinterpreted as suggesting this option affects the remote port.
  
  URL: https://curl.haxx.se/mail/lib-2019-01/0084.html
  Closes #3513

GitHub (29 Jan 2019)
- [Gisle Vanem brought this change]

  Escape the '\'
  
  A backslash should be escaped in Roff / Troff.

Jay Satiro (29 Jan 2019)
- TODO: WinSSL: 'Add option to disable client cert auto-send'
  
  By default WinSSL selects and send a client certificate automatically,
  but for privacy and consistency we should offer an option to disable the
  default auto-send behavior.
  
  Reported-by: Jeroen Ooms
  
  Closes https://github.com/curl/curl/issues/2262

Daniel Stenberg (28 Jan 2019)
- [Jeremie Rapin brought this change]

  sigpipe: if mbedTLS is used, ignore SIGPIPE
  
  mbedTLS doesn't have a sigpipe management. If a write/read occurs when
  the remote closes the socket, the signal is raised and kills the
  application.  Use the curl mecanisms fix this behavior.
  
  Signed-off-by: Jeremie Rapin <j.rapin@overkiz.com>
  
  Closes #3502

- unit1653: make it survive torture tests

Jay Satiro (28 Jan 2019)
- [Michael Kujawa brought this change]

  timeval: Disable MSVC Analyzer GetTickCount warning
  
  Compiling with msvc /analyze and a recent Windows SDK warns against
  using GetTickCount (Suggests to use GetTickCount64 instead.)
  
  Since GetTickCount is only being used when GetTickCount64 isn't
  available, I am disabling that warning.
  
  Fixes https://github.com/curl/curl/issues/3437
  Closes https://github.com/curl/curl/pull/3440

Daniel Stenberg (26 Jan 2019)
- configure: rewrite --enable-code-coverage
  
  The previously used ax_code_coverage.m4 is not license compatible and
  must not be used.
  
  Reported-by: William A. Rowe Jr
  Fixes #3497
  Closes #3499

- [Felix Hädicke brought this change]

  setopt: enable CURLOPT_SSH_KNOWNHOSTS and CURLOPT_SSH_KEYFUNCTION for libssh
  
  CURLOPT_SSH_KNOWNHOSTS and CURLOPT_SSH_KEYFUNCTION are supported for
  libssh as well. So accepting these options only when compiling with
  libssh2 is wrong here.
  
  Fixes #3493
  Closes #3494

- [Felix Hädicke brought this change]

  libssh: do not let libssh create socket
  
  By default, libssh creates a new socket, instead of using the socket
  created by curl for SSH connections.
  
  Pass the socket created by curl to libssh using ssh_options_set() with
  SSH_OPTIONS_FD directly after ssh_new(). So libssh uses our socket
  instead of creating a new one.
  
  This approach is very similar to what is done in the libssh2 code, where
  the socket created by curl is passed to libssh2 when
  libssh2_session_startup() is called.
  
  Fixes #3491
  Closes #3495

- RELEASE-NOTES: synced

- [Archangel_SDY brought this change]

  schannel: preserve original certificate path parameter
  
  Fixes #3480
  Closes #3487

- KNOWN_BUGS: tests not compatible with python3
  
  Closes #3289
  [skip ci]

Daniel Gustafsson (20 Jan 2019)
- memcmp: avoid doing single char memcmp
  
  There is no real gain in performing memcmp() comparisons on single
  characters, so change these to array subscript inspections which
  saves a call and makes the code clearer.
  
  Closes #3486
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  Reviewed-by: Jay Satiro <raysatiro@yahoo.com>

Daniel Stenberg (19 Jan 2019)
- COPYING: it's 2019
  
  [skip ci]

- [hhb brought this change]

  configure: fix recv/send/select detection on Android
  
  This reverts commit d4f25201fb7da03fc88f90d51101beb3d0026db9.
  
  The overloadable attribute is removed again starting from
  NDK17. Actually they only exist in two NDK versions (15 and 16). With
  overloadable, the first condition tried will succeed. Results in wrong
  detection result.
  
  Closes #3484

Marcel Raad (19 Jan 2019)
- [Giorgos Oikonomou brought this change]

  ntlm_sspi: add support for channel binding
  
  Windows extended potection (aka ssl channel binding) is required
  to login to ntlm IIS endpoint, otherwise the server returns 401
  responses.
  
  Fixes #3280
  Closes #3321

Daniel Stenberg (18 Jan 2019)
- schannel: on connection close there might not be a transfer
  
  Reported-by: Marcel Raad
  Fixes #3412
  Closes #3483

- [Joel Depooter brought this change]

  ssh: log the libssh2 error message when ssh session startup fails
  
  When a ssh session startup fails, it is useful to know why it has
  failed. This commit changes the message from:
     "Failure establishing ssh session"
  to something like this, for example:
     "Failure establishing ssh session: -5, Unable to exchange encryption keys"
  
  Closes #3481

Alessandro Ghedini (16 Jan 2019)
- Fix typo in manpage

Daniel Stenberg (16 Jan 2019)
- RELEASE-NOTES: synced

Sergei Nikulov (16 Jan 2019)
- cmake: updated check for HAVE_POLL_FINE to match autotools

Daniel Stenberg (16 Jan 2019)
- curl-compilers.m4: check for __ibmxl__ to detect xlclang
  
  Follow-up to 2fa0d57e2e3. The __xlc__ symbol is only defined there if a
  particular flag is used for legacy macros.
  
  Fixes #3474
  Closes #3479

- openssl: fix the SSL_get_tlsext_status_ocsp_resp call
  
  .... to not pass in a const in the second argument as that's not how it
  is supposed to be used and might cause compiler warnings.
  
  Reported-by: Pavel Pavlov
  Fixes #3477
  Closes #3478

- curl-compilers.m4: detect xlclang
  
  Since it isn't totally clang compatible, we detect this IBM clang
  front-end and if detected, avoids some clang specific magic.
  
  Reported-by: Kees Dekker
  Fixes #3474
  Closes #3476

- README: add codacy code quality badge
  
  [skip ci]

- extract_if_dead: follow-up to 54b201b48c90a
  
  extract_if_dead() dead is called from two functions, and only one of
  them should get conn->data updated and now neither call path clears it.
  
  scan-build found a case where conn->data would be NULL dereferenced in
  ConnectionExists() otherwise.
  
  Closes #3473

- multi: remove "Dead assignment"
  
  Found by scan-build. Follow-up to 4c35574bb785ce.
  
  Closes #3471

- tests: move objnames-* from lib into tests
  
  Since they're used purely for testing purposes, I think they should
  rather be stored there.
  
  Closes #3470

Sergei Nikulov (15 Jan 2019)
- travis: added cmake build for osx

Daniel Stenberg (14 Jan 2019)
- [Frank Gevaerts brought this change]

  cookie: fix comment typo (url_path_len -> uri_path_len)
  
  Closes #3469

Marcel Raad (14 Jan 2019)
- winbuild: conditionally use /DZLIB_WINAPI
  
  zlibwapi.lib (dynamic library) and zlibstat.lib (static library) have
  the ZLIB_WINAPI define set by default. Using them requires that define
  too.
  
  Ref: https://zlib.net/DLL_FAQ.txt
  
  Fixes https://github.com/curl/curl/issues/3133
  Closes https://github.com/curl/curl/pull/3460

Daniel Stenberg (14 Jan 2019)
- src/Makefile: make 'tidy' target work for metalink builds

- extract_if_dead: use a known working transfer when checking connections
  
  Make sure that this function sets a proper "live" transfer for the
  connection before calling the protocol-specific connection check
  function, and then clear it again afterward as a non-used connection has
  no current transfer.
  
  Reported-by: Jeroen Ooms
  Reviewed-by: Marcel Raad
  Reviewed-by: Daniel Gustafsson
  Fixes #3463
  Closes #3464

- openssl: adapt to 3.0.0, OpenSSL_version_num() is deprecated
  
  OpenSSL_version() replaces OpenSSL_version_num()
  
  Closes #3462

Sergei Nikulov (11 Jan 2019)
- cmake: added checks for HAVE_VARIADIC_MACROS_C99 and HAVE_VARIADIC_MACROS_GCC

Daniel Stenberg (11 Jan 2019)
- urldata: rename easy_conn to just conn
  
  We use "conn" everywhere to be a pointer to the connection.
  
  Introduces two functions that "attaches" and "detaches" the connection
  to and from the transfer.
  
  Going forward, we should favour using "data->conn" (since a transfer
  always only has a single connection or none at all) to "conn->data"
  (since a connection can have none, one or many transfers associated with
  it and updating conn->data to be correct is error prone and a frequent
  reason for internal issues).
  
  Closes #3442

- tool_cb_prg: avoid integer overflow
  
  When calculating the progress bar width.
  
  Reported-by: Peng Li
  Fixes #3456
  Closes #3458

Daniel Gustafsson (11 Jan 2019)
- travis: turn off copyright year checks in checksrc
  
  Invoking the maintainer intended COPYRIGHTYEAR check for everyone
  in the PR pipeline is too invasive, especially at the turn of the
  year when many files get affected. Remove and leave it as a tool
  for maintainers to verify patches before commits.
  
  This reverts f7bdf4b2e1d81b2652b81b9b3029927589273b41.
  
  After discussion with: Daniel Stenberg

Daniel Stenberg (10 Jan 2019)
- KNOWN_BUGS: cmake makes unusable tool_hugehelp.c with MinGW
  
  Closes #3125

- KNOWN_BUGS: Improve --data-urlencode space encoding
  
  Closes #3229

Patrick Monnerat (10 Jan 2019)
- os400: add a missing closing bracket
  
  See https://github.com/curl/curl/issues/3453#issuecomment-453054458
  
  Reported-by: jonrumsey on github

- os400: fix extra parameter syntax error.
  
  Reported-by: jonrumsey on github
  Closes #3453

Daniel Stenberg (10 Jan 2019)
- test1558: verify CURLINFO_PROTOCOL on file:// transfer
  
  Attempt to reproduce issue #3444.
  
  Closes #3447

- RELEASE-NOTES: synced

- xattr: strip credentials from any URL that is stored
  
  Both user and password are cleared uncondtitionally.
  
  Added unit test 1621 to verify.
  
  Fixes #3423
  Closes #3433

- cookies: allow secure override when done over HTTPS
  
  Added test 1562 to verify.
  
  Reported-by: Jeroen Ooms
  Fixes #3445
  Closes #3450

- multi: multiplexing improvements
  
  Fixes #3436
  Closes #3448
  
   Problem 1
  
  After LOTS of scratching my head, I eventually realized that even when doing
  10 uploads in parallel, sometimes the socket callback to the application that
  tells it what to wait for on the socket, looked like it would reflect the
  status of just the single transfer that just changed state.
  
  Digging into the code revealed that this was indeed the truth. When multiple
  transfers are using the same connection, the application did not correctly get
  the *combined* flags for all transfers which then could make it switch to READ
  (only) when in fact most transfers wanted to get told when the socket was
  WRITEABLE.
  
   Problem 1b
  
  A separate but related regression had also been introduced by me when I
  cleared connection/transfer association better a while ago, as now the logic
  couldn't find the connection and see if that was marked as used by more
  transfers and then it would also prematurely remove the socket from the socket
  hash table even in times other transfers were still using it!
  
   Fix 1
  
  Make sure that each socket stored in the socket hash has a "combined" action
  field of what to ask the application to wait for, that is potentially the ORed
  action of multiple parallel transfers. And remove that socket hash entry only
  if there are no transfers left using it.
  
   Problem 2
  
  The socket hash entry stored an association to a single transfer using that
  socket - and when curl_multi_socket_action() was called to tell libcurl about
  activities on that specific socket only that transfer was "handled".
  
  This was WRONG, as a single socket/connection can be used by numerous parallel
  transfers and not necessarily a single one.
  
   Fix 2
  
  We now store a list of handles in the socket hashtable entry and when libcurl
  is told there's traffic for a particular socket, it now iterates over all
  known transfers using that single socket.

- test1561: improve test name
  
  [skip ci]

- [Katsuhiko YOSHIDA brought this change]

  cookies: skip custom cookies when redirecting cross-site
  
  Closes #3417

- THANKS: fixups and a dedupe
  
  [skip ci]

- timediff: fix math for unsigned time_t
  
  Bug: https://curl.haxx.se/mail/lib-2018-12/0088.html
  
  Closes #3449

- [Bernhard M. Wiedemann brought this change]

  tests: allow tests to pass by 2037-02-12
  
  similar to commit f508d29f3902104018
  
  Closes #3443

- RELEASE-NOTES: synced

- [Brad Spencer brought this change]

  curl_multi_remove_handle() don't block terminating c-ares requests
  
  Added Curl_resolver_kill() for all three resolver modes, which only
  blocks when necessary, along with test 1592 to confirm
  curl_multi_remove_handle() doesn't block unless it must.
  
  Closes #3428
  Fixes #3371

- Revert "http_negotiate: do not close connection until negotiation is completed"
  
  This reverts commit 07ebaf837843124ee670e5b8c218b80b92e06e47.
  
  This also reopens PR #3275 which brought the change now reverted.
  
  Fixes #3384
  Closes #3439

- curl/urlapi.h: include "curl.h" first
  
  This allows programs to include curl/urlapi.h directly.
  
  Reviewed-by: Daniel Gustafsson
  Reported-by: Ben Kohler
  Fixes #3438
  Closes #3441

Marcel Raad (6 Jan 2019)
- VS projects: fix build warning
  
  Starting with Visual Studio 2017 Update 9, Visual Studio doesn't like
  the MinimalRebuild option anymore and warns:
  
  cl : Command line warning D9035: option 'Gm' has been deprecated and
  will be removed in a future release
  
  The option can be safely removed so that the default is used.
  
  Closes https://github.com/curl/curl/pull/3425

- schannel: fix compiler warning
  
  When building with Unicode on MSVC, the compiler warns about freeing a
  pointer to const in Curl_unicodefree. Fix this by declaring it as
  non-const and casting the argument to Curl_convert_UTF8_to_tchar to
  non-const too, like we do in all other places.
  
  Closes https://github.com/curl/curl/pull/3435

Daniel Stenberg (4 Jan 2019)
- [Rikard Falkeborn brought this change]

  printf: introduce CURL_FORMAT_TIMEDIFF_T

- [Rikard Falkeborn brought this change]

  printf: fix format specifiers
  
  Closes #3426

- libtest/stub_gssapi: use "real" snprintf
  
  ... since it doesn't link with libcurl.
  
  Reverts the commit dcd6f81025 changes from this file.
  
  Bug: https://curl.haxx.se/mail/lib-2019-01/0000.html
  Reported-by: Shlomi Fish
  Reviewed-by: Daniel Gustafsson
  Reviewed-by: Kamil Dudka
  
  Closes #3434

- INTERNALS: correct some outdated function names
  
  Closes #3431

- docs/version.d: mention MultiSSL
  
  Reviewed-by: Daniel Gustafsson
  Closes #3432

Daniel Gustafsson (2 Jan 2019)
- [Rikard Falkeborn brought this change]

  examples: Update .gitignore
  
  Add a few missing examples to make `make examples` not leave the
  workspace in a dirty state.
  
  Closes #3427
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>

- THANKS: add more missing names
  
  Add Adrian Burcea who made the artwork for the curl://up 2018 event
  which was held in Stockholm, Sweden.

- docs: mention potential leak in curl_slist_append
  
  When a non-empty list is appended to, and used as the returnvalue,
  the list pointer can leak in case of an allocation failure in the
  curl_slist_append() call. This is correctly handled in curl code
  usage but we weren't explicitly pointing it out in the API call
  documentation. Fix by extending the RETURNVALUE manpage section
  and example code.
  
  Closes #3424
  Reported-by: dnivras on github
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Marcel Raad (1 Jan 2019)
- tvnow: silence conversion warnings
  
  MinGW-w64 defaults to targeting Windows 7 now, so GetTickCount64 is
  used and the milliseconds are represented as unsigned long long,
  leading to a compiler warning when implicitly converting them to long.

Daniel Stenberg (1 Jan 2019)
- THANKS: dedupe more names
  
  Researched-by: Tae Wong

Marcel Raad (1 Jan 2019)
- [Markus Moeller brought this change]

  ntlm: update selection of type 3 response
  
  NTLM2 did not work i.e. no NTLMv2 response was created. Changing the
  check seems to work.
  
  Ref: https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-NLMP/[MS-NLMP].pdf
  
  Fixes https://github.com/curl/curl/issues/3286
  Closes https://github.com/curl/curl/pull/3287
  Closes https://github.com/curl/curl/pull/3415

Daniel Stenberg (31 Dec 2018)
- THANKS: added missing names from year <= 2000
  
  Due to a report of a missing name in THANKS I manually went through an
  old CHANGES.0 file and added many previously missing names here.

Daniel Gustafsson (30 Dec 2018)
- urlapi: fix parsing ipv6 with zone index
  
  The previous fix for parsing IPv6 URLs with a zone index was a paddle
  short for URLs without an explicit port. This patch fixes that case
  and adds a unit test case.
  
  This bug was highlighted by issue #3408, and while it's not the full
  fix for the problem there it is an isolated bug that should be fixed
  regardless.
  
  Closes #3411
  Reported-by: GitYuanQu on github
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (30 Dec 2018)
- THANKS: dedupe Guenter Knauf
  
  Reported-by: Tae Wong

- THANKS: missing name from the 6.3.1 release!

Daniel Gustafsson (27 Dec 2018)
- RELEASE-NOTES: synced

- [Claes Jakobsson brought this change]

  hostip: support wildcard hosts
  
  This adds support for wildcard hosts in CURLOPT_RESOLVE. These are
  try-last so any non-wildcard entry is resolved first. If specified,
  any host not matched by another CURLOPT_RESOLVE config will use this
  as fallback.
  
  Example send a.com to 10.0.0.1 and everything else to 10.0.0.2:
    curl --resolve *:443:10.0.0.2 --resolve a.com:443:10.0.0.1 \
         https://a.com https://b.com
  
  This is probably quite similar to using:
    --connect-to a.com:443:10.0.0.1:443 --connect-to :443:10.0.0.2:443
  
  Closes #3406
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

- url: fix incorrect indentation

Patrick Monnerat (26 Dec 2018)
- os400: upgrade ILE/RPG binding.
  
  - Trailer function support.
  - http 0.9 option.
  - curl_easy_upkeep.

Daniel Gustafsson (25 Dec 2018)
- FAQ: remove mention of sourceforge for github
  
  The project bug tracker is no longer hosted at sourceforge but is now
  hosted on the curl Github page. Update the FAQ to reflect.
  
  Closes #3410
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

- openvms: fix typos in documentation

- openvms: fix OpenSSL discovery on VAX
  
  The DCL code had a typo in one of the commands which would make the
  OpenSSL discovery on VAX fail. The correct syntax is F$ENVIRONMENT.
  
  Closes #3407
  Reviewed-by: Viktor Szakats <commit@vszakats.net>

Daniel Stenberg (24 Dec 2018)
- [Ruslan Baratov brought this change]

  cmake: use lowercase for function name like the rest of the code
  
  Reviewed-by: Sergei Nikulov
  
  closes #3196

- Revert "libssh: no data pointer == nothing to do"
  
  This reverts commit c98ee5f67f497195c9 since commit f3ce38739fa fixed the
  problem in a more generic way.

- disconnect: set conn->data for protocol disconnect
  
  Follow-up to fb445a1e18d: Set conn->data explicitly to point out the
  current transfer when invoking the protocol-specific disconnect function
  so that it can work correctly.
  
  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=12173

Jay Satiro (23 Dec 2018)
- [Pavel Pavlov brought this change]

  timeval: Use high resolution timestamps on Windows
  
  - Use QueryPerformanceCounter on Windows Vista+
  
  There is confusing info floating around that QueryPerformanceCounter
  can leap etc, which might have been true long time ago, but no longer
  the case nowadays (perhaps starting from WinXP?). Also, boost and
  std::chrono::steady_clock use QueryPerformanceCounter in a similar way.
  
  Prior to this change GetTickCount or GetTickCount64 was used, which has
  lower resolution. That is still the case for <= XP.
  
  Fixes https://github.com/curl/curl/issues/3309
  Closes https://github.com/curl/curl/pull/3318

Daniel Stenberg (22 Dec 2018)
- libssh: no data pointer == nothing to do

- conncache_unlock: avoid indirection by changing input argument type

- disconnect: separate connections and easy handles better
  
  Do not assume/store assocation between a given easy handle and the
  connection if it can be avoided.
  
  Long-term, the 'conn->data' pointer should probably be removed as it is a
  little too error-prone. Still used very widely though.
  
  Reported-by: masbug on github
  Fixes #3391
  Closes #3400

- libssh: free sftp_canonicalize_path() data correctly
  
  Assisted-by: Harry Sintonen
  
  Fixes #3402
  Closes #3403

- RELEASE-NOTES: synced

- http: added options for allowing HTTP/0.9 responses
  
  Added CURLOPT_HTTP09_ALLOWED and --http0.9 for this purpose.
  
  For now, both the tool and library allow HTTP/0.9 by default.
  docs/DEPRECATE.md lays out the plan for when to reverse that default: 6
  months after the 7.64.0 release. The options are added already now so
  that applications/scripts can start using them already now.
  
  Fixes #2873
  Closes #3383

- if2ip: remove unused function Curl_if_is_interface_name
  
  Closes #3401

- http2: clear pause stream id if it gets closed
  
  Reported-by: Florian Pritz
  
  Fixes #3392
  Closes #3399

Daniel Gustafsson (20 Dec 2018)
- [David Garske brought this change]

  wolfssl: Perform cleanup
  
  This adds a cleanup callback for cyassl. Resolves possible memory leak
  when using ECC fixed point cache.
  
  Closes #3395
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>

Daniel Stenberg (20 Dec 2018)
- mbedtls: follow-up VERIFYHOST fix from f097669248
  
  Fix-by: Eric Rosenquist
  
  Fixes #3376
  Closes #3390

- curlver: bump to 7.64.0 for next release

Daniel Gustafsson (19 Dec 2018)
- cookies: extend domain checks to non psl builds
  
  Ensure to perform the checks we have to enforce a sane domain in
  the cookie request. The check for non-PSL enabled builds is quite
  basic but it's better than nothing.
  
  Closes #2964
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (19 Dec 2018)
- [Matus Uzak brought this change]

  smb: fix incorrect path in request if connection reused
  
  Follow-up to 09e401e01bf9.  If connection gets reused, then data member
  will be copied, but not the proto member.  As a result, in smb_do(),
  path has been set from the original proto.share data.
  
  Closes #3388

- curl -J: do not append to the destination file
  
  Reported-by: Kamil Dudka
  Fixes #3380
  Closes #3381

- mbedtls: use VERIFYHOST
  
  Previously, VERIFYPEER would enable/disable all checks.
  
  Reported-by: Eric Rosenquist
  Fixes #3376
  Closes #3380

- pingpong: change default response timeout to 120 seconds
  
  Previously it was 30 minutes

- pingpong: ignore regular timeout in disconnect phase
  
  The timeout set with CURLOPT_TIMEOUT is no longer used when
  disconnecting from one of the pingpong protocols (FTP, IMAP, SMTP,
  POP3).
  
  Reported-by: jasal82 on github
  
  Fixes #3264
  Closes #3374

- TODO: Windows: set attribute 'archive' for completed downloads
  
  Closes #3354

- RELEASE-NOTES: synced

- http: minor whitespace cleanup from f464535b

- [Ayoub Boudhar brought this change]

  http: Implement trailing headers for chunked transfers
  
  This adds the CURLOPT_TRAILERDATA and CURLOPT_TRAILERFUNCTION
  options that allow a callback based approach to sending trailing headers
  with chunked transfers.
  
  The test server (sws) was updated to take into account the detection of the
  end of transfer in the case of trailing headers presence.
  
  Test 1591 checks that trailing headers can be sent using libcurl.
  
  Closes #3350

- darwinssl: accept setting max-tls with default min-tls
  
  Reported-by: Andrei Neculau
  Fixes #3367
  Closes #3373

- gopher: fix memory leak from 9026083ddb2a9

- [Leonardo Taccari brought this change]

  test1201: Add a trailing `?' to the selector
  
  This verify that the `?' in the selector is kept as is.
  
  Verifies the fix in #3370

- [Leonardo Taccari brought this change]

  gopher: always include the entire gopher-path in request
  
  After the migration to URL API all octets in the selector after the
  first `?' were interpreted as query and accidentally discarded and not
  passed to the server.
  
  Add a gopherpath to always concatenate possible path and query URL
  pieces.
  
  Fixes #3369
  Closes #3370

- [Leonardo Taccari brought this change]

  urlapi: distinguish possibly empty query
  
  If just a `?' to indicate the query is passed always store a zero length
  query instead of having a NULL query.
  
  This permits to distinguish URL with trailing `?'.
  
  Fixes #3369
  Closes #3370

Daniel Gustafsson (13 Dec 2018)
- OS400: handle memory error in list conversion
  
  Curl_slist_append_nodup() returns NULL when it fails to create a new
  item for the specified list, and since the coding here reassigned the
  new list on top of the old list it would result in a dangling pointer
  and lost memory. Also, in case we hit an allocation failure at some
  point during the conversion, with allocation succeeding again on the
  subsequent call(s) we will return a truncated list around the malloc
  failure point. Fix by assigning to a temporary list pointer, which can
  be checked (which is the common pattern for slist appending), and free
  all the resources on allocation failure.
  
  Closes #3372
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

- cookies: leave secure cookies alone
  
  Only allow secure origins to be able to write cookies with the
  'secure' flag set. This reduces the risk of non-secure origins
  to influence the state of secure origins. This implements IETF
  Internet-Draft draft-ietf-httpbis-cookie-alone-01 which updates
  RFC6265.
  
  Closes #2956
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (13 Dec 2018)
- docs: fix the --tls-max description
  
  Reported-by: Tobias Lindgren
  Pointed out in #3367
  
  Closes #3368

Daniel Gustafsson (12 Dec 2018)
- urlapi: Fix port parsing of eol colon
  
  A URL with a single colon without a portnumber should use the default
  port, discarding the colon. Fix, add a testcase and also do little bit
  of comment wordsmithing.
  
  Closes #3365
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Version 7.63.0 (12 Dec 2018)

Daniel Stenberg (12 Dec 2018)
- RELEASE-NOTES: 7.63.0

- THANKS: from the curl 7.62.0 cycle

- test1519: use lib1518 and test CURLINFO_REDIRECT_URL more

- Curl_follow: extract the Location: header field unvalidated
  
  ... when not actually following the redirect. Otherwise we return error
  for this and an application can't extract the value.
  
  Test 1518 added to verify.
  
  Reported-by: Pavel Pavlov
  Fixes #3340
  Closes #3364

- multi: convert two timeout variables to timediff_t
  
  The time_t type is unsigned on some systems and these variables are used
  to hold return values from functions that return timediff_t
  already. timediff_t is always a signed type.
  
  Closes #3363

- delta: use --diff-filter on the git diff-tree invokes
  
  Suggested-by: Dave Reisner

Patrick Monnerat (11 Dec 2018)
- documentation: curl_formadd field and file names are now escaped
  
  Prior to 7.56.0, fieldnames and filenames were set in Content-Disposition
  header without special processing: this may lead to invalid RFC 822
  quoted-strings.
  7.56.0 introduces escaping of backslashes and double quotes in these names:
  mention it in the documentation.
  
  Reported-by: daboul on github
  Closes #3361

Daniel Stenberg (11 Dec 2018)
- scripts/delta: show repo delta info from last release
  
  ... where "last release" should be the git tag in the repo.

Daniel Gustafsson (11 Dec 2018)
- tests: add urlapi unittest
  
  This adds a new unittest intended to cover the internal functions in
  the urlapi code, starting with parse_port(). In order to avoid name
  collisions in debug builds, parse_port() is renamed Curl_parse_port()
  since it will be exported.
  
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>

- urlapi: fix portnumber parsing for ipv6 zone index
  
  An IPv6 URL which contains a zone index includes a '%%25<zode id>'
  string before the ending ']' bracket. The parsing logic wasn't set
  up to cope with the zone index however, resulting in a malformed url
  error being returned. Fix by breaking the parsing into two stages
  to correctly handle the zone index.
  
  Closes #3355
  Closes #3319
  Reported-by: tonystz on Github
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>

Daniel Stenberg (11 Dec 2018)
- [Jay Satiro brought this change]

  http: fix HTTP auth to include query in URI
  
  - Include query in the path passed to generate HTTP auth.
  
  Recent changes to use the URL API internally (46e1640, 7.62.0)
  inadvertently broke authentication URIs by omitting the query.
  
  Fixes https://github.com/curl/curl/issues/3353
  Closes #3356

- [Michael Kaufmann brought this change]

  http: don't set CURLINFO_CONDITION_UNMET for http status code 204
  
  The http status code 204 (No Content) should not change the "condition
  unmet" flag. Only the http status code 304 (Not Modified) should do
  this.
  
  Closes #359

- [Samuel Surtees brought this change]

  ldap: fix LDAP URL parsing regressions
  
  - Match URL scheme with LDAP and LDAPS
  - Retrieve attributes, scope and filter from URL query instead
  
  Regression brought in 46e164069d1a5230 (7.62.0)
  
  Closes #3362

- RELEASE-NOTES: synced

- [Stefan Kanthak brought this change]

  (lib)curl.rc: fixup for minor bugs
  
  All resources defined in lib/libcurl.rc and curl.rc are language
  neutral.
  
  winbuild/MakefileBuild.vc ALWAYS defines the macro DEBUGBUILD, so the
  ifdef's in line 33 of lib/libcurl.rc and src/curl.rc are wrong.
  
  Replace the hard-coded constants in both *.rc files with #define'd
  values.
  
  Thumbs-uped-by: Rod Widdowson, Johannes Schindelin
  URL: https://curl.haxx.se/mail/lib-2018-11/0000.html
  Closes #3348

- test329: verify cookie max-age=0 immediate expiry

- cookies: expire "Max-Age=0" immediately
  
  Reported-by: Jeroen Ooms
  Fixes #3351
  Closes #3352

- [Johannes Schindelin brought this change]

  Upon HTTP_1_1_REQUIRED, retry the request with HTTP/1.1
  
  This is a companion patch to cbea2fd2c (NTLM: force the connection to
  HTTP/1.1, 2018-12-06): with NTLM, we can switch to HTTP/1.1
  preemptively. However, with other (Negotiate) authentication it is not
  clear to this developer whether there is a way to make it work with
  HTTP/2, so let's try HTTP/2 first and fall back in case we encounter the
  error HTTP_1_1_REQUIRED.
  
  Note: we will still keep the NTLM workaround, as it avoids an extra
  round trip.
  
  Daniel Stenberg helped a lot with this patch, in particular by
  suggesting to introduce the Curl_h2_http_1_1_error() function.
  
  Closes #3349
  
  Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

- [Ben Greear brought this change]

  openssl: fix unused variable compiler warning with old openssl
  
  URL: https://curl.haxx.se/mail/lib-2018-11/0055.html
  
  Closes #3347

- [Johannes Schindelin brought this change]

  NTLM: force the connection to HTTP/1.1
  
  Since v7.62.0, cURL tries to use HTTP/2 whenever the server announces
  the capability. However, NTLM authentication only works with HTTP/1.1,
  and will likely remain in that boat (for details, see
  https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10/http2-on-iis#when-is-http2-not-supported).
  
  When we just found out that we want to use NTLM, and when the current
  connection runs in HTTP/2 mode, let's force the connection to be closed
  and to be re-opened using HTTP/1.1.
  
  Fixes https://github.com/curl/curl/issues/3341.
  Closes #3345
  
  Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

- [Johannes Schindelin brought this change]

  curl_global_sslset(): id == -1 is not necessarily an error
  
  It is allowed to call that function with id set to -1, specifying the
  backend by the name instead. We should imitate what is done further down
  in that function to allow for that.
  
  Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  
  Closes #3346

Johannes Schindelin (6 Dec 2018)
- .gitattributes: make tabs in indentation a visible error
  
  Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

Daniel Stenberg (6 Dec 2018)
- RELEASE-NOTES: synced

- doh: fix memory leak in OOM situation
  
  Reviewed-by: Daniel Gustafsson
  Closes #3342

- doh: make it work for h2-disabled builds too
  
  Reported-by: dtmsecurity at github
  Fixes #3325
  Closes #3336

- packages: remove old leftover files and dirs
  
  This subdir has mostly become an attic of never-used cruft from the
  past.
  
  Closes #3331

- [Gergely Nagy brought this change]

  openssl: do not use file BIOs if not requested
  
  Moves the file handling BIO calls to the branch of the code where they
  are actually used.
  
  Closes #3339

- [Paul Howarth brought this change]

  nss: Fix compatibility with nss versions 3.14 to 3.15

- [Paul Howarth brought this change]

  nss: Improve info message when falling back SSL protocol
  
  Use descriptive text strings rather than decimal numbers.

- [Paul Howarth brought this change]

  nss: Fall back to latest supported SSL version
  
  NSS may be built without support for the latest SSL/TLS versions,
  leading to "SSL version range is not valid" errors when the library
  code supports a recent version (e.g. TLS v1.3) but it has explicitly
  been disabled.
  
  This change adjusts the maximum SSL version requested by libcurl to
  be the maximum supported version at runtime, as long as that version
  is at least as high as the minimum version required by libcurl.
  
  Fixes #3261

Daniel Gustafsson (3 Dec 2018)
- travis: enable COPYRIGHTYEAR extended warning
  
  The extended warning for checking incorrect COPYRIGHTYEAR is quite
  expensive to run, so rather than expecting every developer to do it
  we ensure it's turned on locally for Travis.

- checksrc: add COPYRIGHTYEAR check
  
  Forgetting to bump the year in the copyright clause when hacking has
  been quite common among curl developers, but a traditional checksrc
  check isn't a good fit as it would penalize anyone hacking on January
  1st (among other things). This adds a more selective COPYRIGHTYEAR
  check which intends to only cover the currently hacked on changeset.
  
  The check for updated copyright year is currently not enforced on all
  files but only on files edited and/or committed locally. This is due to
  the amount of files which aren't updated with their correct copyright
  year at the time of their respective commit.
  
  To further avoid running this expensive check for every developer, it
  adds a new local override mode for checksrc where a .checksrc file can
  be used to turn on extended warnings locally.
  
  Closes #3303
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (3 Dec 2018)
- CHECKSRC.md: document more warnings
  
  Closes #3335
  [ci skip]

- RELEASE-NOTES: synced

- SECURITY-PROCESS: bountygraph shuts down
  
  This backpedals back the documents to the state before bountygraph.
  
  Closes #3311

- curl: fix memory leak reading --writeout from file
  
  If another string had been set first, the writout function for reading
  the syntax from file would leak the previously allocated memory.
  
  Reported-by: Brian Carpenter
  Fixes #3322
  Closes #3330

- tool_main: rename function to make it unique and better
  
  ... there's already another function in the curl tool named
  free_config_fields!

Daniel Gustafsson (29 Nov 2018)
- TODO: remove CURLOPT_DNS_USE_GLOBAL_CACHE entry
  
  Commit 7c5837e79280e6abb3ae143dfc49bca5e74cdd11 deprecated the option
  making it a manual code-edit operation to turn it back on. The removal
  process has thus started and is now documented in docs/DEPRECATE.md so
  remove from the TODO to avoid anyone looking for something to pick up
  spend cycles on an already in-progress entry.
  
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Jay Satiro (29 Nov 2018)
- [Sevan Janiyan brought this change]

  connect: fix building for recent versions of Minix
  
  EBADIOCTL doesn't exist on more recent Minix.
  There have also been substantial changes to the network stack.
  Fixes build on Minix 3.4rc
  
  Closes https://github.com/curl/curl/pull/3323

- [Konstantin Kushnir brought this change]

  CMake: fix MIT/Heimdal Kerberos detection
  
  - fix syntax error in FindGSS.cmake
  - correct krb5 include directory. FindGSS exports
    "GSS_INCLUDE_DIR" variable.
  
  Closes https://github.com/curl/curl/pull/3316

Daniel Stenberg (28 Nov 2018)
- test328: verify Content-Encoding: none
  
  Because of issue #3315
  
  Closes #3317

- [James Knight brought this change]

  configure: include all libraries in ssl-libs fetch
  
  When compiling a collection of SSL libraries to link against (SSL_LIBS),
  ensure all libraries are included. The call `--libs-only-l` can produce
  only a subset of found in a `--libs` call (e.x. pthread may be excluded).
  Adding `--libs-only-other` ensures other libraries are also included in
  the list. This corrects select build environments compiling against a
  static version of OpenSSL. Before the change, the following could be
  observed:
  
      checking for openssl options with pkg-config... found
      configure: pkg-config: SSL_LIBS: "-lssl -lz -ldl -lcrypto -lz -ldl "
      configure: pkg-config: SSL_LDFLAGS: "-L/home/jdknight/<workdir>/staging/usr/lib -L/home/jdknight/<workdir>/staging/usr/lib "
      configure: pkg-config: SSL_CPPFLAGS: "-I/home/jdknight/<workdir>/staging/usr/include "
      checking for HMAC_Update in -lcrypto... no
      checking for HMAC_Init_ex in -lcrypto... no
      checking OpenSSL linking with -ldl... no
      checking OpenSSL linking with -ldl and -lpthread... no
      configure: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.
      configure: WARNING: Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls, --with-winssl, or --with-darwinssl to address this.
      ...
      SSL support:      no      (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,axtls,winssl,darwinssl} )
      ...
  
  And include the other libraries when compiling SSL_LIBS succeeds with:
  
      checking for openssl options with pkg-config... found
      configure: pkg-config: SSL_LIBS: "-lssl -lz -ldl -pthread -lcrypto -lz -ldl -pthread "
      configure: pkg-config: SSL_LDFLAGS: "-L/home/jdknight/<workdir>/staging/usr/lib -L/home/jdknight/<workdir>/staging/usr/lib "
      configure: pkg-config: SSL_CPPFLAGS: "-I/home/jdknight/<workdir>/staging/usr/include "
      checking for HMAC_Update in -lcrypto... yes
      checking for SSL_connect in -lssl... yes
      ...
      SSL support:      enabled (OpenSSL)
      ...
  
  Signed-off-by: James Knight <james.d.knight@live.com>
  Closes #3193

Daniel Gustafsson (26 Nov 2018)
- doh: fix typo in infof call
  
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

- cmdline-opts/gen.pl: define the correct varname
  
  The variable definition had a small typo making it declare another
  variable then the intended.
  
  Closes #3304
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (25 Nov 2018)
- RELEASE-NOTES: synced

- curl_easy_perform: fix timeout handling
  
  curl_multi_wait() was erroneously used from within
  curl_easy_perform(). It could lead to it believing there was no socket
  to wait for and then instead sleep for a while instead of monitoring the
  socket and then miss acting on that activity as swiftly as it should
  (causing an up to 1000 ms delay).
  
  Reported-by: Antoni Villalonga
  Fixes #3305
  Closes #3306
  Closes #3308

- CURLOPT_WRITEFUNCTION.3: spell out that it gets called many times

- cookies: create the cookiejar even if no cookies to save
  
  Important for when the file is going to be read again and thus must not
  contain old contents!
  
  Adds test 327 to verify.
  
  Reported-by: daboul on github
  Fixes #3299
  Closes #3300

- checksrc: ban snprintf use, add command line flag to override warns

- snprintf: renamed and we now only use msnprintf()
  
  The function does not return the same value as snprintf() normally does,
  so readers may be mislead into thinking the code works differently than
  it actually does. A different function name makes this easier to detect.
  
  Reported-by: Tomas Hoger
  Assisted-by: Daniel Gustafsson
  Fixes #3296
  Closes #3297

- [Tobias Hintze brought this change]

  test: update test20/1322 for eglibc bug workaround
  
  The tests 20 and 1322 are using getaddrinfo of libc for resolving. In
  eglibc-2.19 there is a memory leakage and invalid free bug which
  surfaces in some special circumstances (PF_UNSPEC hint with invalid or
  non-existent names). The valgrind runs in testing fail in these
  situations.
  
  As the tests 20/1322 are not specific on either protocol (IPv4/IPv6)
  this commit changes the hints to IPv4 protocol by passing `--ipv4` flag
  on the tests' command line.  This prevents the valgrind failures.

- [Tobias Hintze brought this change]

  host names: allow trailing dot in name resolve, then strip it
  
  Delays stripping of trailing dots to after resolving the hostname.
  
  Fixes #3022
  Closes #3222

- [UnknownShadow200 brought this change]

  CURLOPT_HEADERFUNCTION.3: match 'nitems' name in synopsis and description
  
  Closes #3295

Daniel Gustafsson (21 Nov 2018)
- configure: Fix typo in comment

Michael Kaufmann (21 Nov 2018)
- openssl: support session resume with TLS 1.3
  
  Session resumption information is not available immediately after a TLS 1.3
  handshake. The client must wait until the server has sent a session ticket.
  
  Use OpenSSL's "new session" callback to get the session information and put it
  into curl's session cache. For TLS 1.3 sessions, this callback will be invoked
  after the server has sent a session ticket.
  
  The "new session" callback is invoked only if OpenSSL's session cache is
  enabled, so enable it and use the "external storage" mode which lets curl manage
  the contents of the session cache.
  
  A pointer to the connection data and the sockindex are now saved as "SSL extra
  data" to make them available to the callback.
  
  This approach also works for old SSL/TLS versions and old OpenSSL versions.
  
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  
  Fixes #3202
  Closes #3271

- ssl: fix compilation with OpenSSL 0.9.7
  
  - ENGINE_cleanup() was used without including "openssl/engine.h"
  - enable engine support for OpenSSL 0.9.7
  
  Closes #3266

Daniel Stenberg (21 Nov 2018)
- openssl: disable TLS renegotiation with BoringSSL
  
  Since we're close to feature freeze, this change disables this feature
  with an #ifdef. Define ALLOW_RENEG at build-time to enable.
  
  This could be converted to a bit for CURLOPT_SSL_OPTIONS to let
  applications opt-in this.
  
  Concern-raised-by: David Benjamin
  Fixes #3283
  Closes #3293

- [Romain Fliedel brought this change]

  ares: remove fd from multi fd set when ares is about to close the fd
  
  When using c-ares for asyn dns, the dns socket fd was silently closed
  by c-ares without curl being aware. curl would then 'realize' the fd
  has been removed at next call of Curl_resolver_getsock, and only then
  notify the CURLMOPT_SOCKETFUNCTION to remove fd from its poll set with
  CURL_POLL_REMOVE. At this point the fd is already closed.
  
  By using ares socket state callback (ARES_OPT_SOCK_STATE_CB), this
  patch allows curl to be notified that the fd is not longer needed
  for neither for write nor read. At this point by calling
  Curl_multi_closed we are able to notify multi with CURL_POLL_REMOVE
  before the fd is actually closed by ares.
  
  In asyn-ares.c Curl_resolver_duphandle we can't use ares_dup anymore
  since it does not allow passing a different sock_state_cb_data
  
  Closes #3238

- [Romain Fliedel brought this change]

  examples/ephiperfifo: report error when epoll_ctl fails

Daniel Gustafsson (20 Nov 2018)
- [pkubaj brought this change]

  ntlm: Remove redundant ifdef USE_OPENSSL
  
  lib/curl_ntlm.c had code that read as follows:
  
    #ifdef USE_OPENSSL
    # ifdef USE_OPENSSL
    # else
    # ..
    # endif
    #endif
  
  Remove the redundant USE_OPENSSL along with #else (it's not possible to
  reach it anyway). The removed construction is a leftover from when the
  SSLeay support was removed.
  
  Closes #3269
  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (20 Nov 2018)
- [Han Han brought this change]

  ssl: replace all internal uses of CURLE_SSL_CACERT
  
  Closes #3291

Han Han (19 Nov 2018)
- docs: add more description to unified ssl error codes

- curle: move deprecated error code to ifndef block

Patrick Monnerat (19 Nov 2018)
- os400: add CURLOPT_CURLU to ILE/RPG binding.

- os400: Add curl_easy_conn_upkeep() to ILE/RPG binding.

- os400: fix return type of curl_easy_pause() in ILE/RPG binding.

Daniel Stenberg (19 Nov 2018)
- RELEASE-NOTES: synced

- impacket: add LICENSE
  
  The license for the impacket package was not in our tree.
  
  Imported now from upstream's
  https://github.com/SecureAuthCorp/impacket/blob/master/LICENSE
  
  Reported-by: infinnovation-dev on github
  Fixes #3276
  Closes #3277

Daniel Gustafsson (18 Nov 2018)
- tool_doswin: Fix uninitialized field warning
  
  The partial struct initialization in 397664a065abffb7c3445ca9 caused
  a warning on uninitialized MODULEENTRY32 struct members:
  
    /src/tool_doswin.c:681:3: warning: missing initializer for field
    'th32ModuleID' of 'MODULEENTRY32 {aka struct tagMODULEENTRY32}'
    [-Wmissing-field-initializers]
  
  This is sort of a bogus warning as the remaining members will be set
  to zero by the compiler, as all omitted members are. Nevertheless,
  remove the warning by omitting all members and setting the dwSize
  members explicitly.
  
  Closes #3254
  Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
  Reviewed-by: Jay Satiro <raysatiro@yahoo.com>

- openssl: Remove SSLEAY leftovers
  
  Commit 709cf76f6bb7dbac deprecated USE_SSLEAY, as curl since long isn't
  compatible with the SSLeay library. This removes the few leftovers that
  were omitted in the less frequently used platform targets.
  
  Closes #3270
  Reviewed-by: Daniel Stenberg <daniel@haxx.se>

Daniel Stenberg (16 Nov 2018)
- [Elia Tufarolo brought this change]

  http_negotiate: do not close connection until negotiation is completed
  
  Fix HTTP POST using CURLAUTH_NEGOTIATE.
  
  Closes #3275

- pop3: only do APOP with a valid timestamp
  
  Brought-by: bobmitchell1956 on github
  Fixes #3278
  Closes #3279

Jay Satiro (16 Nov 2018)
- [Peter Wu brought this change]

  openssl: do not log excess "TLS app data" lines for TLS 1.3
  
  The SSL_CTX_set_msg_callback callback is not just called for the
  Handshake or Alert protocols, but also for the raw record header
  (SSL3_RT_HEADER) and the decrypted inner record type
  (SSL3_RT_INNER_CONTENT_TYPE). Be sure to ignore the latter to avoid
  excess debug spam when using `curl -v` against a TLSv1.3-enabled server:
  
      * TLSv1.3 (IN), TLS app data, [no content] (0):
  
  (Following this message, another callback for the decrypted
  handshake/alert messages will be be present anyway.)
  
  Closes https://github.com/curl/curl/pull/3281

Marc Hoersken (15 Nov 2018)
- tests: disable SO_EXCLUSIVEADDRUSE for stunnel on Windows
  
  SO_EXCLUSIVEADDRUSE is on by default on Vista or newer,
  but does not work together with SO_REUSEADDR being on.
  
  The default changes were made with stunnel 5.34 and 5.35.

Daniel Stenberg (13 Nov 2018)
- [Kamil Dudka brought this change]

  nss: remove version selecting dead code
  
  Closes #3262

- nss: set default max-tls to 1.3/1.2
  
  Fixes #3261

Daniel Gustafsson (13 Nov 2018)
- tool_cb_wrt: Silence function cast compiler warning
  
  Commit 5bfaa86ceb3c2a9ac474a928e748c4a86a703b33 introduced a new
  compiler warning on Windows cross compilation with GCC. See below
  for an example of the warning from the autobuild logs (whitespace
  edited to fit):
  
  /src/tool_cb_wrt.c:175:9: warning: cast from function call of type
      'intptr_t {aka long long int}' to non-matching type 'void *'
      [-Wbad-function-cast]
  (HANDLE) _get_osfhandle(fileno(outs->stream)),
  ^
  
  Store the return value from _get_osfhandle() in an intermediate
  variable and cast the variable in WriteConsoleW() rather than the
  function call directly to avoid a compiler warning.
  
  In passing, also add inspection of the MultiByteToWideChar() return
  value and return failure in case an error is reported.
  
  Closes #3263
  Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
  Reviewed-by: Viktor Szakats <commit@vszakats.net>

Daniel Stenberg (12 Nov 2018)
- nss: fix fallthrough comment to fix picky compiler warning

- docs: expanded on some CURLU details

- [Tim Rühsen brought this change]

  ftp: avoid two unsigned int overflows in FTP listing parser
  
  Curl_ftp_parselist: avoid unsigned integer overflows
  
  The overflow has no real world impact, just avoid it for "best
  practice".
  
  Closes #3225







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
7093
7094
7095
7096
7097
7098
7099









































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































  
  The problem can be reproduced as follows:
  
   % curl --reso<TAB>
   % curl -E <TAB>
  
  Bug: https://bugs.debian.org/921452









































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Changes to jni/curl/CMake/CurlTests.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/CMake/Platforms/WindowsCache.cmake.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(NOT UNIX)
  if(WIN32)
    set(HAVE_LIBDL 0)
    set(HAVE_LIBUCB 0)
    set(HAVE_LIBSOCKET 0)
    set(NOT_NEED_LIBNSL 0)
    set(HAVE_LIBNSL 0)
    set(HAVE_GETHOSTNAME 1)
    set(HAVE_LIBZ 0)
    set(HAVE_LIBCRYPTO 0)

    set(HAVE_DLOPEN 0)

    set(HAVE_ALLOCA_H 0)
    set(HAVE_ARPA_INET_H 0)
    set(HAVE_DLFCN_H 0)
    set(HAVE_FCNTL_H 1)









<







1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
if(NOT UNIX)
  if(WIN32)
    set(HAVE_LIBDL 0)
    set(HAVE_LIBUCB 0)
    set(HAVE_LIBSOCKET 0)
    set(NOT_NEED_LIBNSL 0)
    set(HAVE_LIBNSL 0)
    set(HAVE_GETHOSTNAME 1)
    set(HAVE_LIBZ 0)


    set(HAVE_DLOPEN 0)

    set(HAVE_ALLOCA_H 0)
    set(HAVE_ARPA_INET_H 0)
    set(HAVE_DLFCN_H 0)
    set(HAVE_FCNTL_H 1)
Changes to jni/curl/CMakeLists.txt.
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
  list(APPEND CURL_LIBS "${COREFOUNDATION_FRAMEWORK}" "${SECURITY_FRAMEWORK}")
endif()

if(CMAKE_USE_OPENSSL)
  find_package(OpenSSL REQUIRED)
  set(SSL_ENABLED ON)
  set(USE_OPENSSL ON)
  set(HAVE_LIBCRYPTO ON)
  set(HAVE_LIBSSL ON)

  # Depend on OpenSSL via imported targets if supported by the running
  # version of CMake.  This allows our dependents to get our dependencies
  # transitively.
  if(NOT CMAKE_VERSION VERSION_LESS 3.4)
    list(APPEND CURL_LIBS OpenSSL::SSL OpenSSL::Crypto)
  else()







<
<







343
344
345
346
347
348
349


350
351
352
353
354
355
356
  list(APPEND CURL_LIBS "${COREFOUNDATION_FRAMEWORK}" "${SECURITY_FRAMEWORK}")
endif()

if(CMAKE_USE_OPENSSL)
  find_package(OpenSSL REQUIRED)
  set(SSL_ENABLED ON)
  set(USE_OPENSSL ON)



  # Depend on OpenSSL via imported targets if supported by the running
  # version of CMake.  This allows our dependents to get our dependencies
  # transitively.
  if(NOT CMAKE_VERSION VERSION_LESS 3.4)
    list(APPEND CURL_LIBS OpenSSL::SSL OpenSSL::Crypto)
  else()
Changes to jni/curl/Makefile.in.
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
  pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c        \
  openldap.c curl_gethostname.c gopher.c idn_win32.c                    \
  http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c      \
  http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c        \
  curl_multibyte.c hostcheck.c conncache.c dotdot.c                     \
  x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c      \
  mime.c sha256.c setopt.c curl_path.c curl_ctype.c curl_range.c psl.c  \
  doh.c urlapi.c curl_get_line.c altsvc.c

LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
  formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h         \
  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
  strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h          \
  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
  socks.h ssh.h curl_base64.h curl_addrinfo.h curl_sspi.h      \
  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
  http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
  curl_sasl.h curl_multibyte.h hostcheck.h conncache.h                  \
  curl_setup_once.h multihandle.h setup-vms.h dotdot.h                  \
  x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h           \
  curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h     \
  curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h        \
  curl_get_line.h altsvc.h quic.h

LIB_RCFILES = libcurl.rc
CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
  $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)

HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
  $(LIB_VQUIC_HFILES)







|




















|







688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
  pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c        \
  openldap.c curl_gethostname.c gopher.c idn_win32.c                    \
  http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c      \
  http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c        \
  curl_multibyte.c hostcheck.c conncache.c dotdot.c                     \
  x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c      \
  mime.c sha256.c setopt.c curl_path.c curl_ctype.c curl_range.c psl.c  \
  doh.c urlapi.c curl_get_line.c altsvc.c socketpair.c

LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
  formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h         \
  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
  strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h          \
  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
  socks.h ssh.h curl_base64.h curl_addrinfo.h curl_sspi.h      \
  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
  http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
  curl_sasl.h curl_multibyte.h hostcheck.h conncache.h                  \
  curl_setup_once.h multihandle.h setup-vms.h dotdot.h                  \
  x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h           \
  curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h     \
  curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h        \
  curl_get_line.h altsvc.h quic.h socketpair.h

LIB_RCFILES = libcurl.rc
CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
  $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)

HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
  $(LIB_VQUIC_HFILES)
Changes to jni/curl/RELEASE-NOTES.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16


17
18
19
20
21
22
23
24
25
26
27

28
29
30
31
32
33
34
35
36
37
38
39
40



41





42




43

44

45



46
47

48


49
50
51
52
53
54

55





56
57
58
59

60
61
62
63
64
65
66
67
68
69

70
71

72
73




74
75
76
77

78










79
80
81
82
83
84
85
86
87
88
89
90
91
92

93

94
95
96



97



98

99





100
101
102
103
104
105
106
107
108
109

110
111
112


113
114
115
116

117
118



119

120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141




















142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158










159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176










177
178
179
180
181
182
183
184
185
186
187

188
189
190
191
192
193
194
curl and libcurl 7.66.0

 Public curl releases:         185
 Command line options:         225
 curl_easy_setopt() options:   269
 Public functions in libcurl:  81
 Contributors:                 1991

This release includes the following changes:

 o CURLINFO_RETRY_AFTER: parse the Retry-After header value [35]
 o HTTP3: initial (experimental still not working) support [5]
 o curl: --sasl-authzid added to support CURLOPT_SASL_AUTHZID from the tool [27]
 o curl: support parallel transfers with -Z [4]
 o curl_multi_poll: a sister to curl_multi_wait() that waits more [28]
 o sasl: Implement SASL authorisation identity via CURLOPT_SASL_AUTHZID [27]



This release includes the following bugfixes:

 o CVE-2019-5481: FTP-KRB double-free [64]
 o CVE-2019-5482: TFTP small blocksize heap buffer overflow [65]
 o CI: remove duplicate configure flag for LGTM.com
 o CMake: remove needless newlines at end of gss variables
 o CMake: use platform dependent name for dlopen() library [62]
 o CURLINFO docs: mention that in redirects times are added [55]
 o CURLOPT_ALTSVC.3: use a "" file name to not load from a file
 o CURLOPT_ALTSVC_CTRL.3: remove CURLALTSVC_ALTUSED

 o CURLOPT_HEADERFUNCTION.3: clarify [54]
 o CURLOPT_HTTP_VERSION: seting this to 3 forces HTTP/3 use directly [33]
 o CURLOPT_READFUNCTION.3: provide inline example
 o CURLOPT_SSL_VERIFYHOST: treat the value 1 as 2 [51]
 o Curl_addr2string: take an addrlen argument too [61]
 o Curl_fillreadbuffer: avoid double-free trailer buf on error [66]
 o HTTP: use chunked Transfer-Encoding for HTTP_POST if size unknown [10]
 o alt-svc: add protocol version selection masking [31]
 o alt-svc: fix removal of expired cache entry [30]
 o alt-svc: make it use h3-22 with ngtcp2 as well
 o alt-svc: more liberal ALPN name parsing [17]
 o alt-svc: send Alt-Used: in redirected requests [32]
 o alt-svc: with quiche, use the quiche h3 alpn string [16]



 o appveyor: pass on -k to make





 o asyn-thread: create a socketpair to wait on [14]




 o build-openssl: fix build with Visual Studio 2019 [45]

 o cleanup: move functions out of url.c and make them static [58]

 o cleanup: remove the 'numsocks' argument used in many places [25]



 o configure: avoid undefined check_for_ca_bundle [37]
 o curl.h: add CURL_HTTP_VERSION_3 to the version enum

 o curl.h: fix outdated comment [23]


 o curl: cap the maximum allowed values for retry time arguments [13]
 o curl: handle a libcurl build without netrc support [63]
 o curl: make use of CURLINFO_RETRY_AFTER when retrying [35]
 o curl: remove outdated comment [24]
 o curl: use .curlrc (with a dot) on Windows [52]
 o curl: use CURLINFO_PROTOCOL to check for HTTP(s)

 o curl_global_init_mem.3: mention it was added in 7.12.0





 o curl_version: bump string buffer size to 250
 o curl_version_info.3: mentioned ALTSVC and HTTP3
 o curl_version_info: offer quic (and h3) library info [38]
 o curl_version_info: provide nghttp2 details [2]

 o defines: avoid underscore-prefixed defines [47]
 o docs/ALTSVC: remove what works and the experimental explanation [34]
 o docs/EXPERIMENTAL: explain what it means and what's experimental now
 o docs/MANUAL.md: converted to markdown from plain text [3]
 o docs/examples/curlx: fix errors [48]
 o docs: s/curl_debug/curl_dbg_debug in comments and docs [36]
 o easy: resize receive buffer on easy handle reset [9]
 o examples: Avoid reserved names in hiperfifo examples [8]
 o examples: add http3.c, altsvc.c and http3-present.c [40]
 o getenv: support up to 4K environment variable contents on windows [21]

 o http09: disable HTTP/0.9 by default in both tool and library [29]
 o http2: when marked for closure and wanted to close == OK [56]

 o http2_recv: trigger another read when the last data is returned [11]
 o http: fix use of credentials from URL when using HTTP proxy [44]




 o http_negotiate: improve handling of gss_init_sec_context() failures [18]
 o md4: Use our own MD4 when no crypto libraries are available [15]
 o multi: call detach_connection before Curl_disconnect [6]
 o netrc: make the code try ".netrc" on Windows [52]

 o nss: use TLSv1.3 as default if supported [39]










 o openssl: build warning free with boringssl [50]
 o openssl: use SSL_CTX_set_<min|max>_proto_version() when available [68]
 o plan9: add support for running on Plan 9 [22]
 o progress: reset download/uploaded counter between transfers [12]
 o readwrite_data: repair setting the TIMER_STARTTRANSFER stamp [26]
 o scp: fix directory name length used in memcpy [46]
 o smb: init *msg to NULL in smb_send_and_recv() [60]
 o smtp: check for and bail out on too short EHLO response [59]
 o source: remove names from source comments [1]
 o spnego_sspi: add typecast to fix build warning [49]
 o src/makefile: fix uncompressed hugehelp.c generation [19]
 o ssh-libssh: do not specify O_APPEND when not in append mode [7]
 o ssh: move code into vssh for SSH backends [53]
 o sspi: fix memory leaks [67]

 o tests: Replace outdated test case numbering documentation [43]

 o tftp: return error when packet is too small for options
 o timediff: make it 64 bit (if possible) even with 32 bit time_t [20]
 o travis: reduce number of torture tests in 'coverage' [42]



 o url: make use of new HTTP version if alt-svc has one [16]



 o urlapi: verify the IPv6 numerical address [69]

 o urldata: avoid 'generic', use dedicated pointers [57]





 o vauth: Use CURLE_AUTH_ERROR for auth function errors [41]

This release includes the following known bugs:

 o see docs/KNOWN_BUGS (https://curl.haxx.se/docs/knownbugs.html)

This release would not have looked like this without help, code, reports and
advice from friends like these:

  Alessandro Ghedini, Alex Mayorga, Amit Katyal, Balazs Kovacsics,

  Brad Spencer, Brandon Dong, Carlo Marcelo Arenas Belón, Christopher Head,
  Clément Notin, codesniffer13 on github, Daniel Gustafsson, Daniel Stenberg,
  Dominik Hölzl, Eric Wong, Felix Hädicke, Gergely Nagy, Gisle Vanem,


  Igor Makarov, Ironbars13 on github, Jason Lee, Jeremy Lainé,
  Jonathan Cardoso Machado, Junho Choi, Kamil Dudka, Kyle Abramowitz,
  Kyohei Kadota, Lance Ware, Marcel Raad, Max Dymond, Michael Lee,
  Michal Čaplygin, migueljcrum on github, Mike Crowe, niallor on github,

  osabc on github, patnyb on github, Patrick Monnerat, Peter Wu, Ray Satiro,
  Rolf Eike Beer, Steve Holme, Tatsuhiro Tsujikawa, The Infinnovation team,



  Thomas Vegas, Tom van der Woerdt, Yiming Jing,

  (46 contributors)

        Thanks! (and sorry if I forgot to mention someone)

References to bug reports and discussions on issues:

 [1] = https://curl.haxx.se/bug/?i=4129
 [2] = https://curl.haxx.se/bug/?i=4121
 [3] = https://curl.haxx.se/bug/?i=4131
 [4] = https://curl.haxx.se/bug/?i=3804
 [5] = https://curl.haxx.se/bug/?i=3500
 [6] = https://curl.haxx.se/bug/?i=4144
 [7] = https://curl.haxx.se/bug/?i=4147
 [8] = https://curl.haxx.se/bug/?i=4153
 [9] = https://curl.haxx.se/bug/?i=4143
 [10] = https://curl.haxx.se/bug/?i=4138
 [11] = https://curl.haxx.se/bug/?i=4043
 [12] = https://curl.haxx.se/bug/?i=4084
 [13] = https://curl.haxx.se/bug/?i=4166
 [14] = https://curl.haxx.se/bug/?i=4157
 [15] = https://curl.haxx.se/bug/?i=3780
 [16] = https://curl.haxx.se/bug/?i=4183




















 [17] = https://curl.haxx.se/bug/?i=4182
 [18] = https://curl.haxx.se/bug/?i=3992
 [19] = https://curl.haxx.se/bug/?i=4176
 [20] = https://curl.haxx.se/bug/?i=4165
 [21] = https://curl.haxx.se/bug/?i=4174
 [22] = https://curl.haxx.se/bug/?i=3701
 [23] = https://curl.haxx.se/bug/?i=4167
 [24] = https://curl.haxx.se/bug/?i=4172
 [25] = https://curl.haxx.se/bug/?i=4169
 [26] = https://curl.haxx.se/bug/?i=4136
 [27] = https://curl.haxx.se/bug/?i=3653
 [28] = https://curl.haxx.se/bug/?i=4163
 [29] = https://curl.haxx.se/bug/?i=4191
 [30] = https://curl.haxx.se/bug/?i=4192
 [31] = https://curl.haxx.se/bug/?i=4201
 [32] = https://curl.haxx.se/bug/?i=4199
 [33] = https://curl.haxx.se/bug/?i=4197










 [34] = https://curl.haxx.se/bug/?i=4198
 [35] = https://curl.haxx.se/bug/?i=3794
 [36] = https://curl.haxx.se/bug/?i=3794
 [37] = https://curl.haxx.se/bug/?i=4213
 [38] = https://curl.haxx.se/bug/?i=4216
 [39] = https://curl.haxx.se/bug/?i=4187
 [40] = https://curl.haxx.se/bug/?i=4221
 [41] = https://curl.haxx.se/bug/?i=3848
 [42] = https://curl.haxx.se/bug/?i=4223
 [43] = https://curl.haxx.se/bug/?i=4227
 [44] = https://curl.haxx.se/bug/?i=4228
 [45] = https://curl.haxx.se/bug/?i=4188
 [46] = https://curl.haxx.se/bug/?i=4258
 [47] = https://curl.haxx.se/bug/?i=4254
 [48] = https://curl.haxx.se/bug/?i=4248
 [49] = https://curl.haxx.se/bug/?i=4245
 [50] = https://curl.haxx.se/bug/?i=4244
 [51] = https://curl.haxx.se/bug/?i=4241










 [52] = https://curl.haxx.se/bug/?i=4230
 [53] = https://curl.haxx.se/bug/?i=4235
 [54] = https://curl.haxx.se/bug/?i=4273
 [55] = https://curl.haxx.se/bug/?i=4250
 [56] = https://curl.haxx.se/bug/?i=4267
 [57] = https://curl.haxx.se/bug/?i=4290
 [58] = https://curl.haxx.se/bug/?i=4289
 [59] = https://curl.haxx.se/bug/?i=4287
 [60] = https://curl.haxx.se/bug/?i=4286
 [61] = https://curl.haxx.se/bug/?i=4283
 [62] = https://curl.haxx.se/bug/?i=4279

 [63] = https://curl.haxx.se/bug/?i=4302
 [64] = https://curl.haxx.se/docs/CVE-2019-5481.html
 [65] = https://curl.haxx.se/docs/CVE-2019-5482.html
 [66] = https://curl.haxx.se/bug/?i=4307
 [67] = https://curl.haxx.se/bug/?i=4299
 [68] = https://curl.haxx.se/bug/?i=4304
 [69] = https://curl.haxx.se/bug/?i=4315
|

|
|


|



<
<
<
|
<
<
>
>



|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
|
>
>
>
>
>
|
>
>
>
>
|
>
|
>
|
>
>
>
|
<
>
|
>
>
|
|
<
|
|
|
>
|
>
>
>
>
>
|
<
<
<
>
|
<
<
<
|
<
<
|
|
<
>
|
|
>
|
|
>
>
>
>
|
|
|
|
>
|
>
>
>
>
>
>
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
<
<
|
>
|
>
|
<
|
>
>
>
|
>
>
>
|
>
|
>
>
>
>
>
|








|
>
|
|
<
>
>
|
|
|
|
>
|
<
>
>
>
|
>
|





|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
>
>
>
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
>
>
>
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
1
2
3
4
5
6
7
8
9
10



11


12
13
14
15
16
17
18
19
20
21
22

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

61
62
63
64
65
66

67
68
69
70
71
72
73
74
75
76
77



78
79



80


81
82

83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119


120
121
122
123
124

125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153

154
155
156
157
158
159
160
161

162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
curl and libcurl 7.67.0

 Public curl releases:         186
 Command line options:         226
 curl_easy_setopt() options:   269
 Public functions in libcurl:  81
 Contributors:                 2056

This release includes the following changes:




 o curl: added --no-progress-meter [73]


 o setopt: CURLMOPT_MAX_CONCURRENT_STREAMS is new [55]
 o urlapi: CURLU_NO_AUTHORITY allows empty authority/host part [22]

This release includes the following bugfixes:

 o BINDINGS: five new bindings addded
 o CURLOPT_TIMEOUT.3: Clarify transfer timeout time includes queue time [78]
 o CURLOPT_TIMEOUT.3: remove the mention of "minutes" [74]
 o ESNI: initial build/setup support [71]
 o FTP: FTPFILE_NOCWD: avoid redundant CWDs [28]
 o FTP: allow "rubbish" prepended to the SIZE response [15]

 o FTP: remove trailing slash from path for LIST/MLSD [6]
 o FTP: skip CWD to entry dir when target is absolute [16]
 o FTP: url-decode path before evaluation [36]
 o HTTP3.md: move -p for mkdir, remove -j for make [46]
 o HTTP3: fix invalid use of sendto for connected UDP socket [109]
 o HTTP3: fix ngtcp2 Windows build [93]
 o HTTP3: fix prefix parameter for ngtcp2 build [40]
 o HTTP3: fix typo somehere1 > somewhere1 [108]
 o HTTP3: show an --alt-svc using example too
 o INSTALL: add missing space for configure commands [106]
 o INSTALL: add vcpkg installation instructions [35]
 o README: minor grammar fix [39]
 o altsvc: accept quoted ma and persist values [60]
 o altsvc: both backends run h3-23 now [31]
 o appveyor: Add MSVC ARM64 build [87]
 o appveyor: Use two parallel compilation on appveyor with CMake [98]
 o appveyor: add --disable-proxy autotools build [94]
 o appveyor: add 32-bit MinGW-w64 build [58]
 o appveyor: add a winbuild [14]
 o appveyor: add a winbuild that uses VS2017 [84]
 o appveyor: make winbuilds with DEBUG=no/yes and VS 2015/2017 [95]
 o appveyor: publish artifacts on appveyor [105]
 o appveyor: upgrade VS2017 to VS2019 [29]
 o asyn-thread: make use of Curl_socketpair() where available [85]
 o asyn-thread: s/AF_LOCAL/AF_UNIX for Solaris [3]
 o build: Remove unused HAVE_LIBSSL and HAVE_LIBCRYPTO defines [77]
 o checksrc: fix uninitialized variable warning [57]
 o chunked-encoding: stop hiding the CURLE_BAD_CONTENT_ENCODING error [56]
 o cirrus: Increase the git clone depth
 o cirrus: Switch the FreeBSD 11.x build to 11.3 and add a 13.0 build
 o cirrus: switch off blackhole status on the freebsd CI machines [72]
 o cleanups: 21 various PVS-Studio warnings [24]
 o configure: only say ipv6 enabled when the variable is set [110]
 o configure: remove all cyassl references [90]
 o conn-reuse: requests wanting NTLM can reuse non-NTLM connections [99]
 o connect: return CURLE_OPERATION_TIMEDOUT for errno == ETIMEDOUT [72]
 o connect: silence sign-compare warning [83]
 o cookie: avoid harmless use after free [69]

 o cookie: pass in the correct cookie amount to qsort() [27]
 o cookies: change argument type for Curl_flush_cookies [67]
 o cookies: using a share with cookies shouldn't enable the cookie engine [63]
 o copyrights: update copyright notices to 2019 [101]
 o curl: create easy handles on-demand and not ahead of time [54]
 o curl: ensure HTTP 429 triggers --retry [64]

 o curl: exit the create_transfers loop on errors [33]
 o curl: fix memory leaked by parse_metalink() [17]
 o curl: load large files with -d @ much faster [19]
 o docs/HTTP3: fix `--with-ssl` ngtcp2 configure flag [21]
 o docs: added multi-event.c example [75]
 o docs: disambiguate CURLUPART_HOST is for host name (ie no port) [62]
 o docs: note on failed handles not being counted by curl_multi_perform [70]
 o doh: allow only http and https in debug mode [48]
 o doh: avoid truncating DNS QTYPE to lower octet [23]
 o doh: clean up dangling DOH memory on easy close [9]
 o doh: fix (harmless) buffer overrun [13]



 o doh: fix undefined behaviour and open up for gcc and clang optimization [12]
 o doh: return early if there is no time left [48]



 o examples/sslbackend: fix -Wchar-subscripts warning [89]


 o examples: remove the "this exact code has not been verified"
 o git: add tests/server/disabled to .gitignore [59]

 o gnutls: make gnutls_bye() not wait for response on shutdown [104]
 o http2: expire a timeout at end of stream [88]
 o http2: prevent dup'ed handles to send dummy PRIORITY frames [68]
 o http2: relax verification of :authority in push promise requests [8]
 o http2_recv: a closed stream trumps pause state [88]
 o http: lowercase headernames for HTTP/2 and HTTP/3 [49]
 o ldap: Stop using wide char version of ldapp_err2string [1]
 o ldap: fix OOM error on missing query string [76]
 o mbedtls: add error message for cert validity starting in the future [102]
 o mime: when disabled, avoid C99 macro [7]
 o ngtcp2: adapt to API change [66]
 o ngtcp2: compile with latest ngtcp2 + nghttp3 draft-23 [25]
 o ngtcp2: remove fprintf() calls [43]
 o openssl: close_notify on the FTP data connection doesn't mean closure [20]
 o openssl: fix compiler warning with LibreSSL [34]
 o openssl: use strerror on SSL_ERROR_SYSCALL [41]
 o os400: getpeername() and getsockname() return ebcdic AF_UNIX sockaddr [47]
 o parsedate: fix date parsing disabled builds [18]
 o quiche: don't close connection at end of stream
 o quiche: persist connection details (fixes -I with --http3) [11]
 o quiche: set 'drain' when returning without having drained the queues
 o quiche: update HTTP/3 config creation to new API [61]
 o redirect: handle redirects to absolute URLs containing spaces [52]
 o runtests: get textaware info from curl instead of perl [86]
 o schannel: reverse the order of certinfo insertions [96]
 o schannel_verify: Fix concurrent openings of CA file [103]
 o security: silence conversion warning [83]
 o setopt: handle ALTSVC set to NULL
 o setopt: make it easier to add new enum values [4]
 o setopt: store CURLOPT_RTSP_SERVER_CSEQ correctly [24]
 o smb: check for full size message before reading message details [10]
 o smbserver: fix Python 3 compatibility [82]
 o socks: Fix destination host shown on SOCKS5 error [32]
 o test1162: disable MSYS2's POSIX path conversion
 o test1591: fix spelling of http feature [97]
 o tests: add `connect to non-listen` keywords [91]
 o tests: fix narrowing conversion warnings [37]


 o tests: fix the test 3001 cert failures [100]
 o tests: makes tests succeed when using --disable-proxy [81]
 o tests: use %FILE_PWD for file:// URLs [92]
 o tests: use port 2 instead of 60000 for a safer non-listening port [72]
 o tool_operate: Fix retry sleep time shown to user when Retry-After [79]

 o travis: Add an ARM64 build
 o url: Curl_free_request_state() should also free doh handles [107]
 o url: don't set appconnect time for non-ssl/non-ssh connections [42]
 o url: fix the NULL hostname compiler warning [44]
 o url: normalize CURLINFO_EFFECTIVE_URL [80]
 o url: only reuse TLS connections with matching pinning [5]
 o urlapi: avoid index underflow for short ipv6 hostnames [26]
 o urlapi: fix URL encoding when setting a full URL [53]
 o urlapi: fix unused variable warning [57]
 o urlapi: question mark within fragment is still fragment [45]
 o urldata: use 'bool' for the bit type on MSVC compilers [30]
 o vtls: Fix comment typo about macosx-version-min compiler flag [38]
 o vtls: fix narrowing conversion warnings [50]
 o winbuild/MakefileBuild.vc: Add vssh [2]
 o winbuild/MakefileBuild.vc: Fix line endings
 o winbuild: Add manifest to curl.exe for proper OS version detection [51]
 o winbuild: add ENABLE_UNICODE option [65]

This release includes the following known bugs:

 o see docs/KNOWN_BUGS (https://curl.haxx.se/docs/knownbugs.html)

This release would not have looked like this without help, code, reports and
advice from friends like these:

  Alessandro Ghedini, Alex Konev, Alex Samorukov, Andrei Valeriu BICA,
  Barry Pollard, Bastien Bouclet, Bernhard Walle, Bylon2 on github,
  Christophe Dervieux, Christoph M. Becker, Dagobert Michelsen, Dan Fandrich,
  Daniel Silverstone, Daniel Stenberg, Denis Chaplygin, Emil Engler,

  Francois Rivard, George Liu, Gilles Vollant, Griffin Downs, Harry Sintonen,
  Ilya Kosarev, infinnovation-dev on github, Jacob Barthelmeh, Javier Blazquez,
  Jens Finkhaeuser, Jeremy Lainé, Jeroen Ooms, Jimmy Gaussen, Joel Depooter,
  Jojojov on github, jzinn on github, Kamil Dudka, Kunal Ekawde, Lucas Pardue,
  Lucas Severo, Marcel Hernandez, Marcel Raad, Martin Gartner, Max Dymond,
  Michael Kaufmann, Michał Janiszewski, momala454 on github,
  Nathaniel J. Smith, Niall O'Reilly, nico-abram on github,
  Nikos Mavrogiannopoulos, Patrick Monnerat, Paul B. Omta, Paul Dreik,

  Peter Sumatra, Philippe Marguinaud, Piotr Komborski, Ray Satiro,
  Richard Alcock, Roland Hieber, Samuel Surtees, Sebastian Haglund,
  Spezifant on github, Stian Soiland-Reyes, SumatraPeter on github,
  Tatsuhiro Tsujikawa, Tom van der Woerdt, Trivikram Kamat,
  Valerii Zapodovnikov, Vilhelm Prytz, Yechiel Kalmenson, Zenju on github,
  (68 contributors)

        Thanks! (and sorry if I forgot to mention someone)

References to bug reports and discussions on issues:

 [1] = https://curl.haxx.se/bug/?i=4272
 [2] = https://curl.haxx.se/bug/?i=4322
 [3] = https://curl.haxx.se/bug/?i=4328
 [4] = https://curl.haxx.se/bug/?i=4321
 [5] = https://curl.haxx.se/mail/lib-2019-09/0061.html
 [6] = https://curl.haxx.se/bug/?i=4348
 [7] = https://curl.haxx.se/bug/?i=4368
 [8] = https://curl.haxx.se/bug/?i=4365
 [9] = https://curl.haxx.se/bug/?i=4366
 [10] = https://curl.haxx.se/bug/?i=4363
 [11] = https://curl.haxx.se/bug/?i=4358
 [12] = https://curl.haxx.se/bug/?i=4350
 [13] = https://curl.haxx.se/bug/?i=4352
 [14] = https://curl.haxx.se/bug/?i=4324
 [15] = https://curl.haxx.se/bug/?i=4339
 [16] = https://curl.haxx.se/bug/?i=4332
 [17] = https://curl.haxx.se/bug/?i=4326
 [18] = https://curl.haxx.se/bug/?i=4325
 [19] = https://curl.haxx.se/bug/?i=4336
 [20] = https://curl.haxx.se/bug/?i=4329
 [21] = https://curl.haxx.se/bug/?i=4338
 [22] = https://curl.haxx.se/bug/?i=4349
 [23] = https://curl.haxx.se/bug/?i=4381
 [24] = https://curl.haxx.se/bug/?i=4374
 [25] = https://curl.haxx.se/bug/?i=4392
 [26] = https://curl.haxx.se/bug/?i=4389
 [27] = https://curl.haxx.se/bug/?i=4386
 [28] = https://curl.haxx.se/bug/?i=4382
 [29] = https://curl.haxx.se/bug/?i=4383
 [30] = https://curl.haxx.se/bug/?i=4387
 [31] = https://curl.haxx.se/bug/?i=4395
 [32] = https://curl.haxx.se/bug/?i=4394
 [33] = https://curl.haxx.se/bug/?i=4393
 [34] = https://curl.haxx.se/bug/?i=4397
 [35] = https://curl.haxx.se/bug/?i=4435
 [36] = https://curl.haxx.se/bug/?i=4428
 [37] = https://curl.haxx.se/bug/?i=4415
 [38] = https://curl.haxx.se/bug/?i=4425
 [39] = https://curl.haxx.se/bug/?i=4431
 [40] = https://curl.haxx.se/bug/?i=4430
 [41] = https://curl.haxx.se/bug/?i=4411
 [42] = https://curl.haxx.se/bug/?i=3760
 [43] = https://curl.haxx.se/bug/?i=4421
 [44] = https://curl.haxx.se/bug/?i=4403
 [45] = https://curl.haxx.se/bug/?i=4412
 [46] = https://curl.haxx.se/bug/?i=4407
 [47] = https://curl.haxx.se/bug/?i=4214
 [48] = https://curl.haxx.se/bug/?i=4406
 [49] = https://curl.haxx.se/bug/?i=4400
 [50] = https://curl.haxx.se/bug/?i=4398
 [51] = https://curl.haxx.se/bug/?i=4399
 [52] = https://curl.haxx.se/bug/?i=4445
 [53] = https://curl.haxx.se/bug/?i=4447
 [54] = https://curl.haxx.se/bug/?i=4393
 [55] = https://curl.haxx.se/bug/?i=4410
 [56] = https://curl.haxx.se/bug/?i=4310
 [57] = https://curl.haxx.se/bug/?i=4444
 [58] = https://curl.haxx.se/bug/?i=4433
 [59] = https://curl.haxx.se/bug/?i=4441
 [60] = https://curl.haxx.se/bug/?i=4443
 [61] = https://curl.haxx.se/bug/?i=4437
 [62] = https://curl.haxx.se/bug/?i=4424
 [63] = https://curl.haxx.se/bug/?i=4429
 [64] = https://curl.haxx.se/bug/?i=4465
 [65] = https://curl.haxx.se/bug/?i=4308
 [66] = https://curl.haxx.se/bug/?i=4457
 [67] = https://curl.haxx.se/bug/?i=4455
 [68] = https://curl.haxx.se/bug/?i=4303
 [69] = https://curl.haxx.se/bug/?i=4454
 [70] = https://curl.haxx.se/bug/?i=4446
 [71] = https://curl.haxx.se/bug/?i=4011
 [72] = https://curl.haxx.se/bug/?i=4461
 [73] = https://curl.haxx.se/bug/?i=4422
 [74] = https://curl.haxx.se/bug/?i=4469
 [75] = https://curl.haxx.se/bug/?i=4471
 [76] = https://curl.haxx.se/bug/?i=4467
 [77] = https://curl.haxx.se/bug/?i=4460
 [78] = https://curl.haxx.se/bug/?i=4486
 [79] = https://curl.haxx.se/bug/?i=4498
 [80] = https://curl.haxx.se/bug/?i=4491
 [81] = https://curl.haxx.se/bug/?i=4488
 [82] = https://curl.haxx.se/bug/?i=4484
 [83] = https://curl.haxx.se/bug/?i=4483
 [84] = https://curl.haxx.se/bug/?i=4482
 [85] = https://curl.haxx.se/bug/?i=4466
 [86] = https://curl.haxx.se/bug/?i=4506
 [87] = https://curl.haxx.se/bug/?i=4507
 [88] = https://curl.haxx.se/bug/?i=4496
 [89] = https://curl.haxx.se/bug/?i=4503
 [90] = https://curl.haxx.se/bug/?i=4502
 [91] = https://curl.haxx.se/bug/?i=4511
 [92] = https://curl.haxx.se/bug/?i=4512
 [93] = https://curl.haxx.se/bug/?i=4531
 [94] = https://curl.haxx.se/bug/?i=4526
 [95] = https://curl.haxx.se/bug/?i=4523
 [96] = https://curl.haxx.se/bug/?i=4518
 [97] = https://curl.haxx.se/bug/?i=4520
 [98] = https://curl.haxx.se/bug/?i=4508
 [99] = https://curl.haxx.se/bug/?i=4499
 [100] = https://curl.haxx.se/bug/?i=4551
 [101] = https://curl.haxx.se/bug/?i=4547
 [102] = https://curl.haxx.se/bug/?i=4552
 [103] = https://curl.haxx.se/mail/lib-2019-10/0104.html
 [104] = https://curl.haxx.se/bug/?i=4487
 [105] = https://curl.haxx.se/bug/?i=4509
 [106] = https://curl.haxx.se/bug/?i=4539
 [107] = https://curl.haxx.se/bug/?i=4463
 [108] = https://curl.haxx.se/bug/?i=4535
 [109] = https://curl.haxx.se/bug/?i=4529
 [110] = https://curl.haxx.se/bug/?i=4555
Changes to jni/curl/buildconf.bat.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
rem ***************************************************************************
rem *                                  _   _ ____  _
rem *  Project                     ___| | | |  _ \| |
rem *                             / __| | | | |_) | |
rem *                            | (__| |_| |  _ <| |___
rem *                             \___|\___/|_| \_\_____|
rem *
rem * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
rem *
rem * This software is licensed as described in the file COPYING, which
rem * you should have received as part of this distribution. The terms
rem * are also available at https://curl.haxx.se/docs/copyright.html.
rem *
rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
rem * copies of the Software, and permit persons to whom the Software is








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
rem ***************************************************************************
rem *                                  _   _ ____  _
rem *  Project                     ___| | | |  _ \| |
rem *                             / __| | | | |_) | |
rem *                            | (__| |_| |  _ <| |___
rem *                             \___|\___/|_| \_\_____|
rem *
rem * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
rem *
rem * This software is licensed as described in the file COPYING, which
rem * you should have received as part of this distribution. The terms
rem * are also available at https://curl.haxx.se/docs/copyright.html.
rem *
rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
rem * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/configure.
1123
1124
1125
1126
1127
1128
1129

1130
1131
1132
1133
1134
1135
1136
enable_warnings
enable_werror
enable_curldebug
enable_symbol_hiding
enable_hidden_symbols
enable_ares
enable_rt

enable_code_coverage
enable_dependency_tracking
enable_largefile
enable_shared
enable_static
with_pic
enable_fast_install







>







1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
enable_warnings
enable_werror
enable_curldebug
enable_symbol_hiding
enable_hidden_symbols
enable_ares
enable_rt
enable_esni
enable_code_coverage
enable_dependency_tracking
enable_largefile
enable_shared
enable_static
with_pic
enable_fast_install
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
with_amissl
with_ssl
with_egd_socket
with_random
enable_openssl_auto_load_config
with_gnutls
with_mbedtls
with_cyassl
with_wolfssl
with_mesalink
with_nss
with_ca_bundle
with_ca_path
with_ca_fallback
with_libpsl







<







1173
1174
1175
1176
1177
1178
1179

1180
1181
1182
1183
1184
1185
1186
with_amissl
with_ssl
with_egd_socket
with_random
enable_openssl_auto_load_config
with_gnutls
with_mbedtls

with_wolfssl
with_mesalink
with_nss
with_ca_bundle
with_ca_path
with_ca_fallback
with_libpsl
1873
1874
1875
1876
1877
1878
1879


1880
1881
1882
1883
1884
1885
1886
  --disable-symbol-hiding Disable hiding of library internal symbols
  --enable-hidden-symbols To be deprecated, use --enable-symbol-hiding
  --disable-hidden-symbols
                          To be deprecated, use --disable-symbol-hiding
  --enable-ares[=PATH]    Enable c-ares for DNS lookups
  --disable-ares          Disable c-ares for DNS lookups
  --disable-rt            disable dependency on -lrt


  --enable-code-coverage  Provide code coverage
  --enable-dependency-tracking
                          do not reject slow dependency extractors
  --disable-dependency-tracking
                          speeds up one-time build
  --disable-largefile     omit support for large files
  --enable-shared[=PKGS]  build shared libraries [default=yes]







>
>







1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
  --disable-symbol-hiding Disable hiding of library internal symbols
  --enable-hidden-symbols To be deprecated, use --enable-symbol-hiding
  --disable-hidden-symbols
                          To be deprecated, use --disable-symbol-hiding
  --enable-ares[=PATH]    Enable c-ares for DNS lookups
  --disable-ares          Disable c-ares for DNS lookups
  --disable-rt            disable dependency on -lrt
  --enable-esni           Enable ESNI support
  --disable-esni          Disable ESNI support
  --enable-code-coverage  Provide code coverage
  --enable-dependency-tracking
                          do not reject slow dependency extractors
  --disable-dependency-tracking
                          speeds up one-time build
  --disable-largefile     omit support for large files
  --enable-shared[=PKGS]  build shared libraries [default=yes]
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
  --with-random=FILE      read randomness from FILE (default=/dev/urandom)
  --with-gnutls=PATH      where to look for GnuTLS, PATH points to the
                          installation root
  --without-gnutls        disable GnuTLS detection
  --with-mbedtls=PATH     where to look for mbedTLS, PATH points to the
                          installation root
  --without-mbedtls       disable mbedTLS detection
  --with-cyassl=PATH      where to look for CyaSSL, PATH points to the
                          installation root (default: system lib default)
  --without-cyassl        disable CyaSSL detection
  --with-wolfssl=PATH     where to look for WolfSSL, PATH points to the
                          installation root (default: system lib default)
  --without-wolfssl       disable WolfSSL detection
  --with-mesalink=PATH    where to look for MesaLink, PATH points to the
                          installation root
  --without-mesalink      disable MesaLink detection
  --with-nss=PATH         where to look for NSS, PATH points to the







<
<
<







2024
2025
2026
2027
2028
2029
2030



2031
2032
2033
2034
2035
2036
2037
  --with-random=FILE      read randomness from FILE (default=/dev/urandom)
  --with-gnutls=PATH      where to look for GnuTLS, PATH points to the
                          installation root
  --without-gnutls        disable GnuTLS detection
  --with-mbedtls=PATH     where to look for mbedTLS, PATH points to the
                          installation root
  --without-mbedtls       disable mbedTLS detection



  --with-wolfssl=PATH     where to look for WolfSSL, PATH points to the
                          installation root (default: system lib default)
  --without-wolfssl       disable WolfSSL detection
  --with-mesalink=PATH    where to look for MesaLink, PATH points to the
                          installation root
  --without-mesalink      disable MesaLink detection
  --with-nss=PATH         where to look for NSS, PATH points to the
3326
3327
3328
3329
3330
3331
3332































3333
3334
3335
3336
3337
3338
3339
    *)
            dontwant_rt="no"
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
      ;;
  esac

































#
# Check that 'XC_CONFIGURE_PREAMBLE' has already run.
#

if test -z "$xc_configure_preamble_result"; then
  as_fn_error $? "xc_configure_preamble_result not set (internal problem)" "$LINENO" 5







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
    *)
            dontwant_rt="no"
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
      ;;
  esac


  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable ESNI support" >&5
$as_echo_n "checking whether to enable ESNI support... " >&6; }
  OPT_ESNI="default"
  # Check whether --enable-esni was given.
if test "${enable_esni+set}" = set; then :
  enableval=$enable_esni; OPT_ESNI=$enableval
fi

  case "$OPT_ESNI" in
    no)
            want_esni="no"
      curl_esni_msg="no      (--enable-esni)"
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
      ;;
    default)
            want_esni="no"
      curl_esni_msg="no      (--enable-esni)"
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
      ;;
    *)
            want_esni="yes"
      curl_esni_msg="enabled (--disable-esni)"
      experimental="esni"
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
      ;;
  esac


#
# Check that 'XC_CONFIGURE_PREAMBLE' has already run.
#

if test -z "$xc_configure_preamble_result"; then
  as_fn_error $? "xc_configure_preamble_result not set (internal problem)" "$LINENO" 5
21811
21812
21813
21814
21815
21816
21817
21818
21819
21820
21821
21822
21823
21824
21825
21826
21827
21828
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
  conftest.$ac_objext conftest.beam conftest.$ac_ext
fi

fi


if test "$ipv6" = "yes"; then
  curl_ipv6_msg="enabled"
fi

# Check if struct sockaddr_in6 have sin6_scope_id member
if test "$ipv6" = yes; then
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if struct sockaddr_in6 has sin6_scope_id member" >&5
$as_echo_n "checking if struct sockaddr_in6 has sin6_scope_id member... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */








<
<
<
<







21841
21842
21843
21844
21845
21846
21847




21848
21849
21850
21851
21852
21853
21854
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
  conftest.$ac_objext conftest.beam conftest.$ac_ext
fi

fi






# Check if struct sockaddr_in6 have sin6_scope_id member
if test "$ipv6" = yes; then
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if struct sockaddr_in6 has sin6_scope_id member" >&5
$as_echo_n "checking if struct sockaddr_in6 has sin6_scope_id member... " >&6; }
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

24448
24449
24450
24451
24452
24453
24454
24455
24456
24457
24458
24459
24460
24461
24462
24463
24464
24465
24466
24467
24468
24469
24470
24471
24472
24473
24474
24475
24476
24477
24478
24479
24480
24481
24482
24483
24484
24485
24486
24487
24488
24489
24490
24491
24492
24493
24494
24495
24496
24497
24498
24499
24500
24501
24502
24503
24504
24505
24506
24507
24508
24509
24510
24511
24512
24513
24514
24515
24516
24517
24518
24519
24520
24521
24522
24523
24524
24525
24526
24527
24528
24529
24530
24531
24532
24533
24534
24535
24536
24537
24538
24539
24540
24541
24542
24543
24544
24545
24546
24547
24548
24549
24550
24551
24552
24553
24554
24555
24556
24557
24558
24559
24560
24561
24562
24563
24564
24565
24566
24567
24568
24569
24570
24571
24572
24573
24574
24575
24576
24577
24578
24579
24580
24581
24582
24583
24584
24585
24586
24587
24588
24589
24590
24591
24592
24593
24594
24595
24596
24597
24598
24599
24600
24601
24602
24603
24604
24605
24606
24607
24608
24609
24610
24611
24612
24613
24614
24615
24616
24617
24618
24619
24620
24621
24622
24623
24624
24625
24626
24627
24628
24629
24630
24631
24632
24633
24634
24635
24636
24637
24638
24639
24640
24641
24642
24643
24644
24645
24646
24647
24648
24649
24650
24651
24652
24653
24654
24655
24656
24657
24658
24659
24660
24661
24662
24663
24664
24665
24666
24667
24668
24669
24670
24671
24672
24673
24674
24675
24676
24677
24678
24679
fi


OPT_WOLFSSL=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS

# Check whether --with-cyassl was given.
if test "${with_cyassl+set}" = set; then :
  withval=$with_cyassl; OPT_WOLFSSL=$withval
fi



# Check whether --with-wolfssl was given.
if test "${with_wolfssl+set}" = set; then :
  withval=$with_wolfssl; OPT_WOLFSSL=$withval
fi


if test -z "$ssl_backends" -o "x$OPT_WOLFSSL" != xno; then
  ssl_msg=

  if test X"$OPT_WOLFSSL" != Xno; then

    if test "$OPT_WOLFSSL" = "yes"; then
      OPT_WOLFSSL=""
    fi


    cyassllibname=cyassl

    if test -z "$OPT_WOLFSSL" ; then

      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CyaSSL_Init in -lcyassl" >&5
$as_echo_n "checking for CyaSSL_Init in -lcyassl... " >&6; }
if ${ac_cv_lib_cyassl_CyaSSL_Init+:} false; then :
  $as_echo_n "(cached) " >&6
else
  ac_check_lib_save_LIBS=$LIBS
LIBS="-lcyassl  $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#ifdef __cplusplus
extern "C"
#endif
char CyaSSL_Init ();
int main (void)
{
return CyaSSL_Init ();
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
  ac_cv_lib_cyassl_CyaSSL_Init=yes
else
  ac_cv_lib_cyassl_CyaSSL_Init=no
fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cyassl_CyaSSL_Init" >&5
$as_echo "$ac_cv_lib_cyassl_CyaSSL_Init" >&6; }
if test "x$ac_cv_lib_cyassl_CyaSSL_Init" = xyes; then :


$as_echo "#define USE_WOLFSSL 1" >>confdefs.h

         USE_WOLFSSL=1

         WOLFSSL_ENABLED=1
         USE_WOLFSSL="yes"
         ssl_msg="CyaSSL"
	 test cyassl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes

fi

    fi

    addld=""
    addlib=""
    addcflags=""
    cyassllib=""

    if test "x$USE_WOLFSSL" != "xyes"; then
            addld=-L$OPT_WOLFSSL/lib$libsuff
      addcflags=-I$OPT_WOLFSSL/include
      cyassllib=$OPT_WOLFSSL/lib$libsuff

      LDFLAGS="$LDFLAGS $addld"
      if test "$addcflags" != "-I/usr/include"; then
         CPPFLAGS="$CPPFLAGS $addcflags"
      fi

      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CyaSSL_Init in -lcyassl" >&5
$as_echo_n "checking for CyaSSL_Init in -lcyassl... " >&6; }
if ${ac_cv_lib_cyassl_CyaSSL_Init+:} false; then :
  $as_echo_n "(cached) " >&6
else
  ac_check_lib_save_LIBS=$LIBS
LIBS="-lcyassl  $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


#ifdef __cplusplus
extern "C"
#endif
char CyaSSL_Init ();
int main (void)
{
return CyaSSL_Init ();
 ;
 return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
  ac_cv_lib_cyassl_CyaSSL_Init=yes
else
  ac_cv_lib_cyassl_CyaSSL_Init=no
fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cyassl_CyaSSL_Init" >&5
$as_echo "$ac_cv_lib_cyassl_CyaSSL_Init" >&6; }
if test "x$ac_cv_lib_cyassl_CyaSSL_Init" = xyes; then :


$as_echo "#define USE_WOLFSSL 1" >>confdefs.h

       USE_WOLFSSL=1

       WOLFSSL_ENABLED=1
       USE_WOLFSSL="yes"
       ssl_msg="CyaSSL"
       test cyassl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes

else

         CPPFLAGS=$_cppflags
         LDFLAGS=$_ldflags
         cyassllib=""

fi

    fi

    addld=""
    addlib=""
    addcflags=""

    if test "x$USE_WOLFSSL" != "xyes"; then
            addld=-L$OPT_WOLFSSL/lib$libsuff
      addcflags=-I$OPT_WOLFSSL/include
      cyassllib=$OPT_WOLFSSL/lib$libsuff

      LDFLAGS="$LDFLAGS $addld"
      if test "$addcflags" != "-I/usr/include"; then
         CPPFLAGS="$CPPFLAGS $addcflags"
      fi

      cyassllibname=wolfssl
      my_ac_save_LIBS="$LIBS"
      LIBS="-l$cyassllibname -lm $LIBS"

      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CyaSSL_Init in -lwolfssl" >&5
$as_echo_n "checking for CyaSSL_Init in -lwolfssl... " >&6; }
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


/* These aren't needed for detection and confuse WolfSSL.
   They are set up properly later if it is detected.  */
#undef SIZEOF_LONG
#undef SIZEOF_LONG_LONG
#include <cyassl/ssl.h>

int main (void)
{

	  return CyaSSL_Init();

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_link "$LINENO"; then :

         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }

$as_echo "#define USE_WOLFSSL 1" >>confdefs.h

         USE_WOLFSSL=1

         WOLFSSL_ENABLED=1
         USE_WOLFSSL="yes"
         ssl_msg="WolfSSL"
	 test cyassl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes

else

         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
         CPPFLAGS=$_cppflags
         LDFLAGS=$_ldflags
         cyassllib=""

fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
      LIBS="$my_ac_save_LIBS"
    fi

    if test "x$USE_WOLFSSL" = "xyes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: detected $cyassllibname" >&5
$as_echo "$as_me: detected $cyassllibname" >&6;}
      check_for_ca_bundle=1

            { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
$as_echo_n "checking size of long long... " >&6; }
if ${ac_cv_sizeof_long_long+:} false; then :
  $as_echo_n "(cached) " >&6
else







<
<
<
<
<
<

















<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<



<


|

|






<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

|

|
|








|




|


















|







|








|
|







24474
24475
24476
24477
24478
24479
24480






24481
24482
24483
24484
24485
24486
24487
24488
24489
24490
24491
24492
24493
24494
24495
24496
24497






















































24498
24499
24500

24501
24502
24503
24504
24505
24506
24507
24508
24509
24510
24511






































































24512
24513
24514
24515
24516
24517
24518
24519
24520
24521
24522
24523
24524
24525
24526
24527
24528
24529
24530
24531
24532
24533
24534
24535
24536
24537
24538
24539
24540
24541
24542
24543
24544
24545
24546
24547
24548
24549
24550
24551
24552
24553
24554
24555
24556
24557
24558
24559
24560
24561
24562
24563
24564
24565
24566
24567
24568
24569
24570
24571
24572
24573
24574
fi


OPT_WOLFSSL=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS








# Check whether --with-wolfssl was given.
if test "${with_wolfssl+set}" = set; then :
  withval=$with_wolfssl; OPT_WOLFSSL=$withval
fi


if test -z "$ssl_backends" -o "x$OPT_WOLFSSL" != xno; then
  ssl_msg=

  if test X"$OPT_WOLFSSL" != Xno; then

    if test "$OPT_WOLFSSL" = "yes"; then
      OPT_WOLFSSL=""
    fi























































    addld=""
    addlib=""
    addcflags=""


    if test "x$USE_WOLFSSL" != "xyes"; then
      addld=-L$OPT_WOLFSSL/lib$libsuff
      addcflags=-I$OPT_WOLFSSL/include
      wolfssllibpath=$OPT_WOLFSSL/lib$libsuff

      LDFLAGS="$LDFLAGS $addld"
      if test "$addcflags" != "-I/usr/include"; then
         CPPFLAGS="$CPPFLAGS $addcflags"
      fi







































































      my_ac_save_LIBS="$LIBS"
      LIBS="-lwolfssl -lm $LIBS"

      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wolfSSL_Init in -lwolfssl" >&5
$as_echo_n "checking for wolfSSL_Init in -lwolfssl... " >&6; }
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */


/* These aren't needed for detection and confuse WolfSSL.
   They are set up properly later if it is detected.  */
#undef SIZEOF_LONG
#undef SIZEOF_LONG_LONG
#include <wolfssl/ssl.h>

int main (void)
{

	  return wolfSSL_Init();

 ;
 return 0;
}

_ACEOF
if ac_fn_c_try_link "$LINENO"; then :

         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }

$as_echo "#define USE_WOLFSSL 1" >>confdefs.h

         USE_WOLFSSL=1

         WOLFSSL_ENABLED=1
         USE_WOLFSSL="yes"
         ssl_msg="WolfSSL"
	 test wolfssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes

else

         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
         CPPFLAGS=$_cppflags
         LDFLAGS=$_ldflags
         wolfssllibpath=""

fi
rm -f core conftest.err conftest.$ac_objext \
    conftest$ac_exeext conftest.$ac_ext
      LIBS="$my_ac_save_LIBS"
    fi

    if test "x$USE_WOLFSSL" = "xyes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: detected wolfSSL" >&5
$as_echo "$as_me: detected wolfSSL" >&6;}
      check_for_ca_bundle=1

            { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
$as_echo_n "checking size of long long... " >&6; }
if ${ac_cv_sizeof_long_long+:} false; then :
  $as_echo_n "(cached) " >&6
else
24708
24709
24710
24711
24712
24713
24714
24715
24716
24717
24718
24719
24720
24721
24722
24723
24724
24725
24726
24727
24728
24729
24730
24731
24732
24733
24734
24735
24736
24737
24738
24739
24740
24741
24742
24743
24744

cat >>confdefs.h <<_ACEOF
#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
_ACEOF



      LIBS="-l$cyassllibname -lm $LIBS"

                  for ac_func in wolfSSLv3_client_method \
                     wolfSSL_get_peer_certificate \
                     wolfSSL_UseALPN
do :
  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
  cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF

fi
done


      if test -n "$cyassllib"; then
                                        if test "x$cross_compiling" != "xyes"; then
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$cyassllib"
          export CURL_LIBRARY_PATH
          { $as_echo "$as_me:${as_lineno-$LINENO}: Added $cyassllib to CURL_LIBRARY_PATH" >&5
$as_echo "$as_me: Added $cyassllib to CURL_LIBRARY_PATH" >&6;}
        fi
      fi

    fi

  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"







|
















|

|

|
|







24603
24604
24605
24606
24607
24608
24609
24610
24611
24612
24613
24614
24615
24616
24617
24618
24619
24620
24621
24622
24623
24624
24625
24626
24627
24628
24629
24630
24631
24632
24633
24634
24635
24636
24637
24638
24639

cat >>confdefs.h <<_ACEOF
#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
_ACEOF



      LIBS="-lwolfssl -lm $LIBS"

                  for ac_func in wolfSSLv3_client_method \
                     wolfSSL_get_peer_certificate \
                     wolfSSL_UseALPN
do :
  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
  cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF

fi
done


      if test -n "$wolfssllibpath"; then
                                        if test "x$cross_compiling" != "xyes"; then
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$wolfssllibpath"
          export CURL_LIBRARY_PATH
          { $as_echo "$as_me:${as_lineno-$LINENO}: Added $wolfssllibpath to CURL_LIBRARY_PATH" >&5
$as_echo "$as_me: Added $wolfssllibpath to CURL_LIBRARY_PATH" >&6;}
        fi
      fi

    fi

  fi
  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
41445
41446
41447
41448
41449
41450
41451

41452
41453
41454
41455
41456
41457
41458
if test "$ipv6" = "yes"; then
  if test "$curl_cv_func_getaddrinfo" = "yes"; then

$as_echo "#define ENABLE_IPV6 1" >>confdefs.h

    IPV6_ENABLED=1


  fi
fi


            #
  tst_method="unknown"








>







41340
41341
41342
41343
41344
41345
41346
41347
41348
41349
41350
41351
41352
41353
41354
if test "$ipv6" = "yes"; then
  if test "$curl_cv_func_getaddrinfo" = "yes"; then

$as_echo "#define ENABLE_IPV6 1" >>confdefs.h

    IPV6_ENABLED=1

    curl_ipv6_msg="enabled"
  fi
fi


            #
  tst_method="unknown"

42617
42618
42619
42620
42621
42622
42623



































42624
42625
42626
42627
42628
42629
42630
if test "$enable_altsvc" = "yes"; then

$as_echo "#define USE_ALTSVC 1" >>confdefs.h

  experimental="$experimental alt-svc"
fi





































  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether hiding of library internal symbols will actually happen" >&5
$as_echo_n "checking whether hiding of library internal symbols will actually happen... " >&6; }
  CFLAG_CURL_SYMBOL_HIDING=""
  doing_symbol_hiding="no"
  if test x"$curl_cv_native_windows" != "xyes" &&
    test "$want_symbol_hiding" = "yes" &&







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







42513
42514
42515
42516
42517
42518
42519
42520
42521
42522
42523
42524
42525
42526
42527
42528
42529
42530
42531
42532
42533
42534
42535
42536
42537
42538
42539
42540
42541
42542
42543
42544
42545
42546
42547
42548
42549
42550
42551
42552
42553
42554
42555
42556
42557
42558
42559
42560
42561
if test "$enable_altsvc" = "yes"; then

$as_echo "#define USE_ALTSVC 1" >>confdefs.h

  experimental="$experimental alt-svc"
fi

if test "x$want_esni" != "xno"; then
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ESNI support is available" >&5
$as_echo_n "checking whether ESNI support is available... " >&6; }

    ESNI_ENABLED=0
  ESNI_SUPPORT=''

      if test "x$OPENSSL_ENABLED" == "x1"; then
    for ac_func in SSL_get_esni_status
do :
  ac_fn_c_check_func "$LINENO" "SSL_get_esni_status" "ac_cv_func_SSL_get_esni_status"
if test "x$ac_cv_func_SSL_get_esni_status" = xyes; then :
  cat >>confdefs.h <<_ACEOF
#define HAVE_SSL_GET_ESNI_STATUS 1
_ACEOF
 ESNI_SUPPORT="ESNI support available (OpenSSL with SSL_get_esni_status)"
      ESNI_ENABLED=1
fi
done


    fi

    if test "x$ESNI_ENABLED" == "x1"; then

$as_echo "#define USE_ESNI 1" >>confdefs.h

    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ESNI_SUPPORT" >&5
$as_echo "$ESNI_SUPPORT" >&6; }
    experimental="$experimental ESNI"
  else
    as_fn_error $? "--enable-esni ignored: No ESNI support found" "$LINENO" 5
  fi
fi


  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether hiding of library internal symbols will actually happen" >&5
$as_echo_n "checking whether hiding of library internal symbols will actually happen... " >&6; }
  CFLAG_CURL_SYMBOL_HIDING=""
  doing_symbol_hiding="no"
  if test x"$curl_cv_native_windows" != "xyes" &&
    test "$want_symbol_hiding" = "yes" &&
42758
42759
42760
42761
42762
42763
42764




42765
42766
42767
42768
42769
42770
42771
  SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL"
fi

if test "x$OPENSSL_ENABLED" = "x1" -o "x$GNUTLS_ENABLED" = "x1" \
    -o "x$NSS_ENABLED" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
fi







if test "x$CURL_DISABLE_HTTP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
  if test "x$SSL_ENABLED" = "x1"; then
    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"







>
>
>
>







42689
42690
42691
42692
42693
42694
42695
42696
42697
42698
42699
42700
42701
42702
42703
42704
42705
42706
  SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL"
fi

if test "x$OPENSSL_ENABLED" = "x1" -o "x$GNUTLS_ENABLED" = "x1" \
    -o "x$NSS_ENABLED" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
fi

if test "x$ESNI_ENABLED" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES ESNI"
fi



if test "x$CURL_DISABLE_HTTP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
  if test "x$SSL_ENABLED" = "x1"; then
    SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
45730
45731
45732
45733
45734
45735
45736

45737
45738
45739
45740
45741
45742
45743
  RTSP:             ${curl_rtsp_msg}
  RTMP:             ${curl_rtmp_msg}
  Metalink:         ${curl_mtlnk_msg}
  PSL:              ${curl_psl_msg}
  Alt-svc:          ${curl_altsvc_msg}
  HTTP2:            ${curl_h2_msg}
  HTTP3:            ${curl_h3_msg}

  Protocols:        ${SUPPORT_PROTOCOLS}
  Features:         ${SUPPORT_FEATURES}
" >&5
$as_echo "$as_me: Configured to build curl/libcurl:

  Host setup:       ${host}
  Install prefix:   ${prefix}







>







45665
45666
45667
45668
45669
45670
45671
45672
45673
45674
45675
45676
45677
45678
45679
  RTSP:             ${curl_rtsp_msg}
  RTMP:             ${curl_rtmp_msg}
  Metalink:         ${curl_mtlnk_msg}
  PSL:              ${curl_psl_msg}
  Alt-svc:          ${curl_altsvc_msg}
  HTTP2:            ${curl_h2_msg}
  HTTP3:            ${curl_h3_msg}
  ESNI:             ${curl_esni_msg}
  Protocols:        ${SUPPORT_PROTOCOLS}
  Features:         ${SUPPORT_FEATURES}
" >&5
$as_echo "$as_me: Configured to build curl/libcurl:

  Host setup:       ${host}
  Install prefix:   ${prefix}
45772
45773
45774
45775
45776
45777
45778

45779
45780
45781
45782
45783
45784
45785
45786
  RTSP:             ${curl_rtsp_msg}
  RTMP:             ${curl_rtmp_msg}
  Metalink:         ${curl_mtlnk_msg}
  PSL:              ${curl_psl_msg}
  Alt-svc:          ${curl_altsvc_msg}
  HTTP2:            ${curl_h2_msg}
  HTTP3:            ${curl_h3_msg}

  Protocols:        ${SUPPORT_PROTOCOLS}
  Features:         ${SUPPORT_FEATURES}
" >&6;}
if test -n "$experimental"; then
 cat >&2 << _EOF
  WARNING: $experimental enabled but marked EXPERIMENTAL. Use with caution!
_EOF
fi







>








45708
45709
45710
45711
45712
45713
45714
45715
45716
45717
45718
45719
45720
45721
45722
45723
  RTSP:             ${curl_rtsp_msg}
  RTMP:             ${curl_rtmp_msg}
  Metalink:         ${curl_mtlnk_msg}
  PSL:              ${curl_psl_msg}
  Alt-svc:          ${curl_altsvc_msg}
  HTTP2:            ${curl_h2_msg}
  HTTP3:            ${curl_h3_msg}
  ESNI:             ${curl_esni_msg}
  Protocols:        ${SUPPORT_PROTOCOLS}
  Features:         ${SUPPORT_FEATURES}
" >&6;}
if test -n "$experimental"; then
 cat >&2 << _EOF
  WARNING: $experimental enabled but marked EXPERIMENTAL. Use with caution!
_EOF
fi
Changes to jni/curl/configure.ac.
45
46
47
48
49
50
51

52
53
54
55
56
57
58
CURL_CHECK_OPTION_OPTIMIZE
CURL_CHECK_OPTION_WARNINGS
CURL_CHECK_OPTION_WERROR
CURL_CHECK_OPTION_CURLDEBUG
CURL_CHECK_OPTION_SYMBOL_HIDING
CURL_CHECK_OPTION_ARES
CURL_CHECK_OPTION_RT


XC_CHECK_PATH_SEPARATOR

#
# save the configure arguments
#
CONFIGURE_OPTIONS="\"$ac_configure_args\""







>







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
CURL_CHECK_OPTION_OPTIMIZE
CURL_CHECK_OPTION_WARNINGS
CURL_CHECK_OPTION_WERROR
CURL_CHECK_OPTION_CURLDEBUG
CURL_CHECK_OPTION_SYMBOL_HIDING
CURL_CHECK_OPTION_ARES
CURL_CHECK_OPTION_RT
CURL_CHECK_OPTION_ESNI

XC_CHECK_PATH_SEPARATOR

#
# save the configure arguments
#
CONFIGURE_OPTIONS="\"$ac_configure_args\""
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
  ipv6=yes,
  AC_MSG_RESULT(no)
  ipv6=no,
  AC_MSG_RESULT(yes)
  ipv6=yes
))

if test "$ipv6" = "yes"; then
  curl_ipv6_msg="enabled"
fi

# Check if struct sockaddr_in6 have sin6_scope_id member
if test "$ipv6" = yes; then
  AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
  AC_TRY_COMPILE([
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>







<
<
<
<







1223
1224
1225
1226
1227
1228
1229




1230
1231
1232
1233
1234
1235
1236
  ipv6=yes,
  AC_MSG_RESULT(no)
  ipv6=no,
  AC_MSG_RESULT(yes)
  ipv6=yes
))





# Check if struct sockaddr_in6 have sin6_scope_id member
if test "$ipv6" = yes; then
  AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
  AC_TRY_COMPILE([
#include <sys/types.h>
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
dnl ----------------------------------------------------

dnl Default to compiler & linker defaults for wolfSSL files & libraries.
OPT_WOLFSSL=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS
AC_ARG_WITH(cyassl,dnl
AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
  OPT_WOLFSSL=$withval)

dnl provide --with-wolfssl as an alias for --with-cyassl
AC_ARG_WITH(wolfssl,dnl
AC_HELP_STRING([--with-wolfssl=PATH],[where to look for WolfSSL, PATH points to the installation root (default: system lib default)])
AC_HELP_STRING([--without-wolfssl], [disable WolfSSL detection]),
  OPT_WOLFSSL=$withval)

if test -z "$ssl_backends" -o "x$OPT_WOLFSSL" != xno; then
  ssl_msg=

  if test X"$OPT_WOLFSSL" != Xno; then

    if test "$OPT_WOLFSSL" = "yes"; then
      OPT_WOLFSSL=""
    fi

    dnl This should be reworked to use pkg-config instead

    cyassllibname=cyassl

    if test -z "$OPT_WOLFSSL" ; then
      dnl check for lib in system default first

      AC_CHECK_LIB(cyassl, CyaSSL_Init,
      dnl libcyassl found, set the variable
       [
         AC_DEFINE(USE_WOLFSSL, 1, [if wolfSSL is enabled])
         AC_SUBST(USE_WOLFSSL, [1])
         WOLFSSL_ENABLED=1
         USE_WOLFSSL="yes"
         ssl_msg="CyaSSL"
	 test cyassl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
        ])
    fi

    addld=""
    addlib=""
    addcflags=""
    cyassllib=""

    if test "x$USE_WOLFSSL" != "xyes"; then
      dnl add the path and test again
      addld=-L$OPT_WOLFSSL/lib$libsuff
      addcflags=-I$OPT_WOLFSSL/include
      cyassllib=$OPT_WOLFSSL/lib$libsuff

      LDFLAGS="$LDFLAGS $addld"
      if test "$addcflags" != "-I/usr/include"; then
         CPPFLAGS="$CPPFLAGS $addcflags"
      fi

      AC_CHECK_LIB(cyassl, CyaSSL_Init,
       [
       AC_DEFINE(USE_WOLFSSL, 1, [if CyaSSL is enabled])
       AC_SUBST(USE_WOLFSSL, [1])
       WOLFSSL_ENABLED=1
       USE_WOLFSSL="yes"
       ssl_msg="CyaSSL"
       test cyassl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
       ],
       [
         CPPFLAGS=$_cppflags
         LDFLAGS=$_ldflags
         cyassllib=""
       ])
    fi

    addld=""
    addlib=""
    addcflags=""

    if test "x$USE_WOLFSSL" != "xyes"; then
      dnl libcyassl renamed to libwolfssl as of 3.4.0
      addld=-L$OPT_WOLFSSL/lib$libsuff
      addcflags=-I$OPT_WOLFSSL/include
      cyassllib=$OPT_WOLFSSL/lib$libsuff

      LDFLAGS="$LDFLAGS $addld"
      if test "$addcflags" != "-I/usr/include"; then
         CPPFLAGS="$CPPFLAGS $addcflags"
      fi

      cyassllibname=wolfssl
      my_ac_save_LIBS="$LIBS"
      LIBS="-l$cyassllibname -lm $LIBS"

      AC_MSG_CHECKING([for CyaSSL_Init in -lwolfssl])
      AC_LINK_IFELSE([
	AC_LANG_PROGRAM([[
/* These aren't needed for detection and confuse WolfSSL.
   They are set up properly later if it is detected.  */
#undef SIZEOF_LONG
#undef SIZEOF_LONG_LONG
#include <cyassl/ssl.h>
	]],[[
	  return CyaSSL_Init();
	]])
      ],[
         AC_MSG_RESULT(yes)
         AC_DEFINE(USE_WOLFSSL, 1, [if wolfSSL is enabled])
         AC_SUBST(USE_WOLFSSL, [1])
         WOLFSSL_ENABLED=1
         USE_WOLFSSL="yes"
         ssl_msg="WolfSSL"
	 test cyassl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
       ],
       [
         AC_MSG_RESULT(no)
         CPPFLAGS=$_cppflags
         LDFLAGS=$_ldflags
         cyassllib=""
       ])
      LIBS="$my_ac_save_LIBS"
    fi

    if test "x$USE_WOLFSSL" = "xyes"; then
      AC_MSG_NOTICE([detected $cyassllibname])
      check_for_ca_bundle=1

      dnl cyassl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
      AX_COMPILE_CHECK_SIZEOF(long long)

      LIBS="-l$cyassllibname -lm $LIBS"

      dnl Recent WolfSSL versions build without SSLv3 by default
      dnl WolfSSL needs configure --enable-opensslextra to have *get_peer*
      AC_CHECK_FUNCS(wolfSSLv3_client_method \
                     wolfSSL_get_peer_certificate \
                     wolfSSL_UseALPN)

      if test -n "$cyassllib"; then
        dnl when shared libs were found in a path that the run-time
        dnl linker doesn't search through, we need to add it to
        dnl CURL_LIBRARY_PATH to prevent further configure tests to fail
        dnl due to this
        if test "x$cross_compiling" != "xyes"; then
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$cyassllib"
          export CURL_LIBRARY_PATH
          AC_MSG_NOTICE([Added $cyassllib to CURL_LIBRARY_PATH])
        fi
      fi

    fi

  fi dnl wolfSSL not disabled








<
<
<
<

<














<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<



<


<


|






<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

|

|






|

|








|





|





|


|


|







|





|

|







2208
2209
2210
2211
2212
2213
2214




2215

2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229



















2230
2231
2232

2233
2234

2235
2236
2237
2238
2239
2240
2241
2242
2243
































2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
dnl ----------------------------------------------------

dnl Default to compiler & linker defaults for wolfSSL files & libraries.
OPT_WOLFSSL=no

_cppflags=$CPPFLAGS
_ldflags=$LDFLAGS






AC_ARG_WITH(wolfssl,dnl
AC_HELP_STRING([--with-wolfssl=PATH],[where to look for WolfSSL, PATH points to the installation root (default: system lib default)])
AC_HELP_STRING([--without-wolfssl], [disable WolfSSL detection]),
  OPT_WOLFSSL=$withval)

if test -z "$ssl_backends" -o "x$OPT_WOLFSSL" != xno; then
  ssl_msg=

  if test X"$OPT_WOLFSSL" != Xno; then

    if test "$OPT_WOLFSSL" = "yes"; then
      OPT_WOLFSSL=""
    fi




















    addld=""
    addlib=""
    addcflags=""


    if test "x$USE_WOLFSSL" != "xyes"; then

      addld=-L$OPT_WOLFSSL/lib$libsuff
      addcflags=-I$OPT_WOLFSSL/include
      wolfssllibpath=$OPT_WOLFSSL/lib$libsuff

      LDFLAGS="$LDFLAGS $addld"
      if test "$addcflags" != "-I/usr/include"; then
         CPPFLAGS="$CPPFLAGS $addcflags"
      fi

































      my_ac_save_LIBS="$LIBS"
      LIBS="-lwolfssl -lm $LIBS"

      AC_MSG_CHECKING([for wolfSSL_Init in -lwolfssl])
      AC_LINK_IFELSE([
	AC_LANG_PROGRAM([[
/* These aren't needed for detection and confuse WolfSSL.
   They are set up properly later if it is detected.  */
#undef SIZEOF_LONG
#undef SIZEOF_LONG_LONG
#include <wolfssl/ssl.h>
	]],[[
	  return wolfSSL_Init();
	]])
      ],[
         AC_MSG_RESULT(yes)
         AC_DEFINE(USE_WOLFSSL, 1, [if wolfSSL is enabled])
         AC_SUBST(USE_WOLFSSL, [1])
         WOLFSSL_ENABLED=1
         USE_WOLFSSL="yes"
         ssl_msg="WolfSSL"
	 test wolfssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
       ],
       [
         AC_MSG_RESULT(no)
         CPPFLAGS=$_cppflags
         LDFLAGS=$_ldflags
         wolfssllibpath=""
       ])
      LIBS="$my_ac_save_LIBS"
    fi

    if test "x$USE_WOLFSSL" = "xyes"; then
      AC_MSG_NOTICE([detected wolfSSL])
      check_for_ca_bundle=1

      dnl wolfssl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
      AX_COMPILE_CHECK_SIZEOF(long long)

      LIBS="-lwolfssl -lm $LIBS"

      dnl Recent WolfSSL versions build without SSLv3 by default
      dnl WolfSSL needs configure --enable-opensslextra to have *get_peer*
      AC_CHECK_FUNCS(wolfSSLv3_client_method \
                     wolfSSL_get_peer_certificate \
                     wolfSSL_UseALPN)

      if test -n "$wolfssllibpath"; then
        dnl when shared libs were found in a path that the run-time
        dnl linker doesn't search through, we need to add it to
        dnl CURL_LIBRARY_PATH to prevent further configure tests to fail
        dnl due to this
        if test "x$cross_compiling" != "xyes"; then
          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$wolfssllibpath"
          export CURL_LIBRARY_PATH
          AC_MSG_NOTICE([Added $wolfssllibpath to CURL_LIBRARY_PATH])
        fi
      fi

    fi

  fi dnl wolfSSL not disabled

4022
4023
4024
4025
4026
4027
4028

4029
4030
4031
4032
4033
4034
4035
])

if test "$ipv6" = "yes"; then
  if test "$curl_cv_func_getaddrinfo" = "yes"; then
    AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
    IPV6_ENABLED=1
    AC_SUBST(IPV6_ENABLED)

  fi
fi

CURL_CHECK_NONBLOCKING_SOCKET

dnl ************************************************************
dnl nroff tool stuff







>







3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
])

if test "$ipv6" = "yes"; then
  if test "$curl_cv_func_getaddrinfo" = "yes"; then
    AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
    IPV6_ENABLED=1
    AC_SUBST(IPV6_ENABLED)
    curl_ipv6_msg="enabled"
  fi
fi

CURL_CHECK_NONBLOCKING_SOCKET

dnl ************************************************************
dnl nroff tool stuff
4492
4493
4494
4495
4496
4497
4498






























4499
4500
4501
4502
4503
4504
4505
       AC_MSG_RESULT(no)
)

if test "$enable_altsvc" = "yes"; then
  AC_DEFINE(USE_ALTSVC, 1, [to enable alt-svc])
  experimental="$experimental alt-svc"
fi































dnl ************************************************************
dnl hiding of library internal symbols
dnl
CURL_CONFIGURE_SYMBOL_HIDING

dnl







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
       AC_MSG_RESULT(no)
)

if test "$enable_altsvc" = "yes"; then
  AC_DEFINE(USE_ALTSVC, 1, [to enable alt-svc])
  experimental="$experimental alt-svc"
fi

dnl *************************************************************
dnl check whether ESNI support, if desired, is actually available
dnl
if test "x$want_esni" != "xno"; then
  AC_MSG_CHECKING([whether ESNI support is available])

  dnl assume NOT and look for sufficient condition
  ESNI_ENABLED=0
  ESNI_SUPPORT=''

  dnl OpenSSL with a chosen ESNI function should be enough
  dnl so more exhaustive checking seems unnecessary for now
  if test "x$OPENSSL_ENABLED" == "x1"; then
    AC_CHECK_FUNCS(SSL_get_esni_status,
      ESNI_SUPPORT="ESNI support available (OpenSSL with SSL_get_esni_status)"
      ESNI_ENABLED=1)

  dnl add 'elif' chain here for additional implementations
  fi

  dnl now deal with whatever we found
  if test "x$ESNI_ENABLED" == "x1"; then
    AC_DEFINE(USE_ESNI, 1, [if ESNI support is available])
    AC_MSG_RESULT($ESNI_SUPPORT)
    experimental="$experimental ESNI"
  else
    AC_MSG_ERROR([--enable-esni ignored: No ESNI support found])
  fi
fi

dnl ************************************************************
dnl hiding of library internal symbols
dnl
CURL_CONFIGURE_SYMBOL_HIDING

dnl
4613
4614
4615
4616
4617
4618
4619




4620
4621
4622
4623
4624
4625
4626
  SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL"
fi

if test "x$OPENSSL_ENABLED" = "x1" -o "x$GNUTLS_ENABLED" = "x1" \
    -o "x$NSS_ENABLED" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
fi





AC_SUBST(SUPPORT_FEATURES)

dnl For supported protocols in pkg-config file
if test "x$CURL_DISABLE_HTTP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
  if test "x$SSL_ENABLED" = "x1"; then







>
>
>
>







4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
  SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL"
fi

if test "x$OPENSSL_ENABLED" = "x1" -o "x$GNUTLS_ENABLED" = "x1" \
    -o "x$NSS_ENABLED" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
fi

if test "x$ESNI_ENABLED" = "x1"; then
  SUPPORT_FEATURES="$SUPPORT_FEATURES ESNI"
fi

AC_SUBST(SUPPORT_FEATURES)

dnl For supported protocols in pkg-config file
if test "x$CURL_DISABLE_HTTP" != "x1"; then
  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
  if test "x$SSL_ENABLED" = "x1"; then
4797
4798
4799
4800
4801
4802
4803

4804
4805
4806
4807
4808
4809
4810
4811
  RTSP:             ${curl_rtsp_msg}
  RTMP:             ${curl_rtmp_msg}
  Metalink:         ${curl_mtlnk_msg}
  PSL:              ${curl_psl_msg}
  Alt-svc:          ${curl_altsvc_msg}
  HTTP2:            ${curl_h2_msg}
  HTTP3:            ${curl_h3_msg}

  Protocols:        ${SUPPORT_PROTOCOLS}
  Features:         ${SUPPORT_FEATURES}
])
if test -n "$experimental"; then
 cat >&2 << _EOF
  WARNING: $experimental enabled but marked EXPERIMENTAL. Use with caution!
_EOF
fi







>








4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
  RTSP:             ${curl_rtsp_msg}
  RTMP:             ${curl_rtmp_msg}
  Metalink:         ${curl_mtlnk_msg}
  PSL:              ${curl_psl_msg}
  Alt-svc:          ${curl_altsvc_msg}
  HTTP2:            ${curl_h2_msg}
  HTTP3:            ${curl_h3_msg}
  ESNI:             ${curl_esni_msg}
  Protocols:        ${SUPPORT_PROTOCOLS}
  Features:         ${SUPPORT_FEATURES}
])
if test -n "$experimental"; then
 cat >&2 << _EOF
  WARNING: $experimental enabled but marked EXPERIMENTAL. Use with caution!
_EOF
fi
Changes to jni/curl/docs/BINDINGS.md.
18
19
20
21
22
23
24


25
26
27
28
29
30
31
[curlcpp](https://github.com/JosephP91/curlcpp) by Giuseppe Persico and [C++
Requests](https://github.com/whoshuu/cpr) by Huu Nguyen

[Ch](https://chcurl.sourceforge.io/) Written by Stephen Nestinger and Jonathan Rogado

Cocoa: [BBHTTP](https://github.com/brunodecarvalho/BBHTTP) written by Bruno de Carvalho
[curlhandle](https://github.com/karelia/curlhandle) Written by Dan Wood



[D](https://dlang.org/library/std/net/curl.html) Written by Kenneth Bogert

[Delphi](https://github.com/Mercury13/curl4delphi) Written by Mikhail Merkuryev

[Dylan](https://dylanlibs.sourceforge.io/) Written by Chris Double








>
>







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[curlcpp](https://github.com/JosephP91/curlcpp) by Giuseppe Persico and [C++
Requests](https://github.com/whoshuu/cpr) by Huu Nguyen

[Ch](https://chcurl.sourceforge.io/) Written by Stephen Nestinger and Jonathan Rogado

Cocoa: [BBHTTP](https://github.com/brunodecarvalho/BBHTTP) written by Bruno de Carvalho
[curlhandle](https://github.com/karelia/curlhandle) Written by Dan Wood

Clojure: [clj-curl](https://github.com/lsevero/clj-curl) by Lucas Severo

[D](https://dlang.org/library/std/net/curl.html) Written by Kenneth Bogert

[Delphi](https://github.com/Mercury13/curl4delphi) Written by Mikhail Merkuryev

[Dylan](https://dylanlibs.sourceforge.io/) Written by Chris Double

49
50
51
52
53
54
55


56
57
58
59
60
61
62


63
64
65
66
67
68
69
70
71
72
73
74

75
76
77
78


79
80
81
82
83
84
85

[Haskell](https://hackage.haskell.org/cgi-bin/hackage-scripts/package/curl) Written by Galois, Inc

[Java](https://github.com/pjlegato/curl-java)

[Julia](https://github.com/forio/Curl.jl) Written by Paul Howe



[Lisp](https://common-lisp.net/project/cl-curl/) Written by Liam Healy

Lua: [luacurl](http://luacurl.luaforge.net/) by Alexander Marinov, [Lua-cURL](https://github.com/Lua-cURL) by Jürgen Hötzel

[Mono](https://forge.novell.com/modules/xfmod/project/?libcurl-mono) Written by Jeffrey Phillips

[.NET](https://sourceforge.net/projects/libcurl-net/) libcurl-net by Jeffrey Phillips



[node.js](https://github.com/JCMais/node-libcurl) node-libcurl by Jonathan Cardoso Machado

[Object-Pascal](https://web.archive.org/web/20020610214926/www.tekool.com/opcurl) Free Pascal, Delphi and Kylix binding written by Christophe Espern.

[OCaml](https://opam.ocaml.org/packages/ocurl/) Written by Lars Nilsson and ygrek

[Pascal](https://web.archive.org/web/20030804091414/houston.quik.com/jkp/curlpas/) Free Pascal, Delphi and Kylix binding written by Jeffrey Pohlmeyer.

Perl: [WWW--Curl](https://github.com/szbalint/WWW--Curl) Maintained by Cris
Bailiff and Bálint Szilakszi,
[perl6-net-curl](https://github.com/azawawi/perl6-net-curl) by Ahmad M. Zawawi


[PHP](https://php.net/curl) Originally written by Sterling Hughes

[PostgreSQL](https://github.com/pramsey/pgsql-http) - HTTP client for PostgreSQL



[Python](http://pycurl.io/) PycURL by Kjetil Jacobsen

[R](https://cran.r-project.org/package=curl)

[Rexx](https://rexxcurl.sourceforge.io/) Written Mark Hessling








>
>







>
>









|


>




>
>







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94

[Haskell](https://hackage.haskell.org/cgi-bin/hackage-scripts/package/curl) Written by Galois, Inc

[Java](https://github.com/pjlegato/curl-java)

[Julia](https://github.com/forio/Curl.jl) Written by Paul Howe

[Kapito](https://github.com/puzza007/katipo) is an Erlang HTTP library around libcurl.

[Lisp](https://common-lisp.net/project/cl-curl/) Written by Liam Healy

Lua: [luacurl](http://luacurl.luaforge.net/) by Alexander Marinov, [Lua-cURL](https://github.com/Lua-cURL) by Jürgen Hötzel

[Mono](https://forge.novell.com/modules/xfmod/project/?libcurl-mono) Written by Jeffrey Phillips

[.NET](https://sourceforge.net/projects/libcurl-net/) libcurl-net by Jeffrey Phillips

[Nim](https://nimble.directory/pkg/libcurl) wrapper for libcurl

[node.js](https://github.com/JCMais/node-libcurl) node-libcurl by Jonathan Cardoso Machado

[Object-Pascal](https://web.archive.org/web/20020610214926/www.tekool.com/opcurl) Free Pascal, Delphi and Kylix binding written by Christophe Espern.

[OCaml](https://opam.ocaml.org/packages/ocurl/) Written by Lars Nilsson and ygrek

[Pascal](https://web.archive.org/web/20030804091414/houston.quik.com/jkp/curlpas/) Free Pascal, Delphi and Kylix binding written by Jeffrey Pohlmeyer.

Perl: [WWW::Curl](https://github.com/szbalint/WWW--Curl) Maintained by Cris
Bailiff and Bálint Szilakszi,
[perl6-net-curl](https://github.com/azawawi/perl6-net-curl) by Ahmad M. Zawawi
[NET::Curl](https://metacpan.org/pod/Net::Curl) by Przemyslaw Iskra

[PHP](https://php.net/curl) Originally written by Sterling Hughes

[PostgreSQL](https://github.com/pramsey/pgsql-http) - HTTP client for PostgreSQL

[PureBasic](https://www.purebasic.com/documentation/http/index.html) uses libcurl in its "native" HTTP subsystem

[Python](http://pycurl.io/) PycURL by Kjetil Jacobsen

[R](https://cran.r-project.org/package=curl)

[Rexx](https://rexxcurl.sourceforge.io/) Written Mark Hessling

Added jni/curl/docs/ESNI.md.






















































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# TLS: ESNI support in curl and libcurl

## Summary

**ESNI** means **Encrypted Server Name Indication**, a TLS 1.3
extension which is currently the subject of an
[IETF Draft][tlsesni].

This file is intended to show the latest current state of ESNI support
in **curl** and **libcurl**.

At end of August 2019, an [experimental fork of curl][niallorcurl],
built using an [experimental fork of OpenSSL][sftcdopenssl], which in
turn provided an implementation of ESNI, was demonstrated
interoperating with a server belonging to the [DEfO
Project][defoproj].

Further sections here describe

-   resources needed for building and demonstrating **curl** support
    for ESNI,

-   progress to date,

-   TODO items, and

-   additional details of specific stages of the progress.

## Resources needed

To build and demonstrate ESNI support in **curl** and/or **libcurl**,
you will need

-   a TLS library, supported by **libcurl**, which implements ESNI;

-   an edition of **curl** and/or **libcurl** which supports the ESNI
    implementation of the chosen TLS library;

-   an environment for building and running **curl**, and at least
    building **OpenSSL**;

-   a server, supporting ESNI, against which to run a demonstration
    and perhaps a specific target URL;

-   some instructions.

The following set of resources is currently known to be available.

| Set  | Component    | Location                      | Remarks                                    |
|:-----|:-------------|:------------------------------|:-------------------------------------------|
| DEfO | TLS library  | [sftcd/openssl][sftcdopenssl] | Tag *esni-2019-08-30* avoids bleeding edge |
|      | curl fork    | [niallor/curl][niallorcurl]   | Tag *esni-2019-08-30* likewise             |
|      | instructions | [ESNI-README][niallorreadme]  |                                            |

## Progress

### PR 4011 (Jun 2019) expected in curl release 7.67.0 (Oct 2019)

-   Details [below](#pr4011);

-   New **curl** feature: `CURL_VERSION_ESNI`;

-   New configuration option: `--enable-esni`;

-   Build-time check for availability of resources needed for ESNI
    support;

-   Pre-processor symbol `USE_ESNI` for conditional compilation of
    ESNI support code, subject to configuration option and
    availability of needed resources.

## TODO

-   (next PR) Add libcurl options to set ESNI parameters.

-   (next PR) Add curl tool command line options to set ESNI parameters.

-   (WIP) Extend DoH functions so that published ESNI parameters can be
    retrieved from DNS instead of being required as options.

-   (WIP) Work with OpenSSL community to finalize ESNI API.

-   Track OpenSSL ESNI API in libcurl

-   Identify and implement any changes needed for CMake.

-   Optimize build-time checking of available resources.

-   Encourage ESNI support work on other TLS/SSL backends.

## Additional detail

### PR 4011

**TLS: Provide ESNI support framework for curl and libcurl**

The proposed change provides a framework to facilitate work to
implement ESNI support in curl and libcurl. It is not intended
either to provide ESNI functionality or to favour any particular
TLS-providing backend. Specifically, the change reserves a
feature bit for ESNI support (symbol `CURL_VERSION_ESNI`),
implements setting and reporting of this bit, includes dummy
book-keeping for the symbol, adds a build-time configuration
option (`--enable-esni`), provides an extensible check for
resources available to provide ESNI support, and defines a
compiler pre-processor symbol (`USE_ESNI`) accordingly.

Proposed-by: @niallor (Niall O'Reilly)\
Encouraged-by: @sftcd (Stephen Farrell)\
See-also: [this message](https://curl.haxx.se/mail/lib-2019-05/0108.html)

Limitations:
-   Book-keeping (symbols-in-versions) needs real release number, not 'DUMMY'.

-   Framework is incomplete, as it covers autoconf, but not CMake.

-   Check for available resources, although extensible, refers only to
    specific work in progress ([described
    here](https://github.com/sftcd/openssl/tree/master/esnistuff)) to
    implement ESNI for OpenSSL, as this is the immediate motivation
    for the proposed change.

## References

CloudFlare blog: [Encrypting SNI: Fixing One of the Core Internet Bugs][corebug]

Cloudflare blog: [Encrypt it or lose it: how encrypted SNI works][esniworks]

IETF Draft: [Encrypted Server Name Indication for TLS 1.3][tlsesni]

---

[tlsesni]:		https://datatracker.ietf.org/doc/draft-ietf-tls-esni/
[esniworks]:	https://blog.cloudflare.com/encrypted-sni/
[corebug]:		https://blog.cloudflare.com/esni/
[defoproj]:		https://defo.ie/
[sftcdopenssl]: https://github.com/sftcd/openssl/
[niallorcurl]:	https://github.com/niallor/curl/
[niallorreadme]: https://github.com/niallor/curl/blob/master/ESNI-README.md
Changes to jni/curl/docs/HTTP3.md.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119


120
121


# ngtcp2 version

## Build

Build (patched) OpenSSL

     % git clone --depth 1 -b openssl-quic-draft-22 https://github.com/tatsuhiro-t/openssl
     % cd openssl
     % ./config enable-tls1_3 --prefix=<somewhere1>
     % make
     % make install_sw

Build nghttp3

     % cd ..
     % git clone https://github.com/ngtcp2/nghttp3
     % cd nghttp3
     % autoreconf -i
     % ./configure --prefix=<somewhere2> --enable-lib-only
     % make
     % make install

Build ngtcp2

     % cd ..
     % git clone -b draft-22 https://github.com/ngtcp2/ngtcp2
     % cd ngtcp2
     % autoreconf -i
     % ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somehere1>/lib" --prefix==<somewhere3>
     % make
     % make install

Build curl

     % cd ..
     % git clone https://github.com/curl/curl
     % cd curl
     % ./buildconf
     % LDFLAGS="-Wl,-rpath,<somewhere1>/lib" ./configure -with-ssl=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
     % make

## Running

Make sure the custom OpenSSL library is the one used at run-time, as otherwise
you'll just get ld.so linker errors.

## Invoke from command line

    curl --http3 https://nghttp2.org:8443/

# quiche version

## build

Clone quiche and BoringSSL:

     % git clone --recursive https://github.com/cloudflare/quiche

Build BoringSSL (it needs to be built manually so it can be reused with curl):

     % cd quiche/deps/boringssl
     % mkdir build
     % cd build
     % cmake -DCMAKE_POSITION_INDEPENDENT_CODE=on ..
     % make -j`nproc`
     % cd ..
     % mkdir .openssl/lib -p
     % cp build/crypto/libcrypto.a build/ssl/libssl.a .openssl/lib
     % ln -s $PWD/include .openssl

Build quiche:

     % cd ../..
     % QUICHE_BSSL_PATH=$PWD/deps/boringssl cargo build --release --features pkg-config-meta

Clone and build curl:

     % cd ..
     % git clone https://github.com/curl/curl
     % cd curl
     % ./buildconf
     % ./configure LDFLAGS="-Wl,-rpath,$PWD/../quiche/target/release" --with-ssl=$PWD/../quiche/deps/boringssl/.openssl --with-quiche=$PWD/../quiche/target/release
     % make -j`nproc`

## Running

Make an HTTP/3 request.

     % src/curl --http3 https://cloudflare-quic.com/
     % src/curl --http3 https://facebook.com/


     % src/curl --http3 https://quic.aiortc.org:4433/
     % src/curl --http3 https://quic.rocks:4433/








|


















|


|









|


<
<
<
<
<
<
<
<
<














|

|















|

|

|

|
|
>
>
|
|
>
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70









71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115

# ngtcp2 version

## Build

Build (patched) OpenSSL

     % git clone --depth 1 -b openssl-quic-draft-23 https://github.com/tatsuhiro-t/openssl
     % cd openssl
     % ./config enable-tls1_3 --prefix=<somewhere1>
     % make
     % make install_sw

Build nghttp3

     % cd ..
     % git clone https://github.com/ngtcp2/nghttp3
     % cd nghttp3
     % autoreconf -i
     % ./configure --prefix=<somewhere2> --enable-lib-only
     % make
     % make install

Build ngtcp2

     % cd ..
     % git clone https://github.com/ngtcp2/ngtcp2
     % cd ngtcp2
     % autoreconf -i
     % ./configure PKG_CONFIG_PATH=<somewhere1>/lib/pkgconfig:<somewhere2>/lib/pkgconfig LDFLAGS="-Wl,-rpath,<somewhere1>/lib" --prefix=<somewhere3>
     % make
     % make install

Build curl

     % cd ..
     % git clone https://github.com/curl/curl
     % cd curl
     % ./buildconf
     % LDFLAGS="-Wl,-rpath,<somewhere1>/lib" ./configure --with-ssl=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
     % make










# quiche version

## build

Clone quiche and BoringSSL:

     % git clone --recursive https://github.com/cloudflare/quiche

Build BoringSSL (it needs to be built manually so it can be reused with curl):

     % cd quiche/deps/boringssl
     % mkdir build
     % cd build
     % cmake -DCMAKE_POSITION_INDEPENDENT_CODE=on ..
     % make
     % cd ..
     % mkdir -p .openssl/lib
     % cp build/crypto/libcrypto.a build/ssl/libssl.a .openssl/lib
     % ln -s $PWD/include .openssl

Build quiche:

     % cd ../..
     % QUICHE_BSSL_PATH=$PWD/deps/boringssl cargo build --release --features pkg-config-meta

Clone and build curl:

     % cd ..
     % git clone https://github.com/curl/curl
     % cd curl
     % ./buildconf
     % ./configure LDFLAGS="-Wl,-rpath,$PWD/../quiche/target/release" --with-ssl=$PWD/../quiche/deps/boringssl/.openssl --with-quiche=$PWD/../quiche/target/release
     % make

## Run

Use HTTP/3 directly:

    curl --http3 https://nghttp2.org:8443/

Upgrade via Alt-Svc:

    curl --alt-svc altsvc.cache https://quic.aiortc.org/

See this [list of public HTTP/3 servers](https://bagder.github.io/HTTP3-test/)
Changes to jni/curl/docs/INSTALL.md.
1
2
3
4
5
6
7
8
9












10
11
12
13
14
15
16
# how to install curl and libcurl

## Installing Binary Packages

Lots of people download binary distributions of curl and libcurl. This
document does not describe how to install curl or libcurl using such a binary
package. This document describes how to compile, build and install curl and
libcurl from source code.













## Building from git

If you get your code off a git repository instead of a release tarball, see
the `GIT-INFO` file in the root directory for specific instructions on how to
proceed.

# Unix









>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# how to install curl and libcurl

## Installing Binary Packages

Lots of people download binary distributions of curl and libcurl. This
document does not describe how to install curl or libcurl using such a binary
package. This document describes how to compile, build and install curl and
libcurl from source code.

## Building using vcpkg

You can download and install curl and libcurl using the [vcpkg](https://github.com/Microsoft/vcpkg/) dependency manager:

    git clone https://github.com/Microsoft/vcpkg.git
    cd vcpkg
    ./bootstrap-vcpkg.sh
    ./vcpkg integrate install
    vcpkg install curl[tool]

The curl port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.

## Building from git

If you get your code off a git repository instead of a release tarball, see
the `GIT-INFO` file in the root directory for specific instructions on how to
proceed.

# Unix
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
If you have OpenSSL installed somewhere else (for example, `/opt/OpenSSL`) and
you have pkg-config installed, set the pkg-config path first, like this:

    env PKG_CONFIG_PATH=/opt/OpenSSL/lib/pkgconfig ./configure --with-ssl

Without pkg-config installed, use this:

   ./configure --with-ssl=/opt/OpenSSL

If you insist on forcing a build without SSL support, even though you may
have OpenSSL installed in your system, you can run configure like this:

   ./configure --without-ssl

If you have OpenSSL installed, but with the libraries in one place and the
header files somewhere else, you have to set the `LDFLAGS` and `CPPFLAGS`
environment variables prior to running configure.  Something like this should
work:

    CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" ./configure







|




|







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
If you have OpenSSL installed somewhere else (for example, `/opt/OpenSSL`) and
you have pkg-config installed, set the pkg-config path first, like this:

    env PKG_CONFIG_PATH=/opt/OpenSSL/lib/pkgconfig ./configure --with-ssl

Without pkg-config installed, use this:

    ./configure --with-ssl=/opt/OpenSSL

If you insist on forcing a build without SSL support, even though you may
have OpenSSL installed in your system, you can run configure like this:

    ./configure --without-ssl

If you have OpenSSL installed, but with the libraries in one place and the
header files somewhere else, you have to set the `LDFLAGS` and `CPPFLAGS`
environment variables prior to running configure.  Something like this should
work:

    CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" ./configure
Changes to jni/curl/docs/KNOWN_BUGS.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

These are problems and bugs known to exist at the time of this release. Feel
free to join in and help us correct one or more of these! Also be sure to
check the changelog of the current development status, as one or more of these
problems may have been fixed or changed somewhat since this was written!

 1. HTTP
 1.1 CURLFORM_CONTENTLEN in an array
 1.3 STARTTRANSFER time is wrong for HTTP POSTs
 1.4 multipart formposts file name encoding
 1.5 Expect-100 meets 417
 1.6 Unnecessary close when 401 received waiting for 100
 1.7 Deflate error after all content was received
 1.8 DoH isn't used for all name resolves when enabled
 1.9 HTTP/2 frames while in the connection pool kill reuse







<







8
9
10
11
12
13
14

15
16
17
18
19
20
21

These are problems and bugs known to exist at the time of this release. Feel
free to join in and help us correct one or more of these! Also be sure to
check the changelog of the current development status, as one or more of these
problems may have been fixed or changed somewhat since this was written!

 1. HTTP

 1.3 STARTTRANSFER time is wrong for HTTP POSTs
 1.4 multipart formposts file name encoding
 1.5 Expect-100 meets 417
 1.6 Unnecessary close when 401 received waiting for 100
 1.7 Deflate error after all content was received
 1.8 DoH isn't used for all name resolves when enabled
 1.9 HTTP/2 frames while in the connection pool kill reuse
51
52
53
54
55
56
57

58
59
60
61
62
63
64
 5.3 curl compiled on OSX 10.13 failed to run on OSX 10.10
 5.4 Cannot compile against a static build of OpenLDAP
 5.5 can't handle Unicode arguments in Windows
 5.6 cmake support gaps
 5.7 Visual Studio project gaps
 5.8 configure finding libs in wrong directory
 5.9 Utilize Requires.private directives in libcurl.pc


 6. Authentication
 6.1 NTLM authentication and unicode
 6.2 MIT Kerberos for Windows build
 6.3 NTLM in system context uses wrong name
 6.4 Negotiate and Kerberos V5 need a fake user name
 6.5 NTLM doesn't support password with § character







>







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 5.3 curl compiled on OSX 10.13 failed to run on OSX 10.10
 5.4 Cannot compile against a static build of OpenLDAP
 5.5 can't handle Unicode arguments in Windows
 5.6 cmake support gaps
 5.7 Visual Studio project gaps
 5.8 configure finding libs in wrong directory
 5.9 Utilize Requires.private directives in libcurl.pc
 5.10 IDN tests failing on Windows / MSYS2

 6. Authentication
 6.1 NTLM authentication and unicode
 6.2 MIT Kerberos for Windows build
 6.3 NTLM in system context uses wrong name
 6.4 Negotiate and Kerberos V5 need a fake user name
 6.5 NTLM doesn't support password with § character
97
98
99
100
101
102
103

104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
 11.4 HTTP test server 'connection-monitor' problems
 11.5 Connection information when using TCP Fast Open
 11.6 slow connect to localhost on Windows
 11.7 signal-based resolver timeouts

 12. LDAP and OpenLDAP
 12.1 OpenLDAP hangs after returning results


 13. TCP/IP
 13.1 --interface for ipv6 binds to unusable IP address

 14 DICT
 14.1 DICT responses show the underlying protocol

==============================================================================

1. HTTP

1.1 CURLFORM_CONTENTLEN in an array

 It is not possible to pass a 64-bit value using CURLFORM_CONTENTLEN with
 CURLFORM_ARRAY, when compiled on 32-bit platforms that support 64-bit
 integers. This is because the underlying structure 'curl_forms' uses a dual
 purpose char* for storing these values in via casting. For more information
 see the now closed related issue:
 https://github.com/curl/curl/issues/608

1.3 STARTTRANSFER time is wrong for HTTP POSTs

 Wrong STARTTRANSFER timer accounting for POST requests Timer works fine with
 GET requests, but while using POST the time for CURLINFO_STARTTRANSFER_TIME
 is wrong. While using POST CURLINFO_STARTTRANSFER_TIME minus
 CURLINFO_PRETRANSFER_TIME is near to zero every time.








>











<
<
<
<
<
<
<
<
<







97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115









116
117
118
119
120
121
122
 11.4 HTTP test server 'connection-monitor' problems
 11.5 Connection information when using TCP Fast Open
 11.6 slow connect to localhost on Windows
 11.7 signal-based resolver timeouts

 12. LDAP and OpenLDAP
 12.1 OpenLDAP hangs after returning results
 12.2 LDAP on Windows does authentication wrong?

 13. TCP/IP
 13.1 --interface for ipv6 binds to unusable IP address

 14 DICT
 14.1 DICT responses show the underlying protocol

==============================================================================

1. HTTP










1.3 STARTTRANSFER time is wrong for HTTP POSTs

 Wrong STARTTRANSFER timer accounting for POST requests Timer works fine with
 GET requests, but while using POST the time for CURLINFO_STARTTRANSFER_TIME
 is wrong. While using POST CURLINFO_STARTTRANSFER_TIME minus
 CURLINFO_PRETRANSFER_TIME is near to zero every time.

424
425
426
427
428
429
430







431
432
433
434
435
436
437
 separate variable that only after all library checks have been performed gets
 appended to LDFLAGS.

5.9 Utilize Requires.private directives in libcurl.pc

 https://github.com/curl/curl/issues/864








6. Authentication

6.1 NTLM authentication and unicode

 NTLM authentication involving unicode user name or password only works
 properly if built with UNICODE defined together with the WinSSL/Schannel
 backend. The original problem was mentioned in:







>
>
>
>
>
>
>







416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
 separate variable that only after all library checks have been performed gets
 appended to LDFLAGS.

5.9 Utilize Requires.private directives in libcurl.pc

 https://github.com/curl/curl/issues/864

5.10 IDN tests failing on Windows / MSYS2

 It seems like MSYS2 does some UTF-8-to-something-else conversion for Windows
 compatibility.

 https://github.com/curl/curl/issues/3747

6. Authentication

6.1 NTLM authentication and unicode

 NTLM authentication involving unicode user name or password only works
 properly if built with UNICODE defined together with the WinSSL/Schannel
 backend. The original problem was mentioned in:
721
722
723
724
725
726
727



728
729
730
731
732
733
734
 descriptors for a single easy handle (currently limited to 5).

 Generic LDAP is synchronous: OK.

 See https://github.com/curl/curl/issues/622 and
     https://curl.haxx.se/mail/lib-2016-01/0101.html





13. TCP/IP

13.1 --interface for ipv6 binds to unusable IP address

 Since IPv6 provides a lot of addresses with different scope, binding to an
 IPv6 address needs to take the proper care so that it doesn't bind to a







>
>
>







720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
 descriptors for a single easy handle (currently limited to 5).

 Generic LDAP is synchronous: OK.

 See https://github.com/curl/curl/issues/622 and
     https://curl.haxx.se/mail/lib-2016-01/0101.html

12.2 LDAP on Windows does authentication wrong?

 https://github.com/curl/curl/issues/3116

13. TCP/IP

13.1 --interface for ipv6 binds to unusable IP address

 Since IPv6 provides a lot of addresses with different scope, binding to an
 IPv6 address needs to take the proper care so that it doesn't bind to a
Changes to jni/curl/docs/Makefile.am.
49
50
51
52
53
54
55

56
57
58
59
60
61
62
 CHECKSRC.md                                    \
 CIPHERS.md                                     \
 CMakeLists.txt                                 \
 CODE_OF_CONDUCT.md                             \
 CODE_STYLE.md                                  \
 CONTRIBUTE.md                                  \
 DEPRECATE.md                                   \

 EXPERIMENTAL.md                                \
 FAQ                                            \
 FEATURES                                       \
 GOVERNANCE.md                                  \
 HELP-US.md                                     \
 HISTORY.md                                     \
 HTTP-COOKIES.md                                \







>







49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 CHECKSRC.md                                    \
 CIPHERS.md                                     \
 CMakeLists.txt                                 \
 CODE_OF_CONDUCT.md                             \
 CODE_STYLE.md                                  \
 CONTRIBUTE.md                                  \
 DEPRECATE.md                                   \
 ESNI.md                                        \
 EXPERIMENTAL.md                                \
 FAQ                                            \
 FEATURES                                       \
 GOVERNANCE.md                                  \
 HELP-US.md                                     \
 HISTORY.md                                     \
 HTTP-COOKIES.md                                \
Changes to jni/curl/docs/Makefile.in.
479
480
481
482
483
484
485

486
487
488
489
490
491
492
 CHECKSRC.md                                    \
 CIPHERS.md                                     \
 CMakeLists.txt                                 \
 CODE_OF_CONDUCT.md                             \
 CODE_STYLE.md                                  \
 CONTRIBUTE.md                                  \
 DEPRECATE.md                                   \

 EXPERIMENTAL.md                                \
 FAQ                                            \
 FEATURES                                       \
 GOVERNANCE.md                                  \
 HELP-US.md                                     \
 HISTORY.md                                     \
 HTTP-COOKIES.md                                \







>







479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
 CHECKSRC.md                                    \
 CIPHERS.md                                     \
 CMakeLists.txt                                 \
 CODE_OF_CONDUCT.md                             \
 CODE_STYLE.md                                  \
 CONTRIBUTE.md                                  \
 DEPRECATE.md                                   \
 ESNI.md                                        \
 EXPERIMENTAL.md                                \
 FAQ                                            \
 FEATURES                                       \
 GOVERNANCE.md                                  \
 HELP-US.md                                     \
 HISTORY.md                                     \
 HTTP-COOKIES.md                                \
Changes to jni/curl/docs/THANKS.
47
48
49
50
51
52
53

54
55
56
57
58
59
60

61
62
63
64
65
66
67
Alessandro Vesely
Alex Baines
Alex Bligh
Alex Chan
Alex Fishman
Alex Grebenschikov
Alex Gruz

Alex Malinovich
Alex Mayorga
Alex McLellan
Alex Neblett
Alex Nichols
Alex Potapenko
Alex Rousskov

Alex Suykov
Alex Vinnik
Alex aka WindEagle
Alexander Beedie
Alexander Dyagilev
Alexander Elgert
Alexander Klauer







>







>







47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Alessandro Vesely
Alex Baines
Alex Bligh
Alex Chan
Alex Fishman
Alex Grebenschikov
Alex Gruz
Alex Konev
Alex Malinovich
Alex Mayorga
Alex McLellan
Alex Neblett
Alex Nichols
Alex Potapenko
Alex Rousskov
Alex Samorukov
Alex Suykov
Alex Vinnik
Alex aka WindEagle
Alexander Beedie
Alexander Dyagilev
Alexander Elgert
Alexander Klauer
112
113
114
115
116
117
118

119
120
121
122
123
124
125
Andreas Wurf
Andrei Benea
Andrei Cipu
Andrei Karas
Andrei Kurushin
Andrei Neculau
Andrei Sedoi

Andrei Virtosu
Andrej E Baranov
Andrew Benham
Andrew Biggs
Andrew Bushnell
Andrew Francis
Andrew Fuller







>







114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
Andreas Wurf
Andrei Benea
Andrei Cipu
Andrei Karas
Andrei Kurushin
Andrei Neculau
Andrei Sedoi
Andrei Valeriu BICA
Andrei Virtosu
Andrej E Baranov
Andrew Benham
Andrew Biggs
Andrew Bushnell
Andrew Francis
Andrew Fuller
173
174
175
176
177
178
179

180
181
182

183
184
185
186
187
188
189
Ayoub Boudhar
Balaji Parasuram
Balaji S Rao
Balaji Salunke
Balazs Kovacsics
Balint Szilakszi
Barry Abrahamson

Bart Whiteley
Bas Mevissen
Bas van Schaik

Basuke Suzuki
Ben Boeckel
Ben Darnell
Ben Greear
Ben Kohler
Ben Madsen
Ben Noordhuis







>



>







176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
Ayoub Boudhar
Balaji Parasuram
Balaji S Rao
Balaji Salunke
Balazs Kovacsics
Balint Szilakszi
Barry Abrahamson
Barry Pollard
Bart Whiteley
Bas Mevissen
Bas van Schaik
Bastien Bouclet
Basuke Suzuki
Ben Boeckel
Ben Darnell
Ben Greear
Ben Kohler
Ben Madsen
Ben Noordhuis
253
254
255
256
257
258
259

260
261
262
263
264
265
266
Bruce Mitchener
Bruce Stephens
Bruno Grasselli
Bruno Thomsen
Bruno de Carvalho
Bryan Henderson
Bryan Kemp

Byrial Jensen
Caleb Raitto
Cameron Kaiser
Cameron MacMinn
Camille Moncelier
Caolan McNamara
Carie Pointer







>







258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
Bruce Mitchener
Bruce Stephens
Bruno Grasselli
Bruno Thomsen
Bruno de Carvalho
Bryan Henderson
Bryan Kemp
Bylon2 on github
Byrial Jensen
Caleb Raitto
Cameron Kaiser
Cameron MacMinn
Camille Moncelier
Caolan McNamara
Carie Pointer
300
301
302
303
304
305
306

307

308
309
310
311
312
313
314
Christian Krause
Christian Kurz
Christian Robottom Reis
Christian Schmitz
Christian Stewart
Christian Vogt
Christian Weisgerber

Christophe Demory

Christophe Legry
Christopher Conroy
Christopher Head
Christopher Palow
Christopher R. Palmer
Christopher Stone
Chungtsun Li







>

>







306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
Christian Krause
Christian Kurz
Christian Robottom Reis
Christian Schmitz
Christian Stewart
Christian Vogt
Christian Weisgerber
Christoph M. Becker
Christophe Demory
Christophe Dervieux
Christophe Legry
Christopher Conroy
Christopher Head
Christopher Palow
Christopher R. Palmer
Christopher Stone
Chungtsun Li
378
379
380
381
382
383
384

385
386
387
388
389
390
391
Daniel Lublin
Daniel Melani
Daniel Mentz
Daniel Romero
Daniel Schauenberg
Daniel Seither
Daniel Shahaf

Daniel Steinberg
Daniel Stenberg
Daniel Theron
Daniel at touchtunes
Daphne Luong
Dario Nieuwenhuis
Dario Weißer







>







386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
Daniel Lublin
Daniel Melani
Daniel Mentz
Daniel Romero
Daniel Schauenberg
Daniel Seither
Daniel Shahaf
Daniel Silverstone
Daniel Steinberg
Daniel Stenberg
Daniel Theron
Daniel at touchtunes
Daphne Luong
Dario Nieuwenhuis
Dario Weißer
432
433
434
435
436
437
438

439
440
441
442
443
444
445
David Tarendash
David Thiel
David Walser
David Woodhouse
David Wright
David Yan
Dengminwen

Denis Feklushkin
Denis Ollier
Dennis Clarke
Derek Higgins
Desmond O. Chang
Detlef Schmier
Dheeraj Sangamkar







>







441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
David Tarendash
David Thiel
David Walser
David Woodhouse
David Wright
David Yan
Dengminwen
Denis Chaplygin
Denis Feklushkin
Denis Ollier
Dennis Clarke
Derek Higgins
Desmond O. Chang
Detlef Schmier
Dheeraj Sangamkar
516
517
518
519
520
521
522

523
524
525
526
527
528
529
Eldar Zaitov
Eli Schwartz
Elia Tufarolo
Elliot Saba
Ellis Pritchard
Elmira A Semenova
Emanuele Bovisio

Emil Lerner
Emil Romanus
Emiliano Ida
Emmanuel Tychon
Enrico Scholz
Enrik Berkhan
Eramoto Masaya







>







526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
Eldar Zaitov
Eli Schwartz
Elia Tufarolo
Elliot Saba
Ellis Pritchard
Elmira A Semenova
Emanuele Bovisio
Emil Engler
Emil Lerner
Emil Romanus
Emiliano Ida
Emmanuel Tychon
Enrico Scholz
Enrik Berkhan
Eramoto Masaya
585
586
587
588
589
590
591

592
593
594
595
596
597
598
Florian Schoppmann
Florian Weimer
Florin Petriuc
Forrest Cahoon
Francisco Moraes
Francisco Sedano
Francois Petitjean

Frank Denis
Frank Gevaerts
Frank Hempel
Frank Keeney
Frank McGeough
Frank Meier
Frank Ticheler







>







596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
Florian Schoppmann
Florian Weimer
Florin Petriuc
Forrest Cahoon
Francisco Moraes
Francisco Sedano
Francois Petitjean
Francois Rivard
Frank Denis
Frank Gevaerts
Frank Hempel
Frank Keeney
Frank McGeough
Frank Meier
Frank Ticheler
618
619
620
621
622
623
624

625
626
627
628
629
630
631
632
633
634
635

636
637
638
639
640
641
642
Gaël Portay
Geeknik Labs
Geoff Beier
Georg Horn
Georg Huettenegger
Georg Lippitsch
Georg Wicherski

Gerd v. Egidy
Gergely Nagy
Gerhard Herre
Gerrit Bruchhäuser
Ghennadi Procopciuc
Giancarlo Formicuccia
Giaslas Georgios
Gil Weber
Gilad
Gilbert Ramirez Jr.
Gilles Blanc

Giorgos Oikonomou
Gisle Vanem
GitYuanQu on github
Giuseppe Attardi
Giuseppe D'Ambrosio
Giuseppe Persico
Glen A Johnson Jr.







>











>







630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
Gaël Portay
Geeknik Labs
Geoff Beier
Georg Horn
Georg Huettenegger
Georg Lippitsch
Georg Wicherski
George Liu
Gerd v. Egidy
Gergely Nagy
Gerhard Herre
Gerrit Bruchhäuser
Ghennadi Procopciuc
Giancarlo Formicuccia
Giaslas Georgios
Gil Weber
Gilad
Gilbert Ramirez Jr.
Gilles Blanc
Gilles Vollant
Giorgos Oikonomou
Gisle Vanem
GitYuanQu on github
Giuseppe Attardi
Giuseppe D'Ambrosio
Giuseppe Persico
Glen A Johnson Jr.
653
654
655
656
657
658
659

660
661
662
663
664
665
666
Greg Morse
Greg Onufer
Greg Pratt
Greg Rowe
Greg Zavertnik
Gregory Nicholls
Gregory Szorc

Grigory Entin
Guenole Bescon
Guido Berhoerster
Guillaume Arluison
Gunter Knauf
Gustaf Hui
Gustavo Grieco







>







667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
Greg Morse
Greg Onufer
Greg Pratt
Greg Rowe
Greg Zavertnik
Gregory Nicholls
Gregory Szorc
Griffin Downs
Grigory Entin
Guenole Bescon
Guido Berhoerster
Guillaume Arluison
Gunter Knauf
Gustaf Hui
Gustavo Grieco
723
724
725
726
727
728
729

730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746

747
748
749
750
751
752
753
Igor Makarov
Igor Novoseltsev
Igor Polyakov
Ihor Karpenko
Iida Yosiaki
Ilguiz Latypov
Ilja van Sprundel

Immanuel Gregoire
Inca R
Ingmar Runge
Ingo Ralf Blum
Ingo Wilken
Irfan Adilovic
Ironbars13 on github
Irving Wolfe
Isaac Boukris
Isaiah Norton
Ishan SinghLevett
Ithubg on github
Ivan Avdeev
Ivo Bellin Salarin
Jack Zhang
Jackarain on github
Jacky Lam

Jacob Meuser
Jacob Moshenko
Jactry Zeng
Jad Chamcham
Jaime Fullaondo
Jakub Wilk
Jakub Zakrzewski







>

















>







738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
Igor Makarov
Igor Novoseltsev
Igor Polyakov
Ihor Karpenko
Iida Yosiaki
Ilguiz Latypov
Ilja van Sprundel
Ilya Kosarev
Immanuel Gregoire
Inca R
Ingmar Runge
Ingo Ralf Blum
Ingo Wilken
Irfan Adilovic
Ironbars13 on github
Irving Wolfe
Isaac Boukris
Isaiah Norton
Ishan SinghLevett
Ithubg on github
Ivan Avdeev
Ivo Bellin Salarin
Jack Zhang
Jackarain on github
Jacky Lam
Jacob Barthelmeh
Jacob Meuser
Jacob Moshenko
Jactry Zeng
Jad Chamcham
Jaime Fullaondo
Jakub Wilk
Jakub Zakrzewski
809
810
811
812
813
814
815

816
817
818
819
820
821
822
Jeff Johnson
Jeff King
Jeff Lawson
Jeff Phillips
Jeff Pohlmeyer
Jeff Weber
Jeffrey Walton

Jens Rantil
Jens Schleusener
Jeremie Rapin
Jeremy Friesner
Jeremy Huddleston
Jeremy Lainé
Jeremy Lin







>







826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
Jeff Johnson
Jeff King
Jeff Lawson
Jeff Phillips
Jeff Pohlmeyer
Jeff Weber
Jeffrey Walton
Jens Finkhaeuser
Jens Rantil
Jens Schleusener
Jeremie Rapin
Jeremy Friesner
Jeremy Huddleston
Jeremy Lainé
Jeremy Lin
836
837
838
839
840
841
842

843
844
845
846
847
848
849
Jesse Tan
Jie He
Jim Drash
Jim Freeman
Jim Fuller
Jim Hollinger
Jim Meyering

Jiri Dvorak
Jiri Hruska
Jiri Jaburek
Jiří Malák
Jocelyn Jaubert
Joe Halpin
Joe Malicki







>







854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
Jesse Tan
Jie He
Jim Drash
Jim Freeman
Jim Fuller
Jim Hollinger
Jim Meyering
Jimmy Gaussen
Jiri Dvorak
Jiri Hruska
Jiri Jaburek
Jiří Malák
Jocelyn Jaubert
Joe Halpin
Joe Malicki
886
887
888
889
890
891
892

893
894
895
896
897
898
899
John Suprock
John V. Chow
John Wanghui
John Weismiller
John Wilkinson
John-Mark Bell
Johnny Luong

Jon DeVree
Jon Grubbs
Jon Nelson
Jon Sargeant
Jon Seymour
Jon Spencer
Jon Torrey







>







905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
John Suprock
John V. Chow
John Wanghui
John Weismiller
John Wilkinson
John-Mark Bell
Johnny Luong
Jojojov on github
Jon DeVree
Jon Grubbs
Jon Nelson
Jon Sargeant
Jon Seymour
Jon Spencer
Jon Torrey
1066
1067
1068
1069
1070
1071
1072

1073
1074
1075
1076
1077
1078
1079
Loic Dachary
Loren Kirkby
Luan Cestari
Luca Altea
Luca Boccassi
Lucas Adamski
Lucas Pardue

Ludek Finstrle
Ludovico Cavedon
Ludwig Nussel
Lukas Ruzicka
Lukasz Czekierda
Luke Amery
Luke Call







>







1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
Loic Dachary
Loren Kirkby
Luan Cestari
Luca Altea
Luca Boccassi
Lucas Adamski
Lucas Pardue
Lucas Severo
Ludek Finstrle
Ludovico Cavedon
Ludwig Nussel
Lukas Ruzicka
Lukasz Czekierda
Luke Amery
Luke Call
1103
1104
1105
1106
1107
1108
1109

1110
1111
1112
1113
1114
1115
1116
Marc Doughty
Marc Hesse
Marc Hörsken
Marc Kleine-Budde
Marc Renault
Marc Schlatter
Marc-Antoine Perennou

Marcel Raad
Marcel Roelofs
Marcelo Echeverria
Marcelo Juchem
Marcin Adamski
Marcin Gryszkalis
Marcin Konicki







>







1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
Marc Doughty
Marc Hesse
Marc Hörsken
Marc Kleine-Budde
Marc Renault
Marc Schlatter
Marc-Antoine Perennou
Marcel Hernandez
Marcel Raad
Marcel Roelofs
Marcelo Echeverria
Marcelo Juchem
Marcin Adamski
Marcin Gryszkalis
Marcin Konicki
1147
1148
1149
1150
1151
1152
1153

1154
1155
1156
1157
1158
1159
1160
Martijn Koster
Martin Ankerl
Martin C. Martin
Martin Drasar
Martin Dreher
Martin Frodl
Martin Galvan

Martin Hager
Martin Hedenfalk
Martin Jansen
Martin Kammerhofer
Martin Kepplinger
Martin Lemke
Martin Skinner







>







1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
Martijn Koster
Martin Ankerl
Martin C. Martin
Martin Drasar
Martin Dreher
Martin Frodl
Martin Galvan
Martin Gartner
Martin Hager
Martin Hedenfalk
Martin Jansen
Martin Kammerhofer
Martin Kepplinger
Martin Lemke
Martin Skinner
1279
1280
1281
1282
1283
1284
1285

1286
1287
1288
1289
1290
1291
1292
1293
1294

1295
1296
1297
1298
1299
1300
1301
NTMan on Github
Nach M. S.
Nagai H
Nate Prewitt
Nathan Coulter
Nathan O'Sullivan
Nathanael Nerode

Nathaniel Waisbrot
Naveen Chandran
Naveen Noel
Neal Poole
Nehal J Wani
Neil Bowers
Neil Dunbar
Neil Kolban
Neil Spring

Nic Roets
Nicholas Maniscalco
Nick Draffen
Nick Gimbrone
Nick Humfrey
Nick Miyake
Nick Zitzmann







>









>







1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
NTMan on Github
Nach M. S.
Nagai H
Nate Prewitt
Nathan Coulter
Nathan O'Sullivan
Nathanael Nerode
Nathaniel J. Smith
Nathaniel Waisbrot
Naveen Chandran
Naveen Noel
Neal Poole
Nehal J Wani
Neil Bowers
Neil Dunbar
Neil Kolban
Neil Spring
Niall O'Reilly
Nic Roets
Nicholas Maniscalco
Nick Draffen
Nick Gimbrone
Nick Humfrey
Nick Miyake
Nick Zitzmann
1366
1367
1368
1369
1370
1371
1372

1373

1374
1375
1376
1377
1378
1379
1380
Patrick Rapin
Patrick Schlangen
Patrick Scott
Patrick Smith
Patrick Watson
Patrik Thunstrom
Pau Garcia i Quiles

Paul Donohue

Paul Groke
Paul Harrington
Paul Harris
Paul Howarth
Paul Joyce
Paul Marks
Paul Marquis







>

>







1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
Patrick Rapin
Patrick Schlangen
Patrick Scott
Patrick Smith
Patrick Watson
Patrik Thunstrom
Pau Garcia i Quiles
Paul B. Omta
Paul Donohue
Paul Dreik
Paul Groke
Paul Harrington
Paul Harris
Paul Howarth
Paul Joyce
Paul Marks
Paul Marquis
1411
1412
1413
1414
1415
1416
1417

1418
1419
1420
1421
1422
1423
1424
Peter Laser
Peter O'Gorman
Peter Pentchev
Peter Piekarski
Peter Silva
Peter Simonyi
Peter Su

Peter Sylvester
Peter Todd
Peter Varga
Peter Verhas
Peter Wang
Peter Wu
Peter Wullinger







>







1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
Peter Laser
Peter O'Gorman
Peter Pentchev
Peter Piekarski
Peter Silva
Peter Simonyi
Peter Su
Peter Sumatra
Peter Sylvester
Peter Todd
Peter Varga
Peter Verhas
Peter Wang
Peter Wu
Peter Wullinger
1434
1435
1436
1437
1438
1439
1440

1441
1442
1443
1444
1445
1446
1447
1448

1449
1450
1451
1452
1453
1454
1455
Phil Pellouchoud
Philip Craig
Philip Gladstone
Philip Langdale
Philip Prindeville
Philipp Waehnert
Philippe Hameau

Philippe Raoult
Philippe Vaucher
Pierre
Pierre Brico
Pierre Chapuis
Pierre Joye
Pierre Ynard
Piotr Dobrogost

Po-Chuan Hsieh
Pooyan McSporran
Poul T Lomholt
Pramod Sharma
Prash Dush
Praveen Pvs
Priyanka Shah







>








>







1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
Phil Pellouchoud
Philip Craig
Philip Gladstone
Philip Langdale
Philip Prindeville
Philipp Waehnert
Philippe Hameau
Philippe Marguinaud
Philippe Raoult
Philippe Vaucher
Pierre
Pierre Brico
Pierre Chapuis
Pierre Joye
Pierre Ynard
Piotr Dobrogost
Piotr Komborski
Po-Chuan Hsieh
Pooyan McSporran
Poul T Lomholt
Pramod Sharma
Prash Dush
Praveen Pvs
Priyanka Shah
1559
1560
1561
1562
1563
1564
1565

1566
1567
1568
1569
1570
1571
1572
Rod Widdowson
Rodger Combs
Rodney Simmons
Rodric Glaser
Rodrigo Silva
Roger Leigh
Roland Blom

Roland Krikava
Roland Zimmermann
Rolf Eike Beer
Rolland Dudemaine
Romain Coltel
Romain Fliedel
Romain Geissler







>







1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
Rod Widdowson
Rodger Combs
Rodney Simmons
Rodric Glaser
Rodrigo Silva
Roger Leigh
Roland Blom
Roland Hieber
Roland Krikava
Roland Zimmermann
Rolf Eike Beer
Rolland Dudemaine
Romain Coltel
Romain Fliedel
Romain Geissler
1622
1623
1624
1625
1626
1627
1628

1629
1630
1631
1632
1633
1634
1635
Scott Davis
Scott McCreary
Sean Boudreau
Sean Burford
Sean MacLennan
Sean Miller
Sebastiaan van Erk

Sebastian Mundry
Sebastian Pohlschmidt
Sebastian Rasmussen
Senthil Raja Velu
Sergei Kuzmin
Sergei Nikulov
Sergey Ogryzkov







>







1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
Scott Davis
Scott McCreary
Sean Boudreau
Sean Burford
Sean MacLennan
Sean Miller
Sebastiaan van Erk
Sebastian Haglund
Sebastian Mundry
Sebastian Pohlschmidt
Sebastian Rasmussen
Senthil Raja Velu
Sergei Kuzmin
Sergei Nikulov
Sergey Ogryzkov
1665
1666
1667
1668
1669
1670
1671

1672
1673
1674
1675
1676
1677
1678
Simon Legner
Simon Liu
Simon Warta
Somnath Kundu
Song Ma
Sonia Subramanian
Spacen Jasset

Spiridonoff A.V
Spork Schivago
Stadler Stephan
Stan van de Burgt
Stanislav Ivochkin
Stanislav Zidek
Stefan Agner







>







1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
Simon Legner
Simon Liu
Simon Warta
Somnath Kundu
Song Ma
Sonia Subramanian
Spacen Jasset
Spezifant on github
Spiridonoff A.V
Spork Schivago
Stadler Stephan
Stan van de Burgt
Stanislav Ivochkin
Stanislav Zidek
Stefan Agner
1710
1711
1712
1713
1714
1715
1716

1717
1718

1719
1720
1721
1722
1723
1724
1725
Steve Roskowski
Steve Walch
Steven Bazyl
Steven G. Johnson
Steven Gu
Steven M. Schweda
Steven Parkes

Stoned Elipot
Stuart Henderson

Sune Ahlgren
Sunny Purushe
Sven Anders
Sven Blumenstein
Sven Neuhaus
Sven Wegener
Svyatoslav Mishyn







>


>







1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
Steve Roskowski
Steve Walch
Steven Bazyl
Steven G. Johnson
Steven Gu
Steven M. Schweda
Steven Parkes
Stian Soiland-Reyes
Stoned Elipot
Stuart Henderson
SumatraPeter on github
Sune Ahlgren
Sunny Purushe
Sven Anders
Sven Blumenstein
Sven Neuhaus
Sven Wegener
Svyatoslav Mishyn
1823
1824
1825
1826
1827
1828
1829

1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842

1843
1844
1845
1846
1847
1848
1849
1850
1851
1852

1853
1854
1855
1856
1857
1858
1859
Torben Dannhauer
Torsten Foertsch
Toshio Kuratomi
Toshiyuki Maezawa
Traian Nicolescu
Travis Burtrum
Travis Obenhaus

Troels Walsted Hansen
Troy Engel
Tseng Jun
Tuomo Rinne
Tupone Alfredo
Tyler Hall
Török Edwin
Ulf Härnhammar
Ulf Samuelsson
Ulrich Doehner
Ulrich Telle
Ulrich Zadow
Valentin David

Vasiliy Faronov
Vasily Lobaskin
Vasy Okhin
Venkat Akella
Venkataramana Mokkapati
Vicente Garcia
Victor Snezhko
Vijay Panghal
Vikram Saxena
Viktor Szakats

Ville Skyttä
Vilmos Nebehaj
Vincas Razma
Vincent Bronner
Vincent Le Normand
Vincent Penquerc'h
Vincent Sanders







>













>










>







1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
Torben Dannhauer
Torsten Foertsch
Toshio Kuratomi
Toshiyuki Maezawa
Traian Nicolescu
Travis Burtrum
Travis Obenhaus
Trivikram Kamat
Troels Walsted Hansen
Troy Engel
Tseng Jun
Tuomo Rinne
Tupone Alfredo
Tyler Hall
Török Edwin
Ulf Härnhammar
Ulf Samuelsson
Ulrich Doehner
Ulrich Telle
Ulrich Zadow
Valentin David
Valerii Zapodovnikov
Vasiliy Faronov
Vasily Lobaskin
Vasy Okhin
Venkat Akella
Venkataramana Mokkapati
Vicente Garcia
Victor Snezhko
Vijay Panghal
Vikram Saxena
Viktor Szakats
Vilhelm Prytz
Ville Skyttä
Vilmos Nebehaj
Vincas Razma
Vincent Bronner
Vincent Le Normand
Vincent Penquerc'h
Vincent Sanders
1895
1896
1897
1898
1899
1900
1901

1902
1903
1904
1905
1906
1907
1908
Xiangbin Li
XmiliaH on github
Yaakov Selkowitz
Yang Tse
Yarram Sunil
Yasuharu Yamada
Yasuhiro Matsumoto

Yehezkel Horowitz
Yehoshua Hershberg
Yi Huang
Yiming Jing
Yingwei Liu
Yonggang Luo
Yousuke Kimoto







>







1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
Xiangbin Li
XmiliaH on github
Yaakov Selkowitz
Yang Tse
Yarram Sunil
Yasuharu Yamada
Yasuhiro Matsumoto
Yechiel Kalmenson
Yehezkel Horowitz
Yehoshua Hershberg
Yi Huang
Yiming Jing
Yingwei Liu
Yonggang Luo
Yousuke Kimoto
1962
1963
1964
1965
1966
1967
1968

1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979

1980
1981
1982
1983
1984
1985
1986

1987
1988
1989
1990
1991
1992
1993
jakirkham on github
jasal82 on github
jnbr on github
jonrumsey on github
joshhe on github
jungle-boogie on github
jveazey on github

ka7 on github
kreshano on github
l00p3r on Hackerone
lijian996 on github
lukaszgn on github
madblobfish on github
marc-groundctl on github
masbug on github
mccormickt12 on github
migueljcrum on github
mkzero on github

moohoorama on github
nedres on github
neex on github
neheb on github
nevv on HackerOne/curl
niallor on github
nianxuejie on github

niner on github
nk
nopjmp on github
olesteban on github
omau on github
osabc on github
ovidiu-benea on github







>











>







>







2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
jakirkham on github
jasal82 on github
jnbr on github
jonrumsey on github
joshhe on github
jungle-boogie on github
jveazey on github
jzinn on github
ka7 on github
kreshano on github
l00p3r on Hackerone
lijian996 on github
lukaszgn on github
madblobfish on github
marc-groundctl on github
masbug on github
mccormickt12 on github
migueljcrum on github
mkzero on github
momala454 on github
moohoorama on github
nedres on github
neex on github
neheb on github
nevv on HackerOne/curl
niallor on github
nianxuejie on github
nico-abram on github
niner on github
nk
nopjmp on github
olesteban on github
omau on github
osabc on github
ovidiu-benea on github
Changes to jni/curl/docs/TODO.
14
15
16
17
18
19
20

21
22
23
24
25
26
27
 consider bringing it up for discussions first on the mailing list so that we
 all agree it is still a good idea for the project!

 All bugs documented in the KNOWN_BUGS document are subject for fixing!

 1. libcurl
 1.1 TFO support on Windows

 1.3 struct lifreq
 1.5 get rid of PATH_MAX
 1.7 Support HTTP/2 for HTTP(S) proxies
 1.8 CURLOPT_RESOLVE for any port number
 1.9 Cache negative name resolves
 1.10 auto-detect proxy
 1.11 minimize dependencies with dynamically loaded modules







>







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 consider bringing it up for discussions first on the mailing list so that we
 all agree it is still a good idea for the project!

 All bugs documented in the KNOWN_BUGS document are subject for fixing!

 1. libcurl
 1.1 TFO support on Windows
 1.2 Consult %APPDATA% also for .netrc
 1.3 struct lifreq
 1.5 get rid of PATH_MAX
 1.7 Support HTTP/2 for HTTP(S) proxies
 1.8 CURLOPT_RESOLVE for any port number
 1.9 Cache negative name resolves
 1.10 auto-detect proxy
 1.11 minimize dependencies with dynamically loaded modules
118
119
120
121
122
123
124

125
126
127
128
129
130
131
 16. SASL
 16.1 Other authentication mechanisms
 16.2 Add QOP support to GSSAPI authentication
 16.3 Support binary messages (i.e.: non-base64)

 17. SSH protocols
 17.1 Multiplexing

 17.3 Support better than MD5 hostkey hash
 17.4 Support CURLOPT_PREQUOTE

 18. Command line tool
 18.1 sync
 18.2 glob posts
 18.3 prevent file overwriting







>







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
 16. SASL
 16.1 Other authentication mechanisms
 16.2 Add QOP support to GSSAPI authentication
 16.3 Support binary messages (i.e.: non-base64)

 17. SSH protocols
 17.1 Multiplexing
 17.2 Handle growing SFTP files
 17.3 Support better than MD5 hostkey hash
 17.4 Support CURLOPT_PREQUOTE

 18. Command line tool
 18.1 sync
 18.2 glob posts
 18.3 prevent file overwriting
177
178
179
180
181
182
183






184
185
186
187
188
189
190
1.1 TFO support on Windows

 TCP Fast Open is supported on several platforms but not on Windows. Work on
 this was once started but never finished.

 See https://github.com/curl/curl/pull/3378







1.3 struct lifreq

 Use 'struct lifreq' and SIOCGLIFADDR instead of 'struct ifreq' and
 SIOCGIFADDR on newer Solaris versions as they claim the latter is obsolete.
 To support IPv6 interface addresses for network interfaces properly.

1.5 get rid of PATH_MAX







>
>
>
>
>
>







179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
1.1 TFO support on Windows

 TCP Fast Open is supported on several platforms but not on Windows. Work on
 this was once started but never finished.

 See https://github.com/curl/curl/pull/3378

1.2 Consult %APPDATA% also for .netrc

 %APPDATA%\.netrc is not considered when running on Windows. Shouldn't it?

 See https://github.com/curl/curl/issues/4016

1.3 struct lifreq

 Use 'struct lifreq' and SIOCGLIFADDR instead of 'struct ifreq' and
 SIOCGIFADDR on newer Solaris versions as they claim the latter is obsolete.
 To support IPv6 interface addresses for network interfaces properly.

1.5 get rid of PATH_MAX
788
789
790
791
792
793
794










795
796
797
798
799
800
801
 much in the same spirit as HTTP/2 does. libcurl however does not take
 advantage of that ability but will instead always create a new connection for
 new transfers even if an existing connection already exists to the host.

 To fix this, libcurl would have to detect an existing connection and "attach"
 the new transfer to the existing one.











17.3 Support better than MD5 hostkey hash

 libcurl offers the CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 option for verifying the
 server's key. MD5 is generally being deprecated so we should implement
 support for stronger hashing algorithms. libssh2 itself is what provides this
 underlying functionality and it supports at least SHA-1 as an alternative.
 SHA-1 is also being deprecated these days so we should consider working with







>
>
>
>
>
>
>
>
>
>







796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
 much in the same spirit as HTTP/2 does. libcurl however does not take
 advantage of that ability but will instead always create a new connection for
 new transfers even if an existing connection already exists to the host.

 To fix this, libcurl would have to detect an existing connection and "attach"
 the new transfer to the existing one.

17.2 Handle growing SFTP files

 The SFTP code in libcurl checks the file size *before* a transfer starts and
 then proceeds to transfer exactly that amount of data. If the remote file
 grows while the tranfer is in progress libcurl won't notice and will not
 adapt. The OpenSSH SFTP command line tool does and libcurl could also just
 attempt to download more to see if there is more to get...

 https://github.com/curl/curl/issues/4344

17.3 Support better than MD5 hostkey hash

 libcurl offers the CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 option for verifying the
 server's key. MD5 is generally being deprecated so we should implement
 support for stronger hashing algorithms. libssh2 itself is what provides this
 underlying functionality and it supports at least SHA-1 as an alternative.
 SHA-1 is also being deprecated these days so we should consider working with
Changes to jni/curl/docs/cmdline-opts/Makefile.in.
460
461
462
463
464
465
466

467
468
469
470
471
472
473

474
475
476
477
478
479
480
  netrc-file.d					\
  netrc-optional.d				\
  netrc.d					\
  next.d no-alpn.d				\
  no-buffer.d					\
  no-keepalive.d				\
  no-npn.d					\

  no-sessionid.d				\
  noproxy.d					\
  ntlm.d ntlm-wb.d				\
  oauth2-bearer.d				\
  output.d                                      \
  pass.d                			\
  parallel.d                                    \

  parallel-max.d                                \
  path-as-is.d					\
  pinnedpubkey.d				\
  post301.d					\
  post302.d					\
  post303.d					\
  preproxy.d					\







>





<

>







460
461
462
463
464
465
466
467
468
469
470
471
472

473
474
475
476
477
478
479
480
481
  netrc-file.d					\
  netrc-optional.d				\
  netrc.d					\
  next.d no-alpn.d				\
  no-buffer.d					\
  no-keepalive.d				\
  no-npn.d					\
  no-progress-meter.d                           \
  no-sessionid.d				\
  noproxy.d					\
  ntlm.d ntlm-wb.d				\
  oauth2-bearer.d				\
  output.d                                      \

  parallel.d                                    \
  pass.d                			\
  parallel-max.d                                \
  path-as-is.d					\
  pinnedpubkey.d				\
  post301.d					\
  post302.d					\
  post303.d					\
  preproxy.d					\
Changes to jni/curl/docs/cmdline-opts/Makefile.inc.
93
94
95
96
97
98
99

100
101
102
103
104
105
106

107
108
109
110
111
112
113
  netrc-file.d					\
  netrc-optional.d				\
  netrc.d					\
  next.d no-alpn.d				\
  no-buffer.d					\
  no-keepalive.d				\
  no-npn.d					\

  no-sessionid.d				\
  noproxy.d					\
  ntlm.d ntlm-wb.d				\
  oauth2-bearer.d				\
  output.d                                      \
  pass.d                			\
  parallel.d                                    \

  parallel-max.d                                \
  path-as-is.d					\
  pinnedpubkey.d				\
  post301.d					\
  post302.d					\
  post303.d					\
  preproxy.d					\







>





<

>







93
94
95
96
97
98
99
100
101
102
103
104
105

106
107
108
109
110
111
112
113
114
  netrc-file.d					\
  netrc-optional.d				\
  netrc.d					\
  next.d no-alpn.d				\
  no-buffer.d					\
  no-keepalive.d				\
  no-npn.d					\
  no-progress-meter.d                           \
  no-sessionid.d				\
  noproxy.d					\
  ntlm.d ntlm-wb.d				\
  oauth2-bearer.d				\
  output.d                                      \

  parallel.d                                    \
  pass.d                			\
  parallel-max.d                                \
  path-as-is.d					\
  pinnedpubkey.d				\
  post301.d					\
  post302.d					\
  post303.d					\
  preproxy.d					\
Added jni/curl/docs/cmdline-opts/no-progress-meter.d.




















>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
Long: no-progress-meter
Help: Do not show the progress meter
See-also: verbose silent
Added: 7.67.0
---
Option to switch off the progress meter output without muting or otherwise
affecting warning and informational messages like --silent does.

Note that this is the negated option name documented. You can thus use
--progress-meter to enable the progress meter again.
Changes to jni/curl/docs/curl-config.1.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl-config 1 "November 30, 2017" "Curl 7.66.0" "curl-config manual"

.SH NAME
curl-config \- Get information about a libcurl installation
.SH SYNOPSIS
.B curl-config [options]
.SH DESCRIPTION
.B curl-config







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl-config 1 "November 30, 2017" "Curl 7.67.0" "curl-config manual"

.SH NAME
curl-config \- Get information about a libcurl installation
.SH SYNOPSIS
.B curl-config [options]
.SH DESCRIPTION
.B curl-config
Changes to jni/curl/docs/curl.1.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
.\"
.TH curl 1 "November 16, 2016" "Curl 7.66.0" "Curl Manual"

.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
.B curl [options / URLs]
.SH DESCRIPTION
.B curl







|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
.\"
.TH curl 1 "November 16, 2016" "Curl 7.67.0" "Curl Manual"

.SH NAME
curl \- transfer a URL
.SH SYNOPSIS
.B curl [options / URLs]
.SH DESCRIPTION
.B curl
1441
1442
1443
1444
1445
1446
1447








1448
1449
1450
1451
1452
1453
1454
--keepalive to enforce keepalive.
.IP "--no-npn"
(HTTPS) Disable the NPN TLS extension. NPN is enabled by default if libcurl was built
with an SSL library that supports NPN. NPN is used by a libcurl that supports
HTTP/2 to negotiate HTTP/2 support with the server during https sessions.

See also \fI--no-alpn\fP and \fI--http2\fP. \fI--no-npn\fP requires that the underlying libcurl was built to support TLS. Added in 7.36.0.








.IP "--no-sessionid"
(TLS) Disable curl's use of SSL session-ID caching.  By default all transfers are
done using the cache. Note that while nothing should ever get hurt by
attempting to reuse SSL session-IDs, there seem to be broken SSL
implementations in the wild that may require you to disable this in order for
you to succeed.








>
>
>
>
>
>
>
>







1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
--keepalive to enforce keepalive.
.IP "--no-npn"
(HTTPS) Disable the NPN TLS extension. NPN is enabled by default if libcurl was built
with an SSL library that supports NPN. NPN is used by a libcurl that supports
HTTP/2 to negotiate HTTP/2 support with the server during https sessions.

See also \fI--no-alpn\fP and \fI--http2\fP. \fI--no-npn\fP requires that the underlying libcurl was built to support TLS. Added in 7.36.0.
.IP "--no-progress-meter"
Option to switch off the progress meter output without muting or otherwise
affecting warning and informational messages like \fI-s, --silent\fP does.

Note that this is the negated option name documented. You can thus use
--progress-meter to enable the progress meter again.

See also \fI-v, --verbose\fP and \fI-s, --silent\fP. Added in 7.67.0.
.IP "--no-sessionid"
(TLS) Disable curl's use of SSL session-ID caching.  By default all transfers are
done using the cache. Note that while nothing should ever get hurt by
attempting to reuse SSL session-IDs, there seem to be broken SSL
implementations in the wild that may require you to disable this in order for
you to succeed.

Changes to jni/curl/docs/examples/Makefile.in.
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \
  ghiper.c hiperfifo.c htmltidy.c multithread.c opensslthreadlock.c \
  sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
  smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \
  multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c \
  threaded-shared-conn.c crawler.c ephiperfifo.c

CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;
CS_1 = 
CS_ = $(CS_0)
all: all-am








|







1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \
  ghiper.c hiperfifo.c htmltidy.c multithread.c opensslthreadlock.c \
  sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
  smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \
  multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c \
  threaded-shared-conn.c crawler.c ephiperfifo.c multi-event.c

CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;
CS_1 = 
CS_ = $(CS_0)
all: all-am

Changes to jni/curl/docs/examples/Makefile.inc.
41
42
43
44
45
46
47
48
# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \
  ghiper.c hiperfifo.c htmltidy.c multithread.c opensslthreadlock.c \
  sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
  smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \
  multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c \
  threaded-shared-conn.c crawler.c ephiperfifo.c







|
41
42
43
44
45
46
47
48
# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cpp cacertinmem.c \
  ghiper.c hiperfifo.c htmltidy.c multithread.c opensslthreadlock.c \
  sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c \
  smooth-gtk-thread.c version-check.pl href_extractor.c asiohiper.cpp \
  multi-uv.c xmlstream.c usercertinmem.c sessioninfo.c \
  threaded-shared-conn.c crawler.c ephiperfifo.c multi-event.c
Changes to jni/curl/docs/examples/externalsocket.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/ftp-wildcard.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/htmltidy.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/htmltitle.cpp.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/http2-upload.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/imap-append.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/multi-app.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Added jni/curl/docs/examples/multi-event.c.
































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

/* <DESC>
 * multi_socket API using libevent
 * </DESC>
 */

#include <stdio.h>
#include <stdlib.h>
#include <event2/event.h>
#include <curl/curl.h>

struct event_base *base;
CURLM *curl_handle;
struct event *timeout;

typedef struct curl_context_s {
  struct event *event;
  curl_socket_t sockfd;
} curl_context_t;

static void curl_perform(int fd, short event, void *arg);

static curl_context_t* create_curl_context(curl_socket_t sockfd)
{
  curl_context_t *context;

  context = (curl_context_t *) malloc(sizeof(*context));

  context->sockfd = sockfd;

  context->event = event_new(base, sockfd, 0, curl_perform, context);

  return context;
}

static void destroy_curl_context(curl_context_t *context)
{
  event_del(context->event);
  event_free(context->event);
  free(context);
}

static void add_download(const char *url, int num)
{
  char filename[50];
  FILE *file;
  CURL *handle;

  snprintf(filename, 50, "%d.download", num);

  file = fopen(filename, "wb");
  if(!file) {
    fprintf(stderr, "Error opening %s\n", filename);
    return;
  }

  handle = curl_easy_init();
  curl_easy_setopt(handle, CURLOPT_WRITEDATA, file);
  curl_easy_setopt(handle, CURLOPT_PRIVATE, file);
  curl_easy_setopt(handle, CURLOPT_URL, url);
  curl_multi_add_handle(curl_handle, handle);
  fprintf(stderr, "Added download %s -> %s\n", url, filename);
}

static void check_multi_info(void)
{
  char *done_url;
  CURLMsg *message;
  int pending;
  CURL *easy_handle;
  FILE *file;

  while((message = curl_multi_info_read(curl_handle, &pending))) {
    switch(message->msg) {
    case CURLMSG_DONE:
      /* Do not use message data after calling curl_multi_remove_handle() and
         curl_easy_cleanup(). As per curl_multi_info_read() docs:
         "WARNING: The data the returned pointer points to will not survive
         calling curl_multi_cleanup, curl_multi_remove_handle or
         curl_easy_cleanup." */
      easy_handle = message->easy_handle;

      curl_easy_getinfo(easy_handle, CURLINFO_EFFECTIVE_URL, &done_url);
      curl_easy_getinfo(easy_handle, CURLINFO_PRIVATE, &file);
      printf("%s DONE\n", done_url);

      curl_multi_remove_handle(curl_handle, easy_handle);
      curl_easy_cleanup(easy_handle);
      if(file) {
        fclose(file);
      }
      break;

    default:
      fprintf(stderr, "CURLMSG default\n");
      break;
    }
  }
}

static void curl_perform(int fd, short event, void *arg)
{
  int running_handles;
  int flags = 0;
  curl_context_t *context;

  if(event & EV_READ)
    flags |= CURL_CSELECT_IN;
  if(event & EV_WRITE)
    flags |= CURL_CSELECT_OUT;

  context = (curl_context_t *) arg;

  curl_multi_socket_action(curl_handle, context->sockfd, flags,
                           &running_handles);

  check_multi_info();
}

static void on_timeout(evutil_socket_t fd, short events, void *arg)
{
  int running_handles;
  curl_multi_socket_action(curl_handle, CURL_SOCKET_TIMEOUT, 0,
                           &running_handles);
  check_multi_info();
}

static int start_timeout(CURLM *multi, long timeout_ms, void *userp)
{
  if(timeout_ms < 0) {
    evtimer_del(timeout);
  }
  else {
    if(timeout_ms == 0)
      timeout_ms = 1; /* 0 means directly call socket_action, but we'll do it
                         in a bit */
    struct timeval tv;
    tv.tv_sec = timeout_ms / 1000;
    tv.tv_usec = (timeout_ms % 1000) * 1000;
    evtimer_del(timeout);
    evtimer_add(timeout, &tv);
  }
  return 0;
}

static int handle_socket(CURL *easy, curl_socket_t s, int action, void *userp,
                  void *socketp)
{
  curl_context_t *curl_context;
  int events = 0;

  switch(action) {
  case CURL_POLL_IN:
  case CURL_POLL_OUT:
  case CURL_POLL_INOUT:
    curl_context = socketp ?
      (curl_context_t *) socketp : create_curl_context(s);

    curl_multi_assign(curl_handle, s, (void *) curl_context);

    if(action != CURL_POLL_IN)
      events |= EV_WRITE;
    if(action != CURL_POLL_OUT)
      events |= EV_READ;

    events |= EV_PERSIST;

    event_del(curl_context->event);
    event_assign(curl_context->event, base, curl_context->sockfd, events,
      curl_perform, curl_context);
    event_add(curl_context->event, NULL);

    break;
  case CURL_POLL_REMOVE:
    if(socketp) {
      event_del(((curl_context_t*) socketp)->event);
      destroy_curl_context((curl_context_t*) socketp);
      curl_multi_assign(curl_handle, s, NULL);
    }
    break;
  default:
    abort();
  }

  return 0;
}

int main(int argc, char **argv)
{
  if(argc <= 1)
    return 0;

  if(curl_global_init(CURL_GLOBAL_ALL)) {
    fprintf(stderr, "Could not init curl\n");
    return 1;
  }

  base = event_base_new();
  timeout = evtimer_new(base, on_timeout, NULL);

  curl_handle = curl_multi_init();
  curl_multi_setopt(curl_handle, CURLMOPT_SOCKETFUNCTION, handle_socket);
  curl_multi_setopt(curl_handle, CURLMOPT_TIMERFUNCTION, start_timeout);

  while(argc-- > 1) {
    add_download(argv[argc], argc);
  }

  event_base_dispatch(base);

  curl_multi_cleanup(curl_handle);
  event_free(timeout);
  event_base_free(base);

  libevent_global_shutdown();
  curl_global_cleanup();

  return 0;
}
Changes to jni/curl/docs/examples/multithread.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/postit2-formadd.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 *
 * <form method="post" enctype="multipart/form-data" action="examplepost.cgi">
 * Enter file: <input type="file" name="sendfile" size="40">
 * Enter file name: <input type="text" name="filename" size="30">
 * <input type="submit" value="send" name="submit">
 * </form>
 *
 * This exact source code has not been verified to work.
 */

#include <stdio.h>
#include <string.h>

#include <curl/curl.h>








<







30
31
32
33
34
35
36

37
38
39
40
41
42
43
 *
 * <form method="post" enctype="multipart/form-data" action="examplepost.cgi">
 * Enter file: <input type="file" name="sendfile" size="40">
 * Enter file name: <input type="text" name="filename" size="30">
 * <input type="submit" value="send" name="submit">
 * </form>
 *

 */

#include <stdio.h>
#include <string.h>

#include <curl/curl.h>

Changes to jni/curl/docs/examples/postit2.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 *
 * <form method="post" enctype="multipart/form-data" action="examplepost.cgi">
 * Enter file: <input type="file" name="sendfile" size="40">
 * Enter file name: <input type="text" name="filename" size="30">
 * <input type="submit" value="send" name="submit">
 * </form>
 *
 * This exact source code has not been verified to work.
 */

#include <stdio.h>
#include <string.h>

#include <curl/curl.h>








<







30
31
32
33
34
35
36

37
38
39
40
41
42
43
 *
 * <form method="post" enctype="multipart/form-data" action="examplepost.cgi">
 * Enter file: <input type="file" name="sendfile" size="40">
 * Enter file name: <input type="text" name="filename" size="30">
 * <input type="submit" value="send" name="submit">
 * </form>
 *

 */

#include <stdio.h>
#include <string.h>

#include <curl/curl.h>

Changes to jni/curl/docs/examples/resolve.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/sampleconv.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/sendrecv.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/shared-connection-cache.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/smooth-gtk-thread.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/smtp-mime.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/sslbackend.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

    for(i = 0; list[i]; i++)
      printf("SSL backend #%d: '%s' (ID: %d)\n",
             i, list[i]->name, list[i]->id);

    return 0;
  }
  else if(isdigit(*name)) {
    int id = atoi(name);

    result = curl_global_sslset((curl_sslbackend)id, NULL, NULL);
  }
  else
    result = curl_global_sslset(-1, name, NULL);








|







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

    for(i = 0; list[i]; i++)
      printf("SSL backend #%d: '%s' (ID: %d)\n",
             i, list[i]->name, list[i]->id);

    return 0;
  }
  else if(isdigit((int)(unsigned char)*name)) {
    int id = atoi(name);

    result = curl_global_sslset((curl_sslbackend)id, NULL, NULL);
  }
  else
    result = curl_global_sslset(-1, name, NULL);

Changes to jni/curl/docs/examples/synctime.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/threaded-shared-conn.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/examples/threaded-ssl.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/docs/libcurl/curl_easy_cleanup.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_cleanup 3 "August 09, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_easy_cleanup - End a libcurl easy handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "void curl_easy_cleanup(CURL *" handle ");"







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_cleanup 3 "August 09, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_cleanup - End a libcurl easy handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "void curl_easy_cleanup(CURL *" handle ");"
Changes to jni/curl/docs/libcurl/curl_easy_duphandle.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_duphandle 3 "March 01, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_easy_duphandle - Clone a libcurl session handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURL *curl_easy_duphandle(CURL *"handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_duphandle 3 "March 01, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_duphandle - Clone a libcurl session handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURL *curl_easy_duphandle(CURL *"handle ");"
Changes to jni/curl/docs/libcurl/curl_easy_escape.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_escape 3 "August 12, 2017" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_easy_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_easy_escape( CURL *" curl ", const char *" string







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_escape 3 "August 12, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_easy_escape( CURL *" curl ", const char *" string
Changes to jni/curl/docs/libcurl/curl_easy_getinfo.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_getinfo 3 "August 06, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_easy_getinfo - extract information from a curl handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.B "CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );"







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_getinfo 3 "August 06, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_getinfo - extract information from a curl handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.B "CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );"
Changes to jni/curl/docs/libcurl/curl_easy_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_init 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_easy_init - Start a libcurl easy session
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURL *curl_easy_init( );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_init 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_init - Start a libcurl easy session
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURL *curl_easy_init( );"
Changes to jni/curl/docs/libcurl/curl_easy_pause.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_pause 3 "May 01, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_easy_pause - pause and unpause a connection
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURLcode curl_easy_pause(CURL *"handle ", int "bitmask " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_pause 3 "May 01, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_pause - pause and unpause a connection
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "CURLcode curl_easy_pause(CURL *"handle ", int "bitmask " );"
Changes to jni/curl/docs/libcurl/curl_easy_perform.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_perform 3 "September 23, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_easy_perform - perform a blocking file transfer
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_easy_perform(CURL *" easy_handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_perform 3 "September 23, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_perform - perform a blocking file transfer
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_easy_perform(CURL *" easy_handle ");"
Changes to jni/curl/docs/libcurl/curl_easy_recv.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_recv 3 "December 18, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_easy_recv - receives raw data on an "easy" connection
.SH SYNOPSIS
.B #include <curl/easy.h>
.sp
.BI "CURLcode curl_easy_recv( CURL *" curl ", void *" buffer ","







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_recv 3 "December 18, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_recv - receives raw data on an "easy" connection
.SH SYNOPSIS
.B #include <curl/easy.h>
.sp
.BI "CURLcode curl_easy_recv( CURL *" curl ", void *" buffer ","
Changes to jni/curl/docs/libcurl/curl_easy_reset.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_reset 3 "September 23, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_easy_reset - reset all options of a libcurl session handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "void curl_easy_reset(CURL *"handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_reset 3 "September 23, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_reset - reset all options of a libcurl session handle
.SH SYNOPSIS
.B #include <curl/curl.h>

.BI "void curl_easy_reset(CURL *"handle ");"
Changes to jni/curl/docs/libcurl/curl_easy_send.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_send 3 "December 18, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_easy_send - sends raw data over an "easy" connection
.SH SYNOPSIS
.B #include <curl/easy.h>
.sp
.BI "CURLcode curl_easy_send( CURL *" curl ", const void *" buffer ","







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_send 3 "December 18, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_send - sends raw data over an "easy" connection
.SH SYNOPSIS
.B #include <curl/easy.h>
.sp
.BI "CURLcode curl_easy_send( CURL *" curl ", const void *" buffer ","
Changes to jni/curl/docs/libcurl/curl_easy_setopt.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_setopt 3 "August 09, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_easy_setopt \- set options for a curl easy handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_setopt 3 "August 09, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_setopt \- set options for a curl easy handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);
Changes to jni/curl/docs/libcurl/curl_easy_strerror.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_strerror 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_easy_strerror - return string describing error code
.SH SYNOPSIS
#include <curl/curl.h>

const char *curl_easy_strerror(CURLcode errornum);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_easy_strerror 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_strerror - return string describing error code
.SH SYNOPSIS
#include <curl/curl.h>

const char *curl_easy_strerror(CURLcode errornum);
Changes to jni/curl/docs/libcurl/curl_easy_unescape.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_unescape 3 "October 04, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_easy_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_easy_unescape( CURL *" curl ", const char *" url







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_easy_unescape 3 "October 04, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_easy_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_easy_unescape( CURL *" curl ", const char *" url
Changes to jni/curl/docs/libcurl/curl_escape.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_escape 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_escape( const char *" url ", int "length " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_escape 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_escape - URL encodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_escape( const char *" url ", int "length " );"
Changes to jni/curl/docs/libcurl/curl_formadd.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formadd 3 "December 11, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLFORMcode curl_formadd(struct curl_httppost ** " firstitem,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formadd 3 "December 11, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_formadd - add a section to a multipart/formdata HTTP POST
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLFORMcode curl_formadd(struct curl_httppost ** " firstitem,
Changes to jni/curl/docs/libcurl/curl_formfree.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formfree 3 "August 09, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_formfree - free a previously build multipart/formdata HTTP POST chain
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_formfree(struct curl_httppost *" form);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formfree 3 "August 09, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_formfree - free a previously build multipart/formdata HTTP POST chain
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_formfree(struct curl_httppost *" form);
Changes to jni/curl/docs/libcurl/curl_formget.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formget 3 "September 02, 2017" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_formget - serialize a previously built multipart/formdata HTTP POST chain
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_formget 3 "September 02, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_formget - serialize a previously built multipart/formdata HTTP POST chain
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_free.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_free 3 "August 09, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_free - reclaim memory that has been obtained through a libcurl call
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_free( char *" ptr " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_free 3 "August 09, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_free - reclaim memory that has been obtained through a libcurl call
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_free( char *" ptr " );"
Changes to jni/curl/docs/libcurl/curl_getdate.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_getdate 3 "January 18, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_getdate - Convert a date string to number of seconds
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "time_t curl_getdate(char *" datestring ", time_t *"now " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_getdate 3 "January 18, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_getdate - Convert a date string to number of seconds
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "time_t curl_getdate(char *" datestring ", time_t *"now " );"
Changes to jni/curl/docs/libcurl/curl_getenv.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_getenv 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_getenv - return value for environment name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_getenv(const char *" name ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_getenv 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_getenv - return value for environment name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_getenv(const char *" name ");"
Changes to jni/curl/docs/libcurl/curl_global_cleanup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_cleanup 3 "September 20, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_global_cleanup - global libcurl cleanup
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_global_cleanup(void);"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_cleanup 3 "September 20, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_global_cleanup - global libcurl cleanup
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_global_cleanup(void);"
Changes to jni/curl/docs/libcurl/curl_global_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_init 3 "April 17, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_global_init - Global libcurl initialisation
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_global_init(long " flags ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_init 3 "April 17, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_global_init - Global libcurl initialisation
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_global_init(long " flags ");"
Changes to jni/curl/docs/libcurl/curl_global_init_mem.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_init_mem 3 "August 11, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_global_init_mem - Global libcurl initialisation with memory callbacks
.SH SYNOPSIS
.B #include <curl/curl.h>
.nf
.B "CURLcode curl_global_init_mem(long " flags,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_init_mem 3 "August 11, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_global_init_mem - Global libcurl initialisation with memory callbacks
.SH SYNOPSIS
.B #include <curl/curl.h>
.nf
.B "CURLcode curl_global_init_mem(long " flags,
Changes to jni/curl/docs/libcurl/curl_global_sslset.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_sslset 3 "October 30, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_global_sslset - Select SSL backend to use with libcurl
.SH SYNOPSIS
.B #include <curl/curl.h>
.nf








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_global_sslset 3 "October 30, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_global_sslset - Select SSL backend to use with libcurl
.SH SYNOPSIS
.B #include <curl/curl.h>
.nf

Changes to jni/curl/docs/libcurl/curl_mime_addpart.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_addpart 3 "September 22, 2017" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_mime_addpart - append a new empty part to a mime structure
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_mimepart * curl_mime_addpart(curl_mime * " mime ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_addpart 3 "September 22, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_addpart - append a new empty part to a mime structure
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_mimepart * curl_mime_addpart(curl_mime * " mime ");"
Changes to jni/curl/docs/libcurl/curl_mime_data.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_data 3 "September 22, 2017" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_mime_data - set a mime part's body data from memory
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_data(curl_mimepart * " part ", const char * " data







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_data 3 "September 22, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_data - set a mime part's body data from memory
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_data(curl_mimepart * " part ", const char * " data
Changes to jni/curl/docs/libcurl/curl_mime_data_cb.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_data_cb 3 "April 17, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_mime_data_cb - set a callback-based data source for a mime part's body
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
size_t readfunc(char *buffer, size_t size, size_t nitems, void *arg);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_data_cb 3 "April 17, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_data_cb - set a callback-based data source for a mime part's body
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
size_t readfunc(char *buffer, size_t size, size_t nitems, void *arg);
Changes to jni/curl/docs/libcurl/curl_mime_encoder.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_encoder 3 "September 05, 2017" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_mime_encoder - set a mime part's encoder and content transfer encoding
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_encoder(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_encoder 3 "September 05, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_encoder - set a mime part's encoder and content transfer encoding
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_encoder(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_filedata.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_filedata 3 "April 17, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_mime_filedata - set a mime part's body data from a file contents
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_filedata(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_filedata 3 "April 17, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_filedata - set a mime part's body data from a file contents
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_filedata(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_filename.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_filename 3 "September 22, 2017" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_mime_filename - set a mime part's remote file name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_filename(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_filename 3 "September 22, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_filename - set a mime part's remote file name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_filename(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_free.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_free 3 "August 09, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_mime_free - free a previously built mime structure
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_mime_free(curl_mime *" mime);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_free 3 "August 09, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_free - free a previously built mime structure
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_mime_free(curl_mime *" mime);
Changes to jni/curl/docs/libcurl/curl_mime_headers.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_headers 3 "September 22, 2017" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_mime_headers - set a mime part's custom headers
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_headers(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_headers 3 "September 22, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_headers - set a mime part's custom headers
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_headers(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_init 3 "September 22, 2017" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_mime_init - create a mime handle
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_mime * curl_mime_init(CURL * " easy_handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_init 3 "September 22, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_init - create a mime handle
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_mime * curl_mime_init(CURL * " easy_handle ");"
Changes to jni/curl/docs/libcurl/curl_mime_name.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_name 3 "September 22, 2017" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_mime_name - set a mime part's name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_name(curl_mimepart * " part ", const char * " name ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_name 3 "September 22, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_name - set a mime part's name
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_name(curl_mimepart * " part ", const char * " name ");"
Changes to jni/curl/docs/libcurl/curl_mime_subparts.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_subparts 3 "September 05, 2017" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_mime_subparts - set subparts of a multipart mime part
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_subparts(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_subparts 3 "September 05, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_subparts - set subparts of a multipart mime part
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_subparts(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mime_type.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_type 3 "April 17, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_mime_type - set a mime part's content type
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_type(curl_mimepart * " part ,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_mime_type 3 "April 17, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_mime_type - set a mime part's content type
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLcode curl_mime_type(curl_mimepart * " part ,
Changes to jni/curl/docs/libcurl/curl_mprintf.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_printf 3 "April 01, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf
curl_mvaprintf, curl_mvfprintf, curl_mvprintf, curl_mvsnprintf,
curl_mvsprintf - formatted output conversion
.SH SYNOPSIS
.B #include <curl/mprintf.h>







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_printf 3 "April 01, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf
curl_mvaprintf, curl_mvfprintf, curl_mvprintf, curl_mvsnprintf,
curl_mvsprintf - formatted output conversion
.SH SYNOPSIS
.B #include <curl/mprintf.h>
Changes to jni/curl/docs/libcurl/curl_multi_add_handle.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_add_handle 3 "June 30, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_add_handle - add an easy handle to a multi session
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_add_handle 3 "June 30, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_add_handle - add an easy handle to a multi session
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle);
Changes to jni/curl/docs/libcurl/curl_multi_assign.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_assign 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_assign \- set data to associate with an internal socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_assign 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_assign \- set data to associate with an internal socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_assign(CURLM *multi_handle, curl_socket_t sockfd,
Changes to jni/curl/docs/libcurl/curl_multi_cleanup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_cleanup 3 "August 09, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_cleanup - close down a multi session
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLMcode curl_multi_cleanup( CURLM *multi_handle );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_cleanup 3 "August 09, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_cleanup - close down a multi session
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLMcode curl_multi_cleanup( CURLM *multi_handle );"
Changes to jni/curl/docs/libcurl/curl_multi_fdset.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_fdset 3 "November 09, 2017" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_fdset - extracts file descriptor information from a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_fdset 3 "November 09, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_fdset - extracts file descriptor information from a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_info_read.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_info_read 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_info_read - read multi stack informationals
.SH SYNOPSIS
#include <curl/curl.h>

CURLMsg *curl_multi_info_read( CURLM *multi_handle,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_info_read 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_info_read - read multi stack informationals
.SH SYNOPSIS
#include <curl/curl.h>

CURLMsg *curl_multi_info_read( CURLM *multi_handle,
Changes to jni/curl/docs/libcurl/curl_multi_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_init 3 "September 23, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_init - create a multi handle
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLM *curl_multi_init( );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_init 3 "September 23, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_init - create a multi handle
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLM *curl_multi_init( );"
Changes to jni/curl/docs/libcurl/curl_multi_perform.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_perform 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_perform - reads/writes available data from each easy handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);







|













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_perform 3 "October 31, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_perform - reads/writes available data from each easy handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);
43
44
45
46
47
48
49


50
51
52
53
54
55
56

If the amount of \fIrunning_handles\fP is changed from the previous call (or
is less than the amount of easy handles you've added to the multi handle), you
know that there is one or more transfers less "running". You can then call
\fIcurl_multi_info_read(3)\fP to get information about each individual
completed transfer, and that returned info includes CURLcode and more. If an
added handle fails very quickly, it may never be counted as a running_handle.



When \fIrunning_handles\fP is set to zero (0) on the return of this function,
there is no longer any transfers in progress.
.SH EXAMPLE
.nf
#ifdef _WIN32
#define SHORT_SLEEP Sleep(100)







>
>







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

If the amount of \fIrunning_handles\fP is changed from the previous call (or
is less than the amount of easy handles you've added to the multi handle), you
know that there is one or more transfers less "running". You can then call
\fIcurl_multi_info_read(3)\fP to get information about each individual
completed transfer, and that returned info includes CURLcode and more. If an
added handle fails very quickly, it may never be counted as a running_handle.
You could use \fIcurl_multi_info_read(3)\fP to track actual status of the
added handles in that case.

When \fIrunning_handles\fP is set to zero (0) on the return of this function,
there is no longer any transfers in progress.
.SH EXAMPLE
.nf
#ifdef _WIN32
#define SHORT_SLEEP Sleep(100)
Changes to jni/curl/docs/libcurl/curl_multi_poll.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_poll 3 "July 29, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_poll - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_poll 3 "July 29, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_poll - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_remove_handle.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_remove_handle 3 "February 19, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_remove_handle - remove an easy handle from a multi session
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_remove_handle 3 "February 19, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_remove_handle - remove an easy handle from a multi session
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle);
Changes to jni/curl/docs/libcurl/curl_multi_setopt.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_setopt 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_setopt \- set options for a curl multi handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param);







|













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_setopt 3 "September 24, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_setopt \- set options for a curl multi handle
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM * multi_handle, CURLMoption option, param);
64
65
66
67
68
69
70


71
72
73
74
75
76
77
78
79
See \fICURLMOPT_SOCKETFUNCTION(3)\fP
.IP CURLMOPT_SOCKETDATA
See \fICURLMOPT_SOCKETDATA(3)\fP
.IP CURLMOPT_TIMERFUNCTION
See \fICURLMOPT_TIMERFUNCTION(3)\fP
.IP CURLMOPT_TIMERDATA
See \fICURLMOPT_TIMERDATA(3)\fP


.SH RETURNS
The standard CURLMcode for multi interface error codes. Note that it returns a
CURLM_UNKNOWN_OPTION if you try setting an option that this version of libcurl
doesn't know of.
.SH AVAILABILITY
This function was added in libcurl 7.15.4.
.SH "SEE ALSO"
.BR curl_multi_cleanup "(3), " curl_multi_init "(3), "
.BR curl_multi_socket "(3), " curl_multi_info_read "(3)"







>
>









64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
See \fICURLMOPT_SOCKETFUNCTION(3)\fP
.IP CURLMOPT_SOCKETDATA
See \fICURLMOPT_SOCKETDATA(3)\fP
.IP CURLMOPT_TIMERFUNCTION
See \fICURLMOPT_TIMERFUNCTION(3)\fP
.IP CURLMOPT_TIMERDATA
See \fICURLMOPT_TIMERDATA(3)\fP
.IP CURLMOPT_MAX_CONCURRENT_STREAMS
See \fICURLMOPT_MAX_CONCURRENT_STREAMS(3)\fP
.SH RETURNS
The standard CURLMcode for multi interface error codes. Note that it returns a
CURLM_UNKNOWN_OPTION if you try setting an option that this version of libcurl
doesn't know of.
.SH AVAILABILITY
This function was added in libcurl 7.15.4.
.SH "SEE ALSO"
.BR curl_multi_cleanup "(3), " curl_multi_init "(3), "
.BR curl_multi_socket "(3), " curl_multi_info_read "(3)"
Changes to jni/curl/docs/libcurl/curl_multi_socket.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_socket 3 "June 30, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_socket \- reads/writes available data
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_socket 3 "June 30, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_socket \- reads/writes available data
.SH SYNOPSIS
.nf
#include <curl/curl.h>
CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd,
Changes to jni/curl/docs/libcurl/curl_multi_socket_action.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_socket_action 3 "June 10, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_socket_action \- reads/writes available data given an action
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_socket_action 3 "June 10, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_socket_action \- reads/writes available data given an action
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_multi_strerror.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_strerror 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_multi_strerror(CURLMcode " errornum ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_strerror 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_multi_strerror(CURLMcode " errornum ");"
Changes to jni/curl/docs/libcurl/curl_multi_timeout.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_timeout 3 "September 23, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_timeout \- how long to wait for action before proceeding
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_timeout(CURLM *multi_handle, long *timeout);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_timeout 3 "September 23, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_timeout \- how long to wait for action before proceeding
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_timeout(CURLM *multi_handle, long *timeout);
Changes to jni/curl/docs/libcurl/curl_multi_wait.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_wait 3 "June 26, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_multi_wait - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|













|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_multi_wait 3 "October 31, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_multi_wait - polls on all easy handles in a multi handle
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/curl_share_cleanup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_cleanup 3 "August 09, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_share_cleanup - Clean up a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLSHcode curl_share_cleanup(CURLSH *" share_handle ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_cleanup 3 "August 09, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_share_cleanup - Clean up a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLSHcode curl_share_cleanup(CURLSH *" share_handle ");"
Changes to jni/curl/docs/libcurl/curl_share_init.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_init 3 "September 23, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_share_init - Create a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLSH *curl_share_init( );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_init 3 "September 23, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_share_init - Create a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "CURLSH *curl_share_init( );"
Changes to jni/curl/docs/libcurl/curl_share_setopt.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_setopt 3 "June 04, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_share_setopt - Set options for a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
CURLSHcode curl_share_setopt(CURLSH *share, CURLSHoption option, parameter);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_setopt 3 "June 04, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_share_setopt - Set options for a shared object
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
CURLSHcode curl_share_setopt(CURLSH *share, CURLSHoption option, parameter);
Changes to jni/curl/docs/libcurl/curl_share_strerror.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_strerror 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_share_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_share_strerror(CURLSHcode " errornum ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_share_strerror 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_share_strerror - return string describing error code
.SH SYNOPSIS
.nf
.B #include <curl/curl.h>
.BI "const char *curl_share_strerror(CURLSHcode " errornum ");"
Changes to jni/curl/docs/libcurl/curl_slist_append.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_slist_append 3 "January 02, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_slist_append - add a string to an slist
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "struct curl_slist *curl_slist_append(struct curl_slist *" list,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_slist_append 3 "January 02, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_slist_append - add a string to an slist
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "struct curl_slist *curl_slist_append(struct curl_slist *" list,
Changes to jni/curl/docs/libcurl/curl_slist_free_all.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_slist_free_all 3 "September 23, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_slist_free_all - free an entire curl_slist list
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_slist_free_all(struct curl_slist *" list);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_slist_free_all 3 "September 23, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_slist_free_all - free an entire curl_slist list
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "void curl_slist_free_all(struct curl_slist *" list);
Changes to jni/curl/docs/libcurl/curl_strequal.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_strequal 3 "June 29, 2017" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_strequal, curl_strnequal - case insensitive string comparisons
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "int curl_strequal(char *" str1 ", char *" str2 ");"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_strequal 3 "June 29, 2017" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_strequal, curl_strnequal - case insensitive string comparisons
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "int curl_strequal(char *" str1 ", char *" str2 ");"
Changes to jni/curl/docs/libcurl/curl_unescape.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_unescape 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_unescape( const char *" url ", int "length " );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_unescape 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_unescape - URL decodes the given string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_unescape( const char *" url ", int "length " );"
Changes to jni/curl/docs/libcurl/curl_url.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url 3 "March 22, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_url - returns a new CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLU *curl_url();







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url 3 "March 22, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_url - returns a new CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLU *curl_url();
Changes to jni/curl/docs/libcurl/curl_url_cleanup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_cleanup 3 "September 08, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_url_cleanup - free a CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

void curl_url_cleanup(CURLU *handle);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_cleanup 3 "September 08, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_url_cleanup - free a CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

void curl_url_cleanup(CURLU *handle);
Changes to jni/curl/docs/libcurl/curl_url_dup.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_dup 3 "September 08, 2018" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_url_dup - duplicate a CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLU *curl_url_dup(CURLU *inhandle);







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_dup 3 "September 08, 2018" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_url_dup - duplicate a CURLU handle
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLU *curl_url_dup(CURLU *inhandle);
Changes to jni/curl/docs/libcurl/curl_url_get.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_get 3 "May 03, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_url_get - extract a part from a URL
.SH SYNOPSIS
.B #include <curl/curl.h>

.nf







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_get 3 "September 25, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_url_get - extract a part from a URL
.SH SYNOPSIS
.B #include <curl/curl.h>

.nf
73
74
75
76
77
78
79
80
81

82
83
84
85
86
87
88
normalized and possibly cleaned up version of what was previously parsed.
.IP CURLUPART_SCHEME
Scheme cannot be URL decoded on get.
.IP CURLUPART_USER
.IP CURLUPART_PASSWORD
.IP CURLUPART_OPTIONS
.IP CURLUPART_HOST
If the host part is an IPv6 numeric address, the zoneid will not be part of
the extracted host but is provided separately in \fICURLUPART_ZONEID\fP.

.IP CURLUPART_ZONEID
If the host name is a numeric IPv6 address, this field might also be set.
.IP CURLUPART_PORT
Port cannot be URL decoded on get.
.IP CURLUPART_PATH
.IP CURLUPART_QUERY
The query part will also get pluses converted to space when asked to URL







|
|
>







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
normalized and possibly cleaned up version of what was previously parsed.
.IP CURLUPART_SCHEME
Scheme cannot be URL decoded on get.
.IP CURLUPART_USER
.IP CURLUPART_PASSWORD
.IP CURLUPART_OPTIONS
.IP CURLUPART_HOST
The host name. If it is an IPv6 numeric address, the zoneid will not be part
of it but is provided separately in \fICURLUPART_ZONEID\fP. IPv6 numerical
addresses are returned within brackets ([]).
.IP CURLUPART_ZONEID
If the host name is a numeric IPv6 address, this field might also be set.
.IP CURLUPART_PORT
Port cannot be URL decoded on get.
.IP CURLUPART_PATH
.IP CURLUPART_QUERY
The query part will also get pluses converted to space when asked to URL
Changes to jni/curl/docs/libcurl/curl_url_set.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_set 3 "May 03, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_url_set - set a URL part
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLUcode curl_url_set(CURLU *url,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_url_set 3 "September 25, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_url_set - set a URL part
.SH SYNOPSIS
.B #include <curl/curl.h>

CURLUcode curl_url_set(CURLU *url,
57
58
59
60
61
62
63
64
65

66
67
68
69
70
71
72
pointer.
.IP CURLUPART_SCHEME
Scheme cannot be URL decoded on set.
.IP CURLUPART_USER
.IP CURLUPART_PASSWORD
.IP CURLUPART_OPTIONS
.IP CURLUPART_HOST
The host name can use IDNA. The string must then be encoded as your locale
says or UTF-8 (when winidn is used).

.IP CURLUPART_ZONEID
If the host name is a numeric IPv6 address, this field can also be set.
.IP CURLUPART_PORT
Port cannot be URL encoded on set. The given port number is provided as a
string and the decimal number must be between 1 and 65535. Anything else will
return an error.
.IP CURLUPART_PATH







|
|
>







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
pointer.
.IP CURLUPART_SCHEME
Scheme cannot be URL decoded on set.
.IP CURLUPART_USER
.IP CURLUPART_PASSWORD
.IP CURLUPART_OPTIONS
.IP CURLUPART_HOST
The host name. If it is IDNA the string must then be encoded as your locale
says or UTF-8 (when WinIDN is used). If it is a bracketed IPv6 numeric address
it may contain a zone id (or you can use CURLUPART_ZONEID).
.IP CURLUPART_ZONEID
If the host name is a numeric IPv6 address, this field can also be set.
.IP CURLUPART_PORT
Port cannot be URL encoded on set. The given port number is provided as a
string and the decimal number must be between 1 and 65535. Anything else will
return an error.
.IP CURLUPART_PATH
108
109
110
111
112
113
114






115
116
117
118
119
120
121
option if both are set.
.IP CURLU_GUESS_SCHEME
If set, will make libcurl allow the URL to be set without a scheme and it
instead "guesses" which scheme that was intended based on the host name.  If
the outermost sub-domain name matches DICT, FTP, IMAP, LDAP, POP3 or SMTP then
that scheme will be used, otherwise it picks HTTP. Conflicts with the
\fICURLU_DEFAULT_SCHEME\fP option which takes precedence if both are set.






.SH RETURN VALUE
Returns a CURLUcode error value, which is CURLUE_OK (0) if everything went
fine.

If this function returns an error, no URL part is returned.
.SH EXAMPLE
.nf







>
>
>
>
>
>







109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
option if both are set.
.IP CURLU_GUESS_SCHEME
If set, will make libcurl allow the URL to be set without a scheme and it
instead "guesses" which scheme that was intended based on the host name.  If
the outermost sub-domain name matches DICT, FTP, IMAP, LDAP, POP3 or SMTP then
that scheme will be used, otherwise it picks HTTP. Conflicts with the
\fICURLU_DEFAULT_SCHEME\fP option which takes precedence if both are set.
.IP CURLU_NO_AUTHORITY
If set, skips authority checks. The RFC allows individual schemes to omit the
host part (normally the only mandatory part of the authority), but libcurl
cannot know whether this is permitted for custom schemes. Specifying the flag
permits empty authority sections, similar to how file scheme is handled.

.SH RETURN VALUE
Returns a CURLUcode error value, which is CURLUE_OK (0) if everything went
fine.

If this function returns an error, no URL part is returned.
.SH EXAMPLE
.nf
Changes to jni/curl/docs/libcurl/curl_version.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_version 3 "February 03, 2016" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_version - returns the libcurl version string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_version( );"







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH curl_version 3 "February 03, 2016" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_version - returns the libcurl version string
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "char *curl_version( );"
Changes to jni/curl/docs/libcurl/curl_version_info.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_version_info 3 "August 13, 2019" "libcurl 7.66.0" "libcurl Manual"

.SH NAME
curl_version_info - returns run-time libcurl version info
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_version_info_data *curl_version_info( CURLversion "age ");"







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH curl_version_info 3 "August 13, 2019" "libcurl 7.67.0" "libcurl Manual"

.SH NAME
curl_version_info - returns run-time libcurl version info
.SH SYNOPSIS
.B #include <curl/curl.h>
.sp
.BI "curl_version_info_data *curl_version_info( CURLversion "age ");"
Changes to jni/curl/docs/libcurl/libcurl-easy.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "February 03, 2016" "libcurl 7.66.0" "libcurl easy interface"

.SH NAME
libcurl-easy \- easy interface overview
.SH DESCRIPTION
When using libcurl's "easy" interface you init your session and get a handle
(often referred to as an "easy handle"), which you use as input to the easy
interface functions you use. Use \fIcurl_easy_init(3)\fP to get the handle.







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "February 03, 2016" "libcurl 7.67.0" "libcurl easy interface"

.SH NAME
libcurl-easy \- easy interface overview
.SH DESCRIPTION
When using libcurl's "easy" interface you init your session and get a handle
(often referred to as an "easy handle"), which you use as input to the easy
interface functions you use. Use \fIcurl_easy_init(3)\fP to get the handle.
Changes to jni/curl/docs/libcurl/libcurl-env.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-env 3 "April 17, 2018" "libcurl 7.66.0" "libcurl environment variables"

.SH NAME
libcurl-env \- environment variables libcurl understands
.SH DESCRIPTION
libcurl reads and understands a set of environment variables that if set will
control and change behaviors. This is the full list of variables to set and
description of what they do. Also note that curl, the command line tool,







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-env 3 "April 17, 2018" "libcurl 7.67.0" "libcurl environment variables"

.SH NAME
libcurl-env \- environment variables libcurl understands
.SH DESCRIPTION
libcurl reads and understands a set of environment variables that if set will
control and change behaviors. This is the full list of variables to set and
description of what they do. Also note that curl, the command line tool,
Changes to jni/curl/docs/libcurl/libcurl-errors.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-errors 3 "May 11, 2019" "libcurl 7.66.0" "libcurl errors"

.SH NAME
libcurl-errors \- error codes in libcurl
.SH DESCRIPTION
This man page includes most, if not all, available error codes in libcurl.
Why they occur and possibly what you can do to fix the problem are also included.
.SH "CURLcode"







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-errors 3 "October 31, 2019" "libcurl 7.67.0" "libcurl errors"

.SH NAME
libcurl-errors \- error codes in libcurl
.SH DESCRIPTION
This man page includes most, if not all, available error codes in libcurl.
Why they occur and possibly what you can do to fix the problem are also included.
.SH "CURLcode"
Changes to jni/curl/docs/libcurl/libcurl-multi.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-multi 3 "June 30, 2018" "libcurl 7.66.0" "libcurl multi interface"

.SH NAME
libcurl-multi \- how to use the multi interface
.SH DESCRIPTION
This is an overview on how to use the libcurl multi interface in your C
programs. There are specific man pages for each function mentioned in
here. There's also the \fIlibcurl-tutorial(3)\fP man page for a complete







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-multi 3 "October 31, 2019" "libcurl 7.67.0" "libcurl multi interface"

.SH NAME
libcurl-multi \- how to use the multi interface
.SH DESCRIPTION
This is an overview on how to use the libcurl multi interface in your C
programs. There are specific man pages for each function mentioned in
here. There's also the \fIlibcurl-tutorial(3)\fP man page for a complete
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
wait for input on your own private file descriptors at the same time
\fIcurl_multi_timeout(3)\fP also helps you with providing a suitable timeout
period for your select() calls.

\fIcurl_multi_perform(3)\fP stores the number of still running transfers in
one of its input arguments, and by reading that you can figure out when all
the transfers in the multi handles are done. 'done' does not mean
successful. One or more of the transfers may have failed. Tracking when this
number changes, you know when one or more transfers are done.

To get information about completed transfers, to figure out success or not and
similar, \fIcurl_multi_info_read(3)\fP should be called. It can return a
message about a current or previous transfer. Repeated invokes of the function
get more messages until the message queue is empty. The information you
receive there includes an easy handle pointer which you may use to identify
which easy handle the information regards.







|
<







94
95
96
97
98
99
100
101

102
103
104
105
106
107
108
wait for input on your own private file descriptors at the same time
\fIcurl_multi_timeout(3)\fP also helps you with providing a suitable timeout
period for your select() calls.

\fIcurl_multi_perform(3)\fP stores the number of still running transfers in
one of its input arguments, and by reading that you can figure out when all
the transfers in the multi handles are done. 'done' does not mean
successful. One or more of the transfers may have failed. 


To get information about completed transfers, to figure out success or not and
similar, \fIcurl_multi_info_read(3)\fP should be called. It can return a
message about a current or previous transfer. Repeated invokes of the function
get more messages until the message queue is empty. The information you
receive there includes an easy handle pointer which you may use to identify
which easy handle the information regards.
Changes to jni/curl/docs/libcurl/libcurl-security.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-security 3 "July 16, 2019" "libcurl 7.66.0" "libcurl security"

.SH NAME
libcurl-security \- security considerations when using libcurl
.SH "Security"
The libcurl project takes security seriously.  The library is written with
caution and precautions are taken to mitigate many kinds of risks encountered
while operating with potentially malicious servers on the Internet. It is a







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-security 3 "July 16, 2019" "libcurl 7.67.0" "libcurl security"

.SH NAME
libcurl-security \- security considerations when using libcurl
.SH "Security"
The libcurl project takes security seriously.  The library is written with
caution and precautions are taken to mitigate many kinds of risks encountered
while operating with potentially malicious servers on the Internet. It is a
Changes to jni/curl/docs/libcurl/libcurl-share.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-share 3 "November 27, 2017" "libcurl 7.66.0" "libcurl share interface"

.SH NAME
libcurl-share \- how to use the share interface
.SH DESCRIPTION
This is an overview on how to use the libcurl share interface in your C
programs. There are specific man pages for each function mentioned in
here.







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-share 3 "November 27, 2017" "libcurl 7.67.0" "libcurl share interface"

.SH NAME
libcurl-share \- how to use the share interface
.SH DESCRIPTION
This is an overview on how to use the libcurl share interface in your C
programs. There are specific man pages for each function mentioned in
here.
Changes to jni/curl/docs/libcurl/libcurl-symbols.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-symbols 3 "sep 11, 2019" "libcurl 7.41.0" "libcurl symbols"
.SH NAME
libcurl-symbols \- libcurl symbol version information
.SH "libcurl symbols"
This man page details version information for public symbols provided in the
libcurl header files. This lists the first version in which the symbol was
introduced and for some symbols two additional information pieces:








|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl-symbols 3 "nov  6, 2019" "libcurl 7.41.0" "libcurl symbols"
.SH NAME
libcurl-symbols \- libcurl symbol version information
.SH "libcurl symbols"
This man page details version information for public symbols provided in the
libcurl header files. This lists the first version in which the symbol was
introduced and for some symbols two additional information pieces:

699
700
701
702
703
704
705


706
707
708
709
710
711
712
Introduced in 7.16.3
.IP CURLMOPT_MAX_HOST_CONNECTIONS
Introduced in 7.30.0
.IP CURLMOPT_MAX_PIPELINE_LENGTH
Introduced in 7.30.0
.IP CURLMOPT_MAX_TOTAL_CONNECTIONS
Introduced in 7.30.0


.IP CURLMOPT_PIPELINING
Introduced in 7.16.0
.IP CURLMOPT_PIPELINING_SERVER_BL
Introduced in 7.30.0
.IP CURLMOPT_PIPELINING_SITE_BL
Introduced in 7.30.0
.IP CURLMOPT_PUSHDATA







>
>







699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
Introduced in 7.16.3
.IP CURLMOPT_MAX_HOST_CONNECTIONS
Introduced in 7.30.0
.IP CURLMOPT_MAX_PIPELINE_LENGTH
Introduced in 7.30.0
.IP CURLMOPT_MAX_TOTAL_CONNECTIONS
Introduced in 7.30.0
.IP CURLMOPT_MAX_CONCURRENT_STREAMS
Introduced in 7.67.0
.IP CURLMOPT_PIPELINING
Introduced in 7.16.0
.IP CURLMOPT_PIPELINING_SERVER_BL
Introduced in 7.30.0
.IP CURLMOPT_PIPELINING_SITE_BL
Introduced in 7.30.0
.IP CURLMOPT_PUSHDATA
1649
1650
1651
1652
1653
1654
1655


1656
1657
1658
1659
1660
1661
1662
Introduced in 7.62.0
.IP CURLU_GUESS_SCHEME
Introduced in 7.62.0
.IP CURLU_NON_SUPPORT_SCHEME
Introduced in 7.62.0
.IP CURLU_NO_DEFAULT_PORT
Introduced in 7.62.0


.IP CURLU_PATH_AS_IS
Introduced in 7.62.0
.IP CURLU_URLDECODE
Introduced in 7.62.0
.IP CURLU_URLENCODE
Introduced in 7.62.0
.IP CURLVERSION_FIFTH







>
>







1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
Introduced in 7.62.0
.IP CURLU_GUESS_SCHEME
Introduced in 7.62.0
.IP CURLU_NON_SUPPORT_SCHEME
Introduced in 7.62.0
.IP CURLU_NO_DEFAULT_PORT
Introduced in 7.62.0
.IP CURLU_NO_AUTHORITY
Introduced in 7.67.0
.IP CURLU_PATH_AS_IS
Introduced in 7.62.0
.IP CURLU_URLDECODE
Introduced in 7.62.0
.IP CURLU_URLENCODE
Introduced in 7.62.0
.IP CURLVERSION_FIFTH
1949
1950
1951
1952
1953
1954
1955


1956
1957
1958
1959
1960
1961
1962
Introduced in 7.57.0
.IP CURL_VERSION_CONV
Introduced in 7.15.4
.IP CURL_VERSION_CURLDEBUG
Introduced in 7.19.6
.IP CURL_VERSION_DEBUG
Introduced in 7.10.6


.IP CURL_VERSION_GSSAPI
Introduced in 7.38.0
.IP CURL_VERSION_GSSNEGOTIATE
Introduced in 7.10.6
Deprecated since 7.38.0
.IP CURL_VERSION_HTTP2
Introduced in 7.33.0







>
>







1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
Introduced in 7.57.0
.IP CURL_VERSION_CONV
Introduced in 7.15.4
.IP CURL_VERSION_CURLDEBUG
Introduced in 7.19.6
.IP CURL_VERSION_DEBUG
Introduced in 7.10.6
.IP CURL_VERSION_ESNI
Introduced in 7.67.0
.IP CURL_VERSION_GSSAPI
Introduced in 7.38.0
.IP CURL_VERSION_GSSNEGOTIATE
Introduced in 7.10.6
Deprecated since 7.38.0
.IP CURL_VERSION_HTTP2
Introduced in 7.33.0
Changes to jni/curl/docs/libcurl/libcurl-thread.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-thread 3 "June 30, 2019" "libcurl 7.66.0" "libcurl thread safety"

.SH NAME
libcurl-thread \- libcurl thread safety
.SH "Multi-threading with libcurl"
libcurl is thread safe but has no internal thread synchronization. You may have
to provide your own locking should you meet any of the thread safety exceptions
below.







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-thread 3 "June 30, 2019" "libcurl 7.67.0" "libcurl thread safety"

.SH NAME
libcurl-thread \- libcurl thread safety
.SH "Multi-threading with libcurl"
libcurl is thread safe but has no internal thread synchronization. You may have
to provide your own locking should you meet any of the thread safety exceptions
below.
Changes to jni/curl/docs/libcurl/libcurl-tutorial.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-tutorial 3 "June 08, 2019" "libcurl 7.66.0" "libcurl programming"

.SH NAME
libcurl-tutorial \- libcurl programming tutorial
.SH "Objective"
This document attempts to describe the general principles and some basic
approaches to consider when programming with libcurl. The text will focus
mainly on the C interface but might apply fairly well on other interfaces as







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH libcurl-tutorial 3 "October 31, 2019" "libcurl 7.67.0" "libcurl programming"

.SH NAME
libcurl-tutorial \- libcurl programming tutorial
.SH "Objective"
This document attempts to describe the general principles and some basic
approaches to consider when programming with libcurl. The text will focus
mainly on the C interface but might apply fairly well on other interfaces as
Changes to jni/curl/docs/libcurl/libcurl-url.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "September 10, 2018" "libcurl 7.66.0" "libcurl url interface"

.SH NAME
libcurl-url \- URL interface overview
.SH DESCRIPTION
The URL interface provides a set of functions for parsing and generating URLs.
.SH INCLUDE
You still only include <curl/curl.h> in your code. Note that the URL API was







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "September 10, 2018" "libcurl 7.67.0" "libcurl url interface"

.SH NAME
libcurl-url \- URL interface overview
.SH DESCRIPTION
The URL interface provides a set of functions for parsing and generating URLs.
.SH INCLUDE
You still only include <curl/curl.h> in your code. Note that the URL API was
Changes to jni/curl/docs/libcurl/libcurl.3.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "July 15, 2017" "libcurl 7.66.0" "libcurl overview"

.SH NAME
libcurl \- client-side URL transfers
.SH DESCRIPTION
This is a short overview on how to use libcurl in your C programs. There are
specific man pages for each function mentioned in here. There are also the
\fIlibcurl-easy(3)\fP man page, the \fIlibcurl-multi(3)\fP man page, the







|







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.TH libcurl 3 "July 15, 2017" "libcurl 7.67.0" "libcurl overview"

.SH NAME
libcurl \- client-side URL transfers
.SH DESCRIPTION
This is a short overview on how to use libcurl in your C programs. There are
specific man pages for each function mentioned in here. There are also the
\fIlibcurl-easy(3)\fP man page, the \fIlibcurl-multi(3)\fP man page, the
Changes to jni/curl/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_ACTIVESOCKET 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_ACTIVESOCKET \- get the active socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_ACTIVESOCKET,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_ACTIVESOCKET 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_ACTIVESOCKET \- get the active socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_ACTIVESOCKET,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME_T 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_APPCONNECT_TIME_T 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is completed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CERTINFO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CERTINFO 3 "November 07, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CERTINFO \- get the TLS certificate chain
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CERTINFO,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CERTINFO 3 "November 07, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CERTINFO \- get the TLS certificate chain
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CERTINFO,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONDITION_UNMET 3 "February 23, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONDITION_UNMET \- get info on unmet time conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONDITION_UNMET, long *unmet);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONDITION_UNMET 3 "February 23, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONDITION_UNMET \- get info on unmet time conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONDITION_UNMET, long *unmet);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME \- get the time until connect
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME \- get the time until connect
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME_T 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME_T \- get the time until connect
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONNECT_TIME_T 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONNECT_TIME_T \- get the time until connect
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "June 15, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "June 15, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "June 15, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "June 15, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "March 31, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD_T,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "March 31, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD_T,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_TYPE 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_TYPE \- get Content-Type
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_TYPE, char **ct);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_CONTENT_TYPE 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_CONTENT_TYPE \- get Content-Type
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_TYPE, char **ct);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_COOKIELIST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_COOKIELIST 3 "March 20, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_COOKIELIST \- get all known cookies
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_COOKIELIST,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_COOKIELIST 3 "March 20, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_COOKIELIST \- get all known cookies
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_COOKIELIST,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_EFFECTIVE_URL 3 "May 04, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_EFFECTIVE_URL \- get the last used URL
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_EFFECTIVE_URL, char **urlp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_EFFECTIVE_URL 3 "May 04, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_EFFECTIVE_URL \- get the last used URL
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_EFFECTIVE_URL, char **urlp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_FILETIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME \- get the remote time of the retrieved document
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME, long *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME \- get the remote time of the retrieved document
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME, long *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_FILETIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME_T \- get the remote time of the retrieved document
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FILETIME_T \- get the remote time of the retrieved document
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FTP_ENTRY_PATH 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FTP_ENTRY_PATH, char **path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_FTP_ENTRY_PATH 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FTP_ENTRY_PATH, char **path);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HEADER_SIZE 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HEADER_SIZE \- get size of retrieved headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HEADER_SIZE, long *sizep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HEADER_SIZE 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HEADER_SIZE \- get size of retrieved headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HEADER_SIZE, long *sizep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTPAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTPAUTH_AVAIL, long *authp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTPAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTPAUTH_AVAIL, long *authp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_CONNECTCODE 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_CONNECTCODE, long *p);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_CONNECTCODE 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_CONNECTCODE, long *p);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_VERSION 3 "August 07, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_VERSION \- get the http version used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_VERSION, long *p);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_HTTP_VERSION 3 "August 07, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_HTTP_VERSION \- get the http version used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_VERSION, long *p);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_LASTSOCKET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LASTSOCKET 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LASTSOCKET \- get the last socket used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LASTSOCKET, long *socket);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LASTSOCKET 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LASTSOCKET \- get the last socket used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LASTSOCKET, long *socket);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_LOCAL_IP.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_IP 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_IP \- get local IP address of last connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_IP, char **ip);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_IP 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_IP \- get local IP address of last connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_IP, char **ip);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_PORT 3 "March 16, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_PORT \- get the latest local port number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_PORT, long *portp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_LOCAL_PORT 3 "March 16, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_LOCAL_PORT \- get the latest local port number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_PORT, long *portp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME_T 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NAMELOOKUP_TIME_T 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NUM_CONNECTS 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NUM_CONNECTS \- get number of created connections
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NUM_CONNECTS, long *nump);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_NUM_CONNECTS 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_NUM_CONNECTS \- get number of created connections
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NUM_CONNECTS, long *nump);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_OS_ERRNO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_OS_ERRNO 3 "November 07, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_OS_ERRNO \- get errno number from last connect failure
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_OS_ERRNO, long *errnop);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_OS_ERRNO 3 "November 07, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_OS_ERRNO \- get errno number from last connect failure
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_OS_ERRNO, long *errnop);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME_T 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRETRANSFER_TIME_T 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_IP 3 "March 22, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_IP \- get IP address of last connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_IP, char **ip);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_IP 3 "March 22, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_IP \- get IP address of last connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_IP, char **ip);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_PORT 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_PORT \- get the latest destination port number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_PORT, long *portp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIMARY_PORT 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIMARY_PORT \- get the latest destination port number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_PORT, long *portp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PRIVATE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIVATE 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIVATE \- get the private pointer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIVATE, char **private);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PRIVATE 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PRIVATE \- get the private pointer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIVATE, char **private);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROTOCOL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROTOCOL 3 "April 27, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROTOCOL \- get the protocol used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROTOCOL, long *p);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROTOCOL 3 "April 27, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROTOCOL \- get the protocol used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROTOCOL, long *p);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXYAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXYAUTH_AVAIL, long *authp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXYAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXYAUTH_AVAIL, long *authp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXY_SSL_VERIFYRESULT, long *result);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXY_SSL_VERIFYRESULT, long *result);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_COUNT 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_COUNT \- get the number of redirects
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_COUNT, long *countp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_COUNT 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_COUNT \- get the number of redirects
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_COUNT, long *countp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME 3 "May 17, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME 3 "May 17, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME_T 3 "May 17, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_TIME_T 3 "May 17, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_URL 3 "June 24, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_URL, char **urlp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REDIRECT_URL 3 "June 24, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_URL, char **urlp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REQUEST_SIZE 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REQUEST_SIZE \- get size of sent request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REQUEST_SIZE, long *sizep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_REQUEST_SIZE 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_REQUEST_SIZE \- get size of sent request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REQUEST_SIZE, long *sizep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RESPONSE_CODE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RESPONSE_CODE \- get the last response code
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RESPONSE_CODE, long *codep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RESPONSE_CODE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RESPONSE_CODE \- get the last response code
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RESPONSE_CODE, long *codep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RETRY_AFTER 3 "August 06, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RETRY_AFTER, curl_off_t *retry);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RETRY_AFTER 3 "August 06, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RETRY_AFTER, curl_off_t *retry);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CLIENT_CSEQ, long *cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CLIENT_CSEQ, long *cseq);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CSEQ_RECV, long *cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CSEQ_RECV, long *cseq);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SERVER_CSEQ, long *cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SERVER_CSEQ, long *cseq);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SESSION_ID, char **id);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SESSION_ID, char **id);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SCHEME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SCHEME 3 "April 08, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SCHEME, char **scheme);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SCHEME 3 "April 08, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SCHEME, char **scheme);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD 3 "June 15, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD, double *dlp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD 3 "June 15, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD, double *dlp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD_T, curl_off_t *dlp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD_T, curl_off_t *dlp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD 3 "June 15, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD, double *uploadp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD 3 "June 15, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD, double *uploadp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD_T 3 "March 31, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD_T, curl_off_t *uploadp);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SIZE_UPLOAD_T 3 "March 31, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD_T, curl_off_t *uploadp);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD 3 "June 15, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD \- get download speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD, double *speed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD 3 "June 15, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD \- get download speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD, double *speed);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD_T \- get download speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD_T, curl_off_t *speed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_DOWNLOAD_T \- get download speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD_T, curl_off_t *speed);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD 3 "June 15, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD \- get upload speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD, double *speed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD 3 "June 15, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD \- get upload speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD, double *speed);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD_T 3 "March 31, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD_T \- get upload speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD_T, curl_off_t *speed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SPEED_UPLOAD_T 3 "March 31, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SPEED_UPLOAD_T \- get upload speed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD_T, curl_off_t *speed);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_ENGINES 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_ENGINES,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_ENGINES 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_ENGINES,
Changes to jni/curl/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_VERIFYRESULT 3 "March 21, 2018" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_VERIFYRESULT, long *result);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_SSL_VERIFYRESULT 3 "March 21, 2018" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_VERIFYRESULT, long *result);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME_T 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_STARTTRANSFER_TIME_T 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_TLS_SESSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SESSION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TLS_SESSION \- get TLS session info
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SESSION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TLS_SESSION \- get TLS session info
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SSL_PTR 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TLS_SSL_PTR 3 "July 16, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME \- get total time of previous transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME, double *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME \- get total time of previous transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME, double *timep);
Changes to jni/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME_T 3 "August 26, 2019" "libcurl 7.66.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME_T, curl_off_t *timep);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLINFO_TOTAL_TIME_T 3 "August 26, 2019" "libcurl 7.67.0" "curl_easy_getinfo options"

.SH NAME
CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME_T, curl_off_t *timep);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "April 05, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAXCONNECTS 3 "September 23, 2018" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAXCONNECTS \- set size of connection cache
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAXCONNECTS, long max);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAXCONNECTS 3 "September 23, 2018" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAXCONNECTS \- set size of connection cache
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAXCONNECTS, long max);
Added jni/curl/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3.
















































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "06 Nov 2019" "libcurl 7.67.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_MAX_CONCURRENT_STREAMS \- set max concurrent streams for http2
.SH SYNOPSIS
.nf
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_CONCURRENT_STREAMS,
                            long max);
.fi
.SH DESCRIPTION
Pass a long indicating the \fBmax\fP. The set number will be used as the
maximum number of concurrent streams for a connections that libcurl should
support on connections done using HTTP/2.

Valid values range from 1 to 2147483647 (2^31 - 1) and defaults to 100.  The
value passed here would be honoured based on other system resources
properties.
.SH DEFAULT
100
.SH PROTOCOLS
All
.SH EXAMPLE
.nf
  CURLM *m = curl_multi_init();
  /* max concurrent streams 200 */
  curl_multi_setopt(m, CURLMOPT_MAX_CONCURRENT_STREAMS, 200L);
.fi
.SH AVAILABILITY
Added in 7.67.0
.SH RETURN VALUE
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_MAXCONNECTS "(3), " CURLMOPT_MAXCONNECTS "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 27, 2017" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS, long max);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 27, 2017" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS, long max);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "April 05, 2019" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH, long max);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "April 05, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH, long max);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 27, 2017" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, long amount);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 27, 2017" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_TOTAL_CONNECTIONS, long amount);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING 3 "April 05, 2019" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING 3 "April 05, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SERVER_BL 3 "April 05, 2019" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SERVER_BL \- pipelining server blacklist
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SERVER_BL, char **servers);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SERVER_BL 3 "April 05, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SERVER_BL \- pipelining server blacklist
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SERVER_BL, char **servers);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SITE_BL 3 "April 05, 2019" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SITE_BL \- pipelining host blacklist
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SITE_BL, char **hosts);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PIPELINING_SITE_BL 3 "April 05, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PIPELINING_SITE_BL \- pipelining host blacklist
.SH SYNOPSIS
#include <curl/curl.h>

CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SITE_BL, char **hosts);
Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PUSHDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHDATA 3 "May 27, 2017" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHDATA \- pointer to pass to push callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHDATA 3 "May 27, 2017" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHDATA \- pointer to pass to push callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHFUNCTION 3 "February 03, 2016" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_PUSHFUNCTION 3 "February 03, 2016" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETDATA 3 "May 31, 2017" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETDATA 3 "May 31, 2017" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETFUNCTION 3 "June 24, 2019" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_SOCKETFUNCTION 3 "June 24, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERDATA 3 "May 27, 2017" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERDATA 3 "May 27, 2017" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERFUNCTION 3 "May 03, 2019" "libcurl 7.66.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERFUNCTION \- set callback to receive timeout values
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLMOPT_TIMERFUNCTION 3 "May 03, 2019" "libcurl 7.67.0" "curl_multi_setopt options"

.SH NAME
CURLMOPT_TIMERFUNCTION \- set callback to receive timeout values
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "January 09, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ABSTRACT_UNIX_SOCKET \- set an abstract Unix domain socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ABSTRACT_UNIX_SOCKET, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "January 09, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ABSTRACT_UNIX_SOCKET \- set an abstract Unix domain socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ABSTRACT_UNIX_SOCKET, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "March 06, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "March 06, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPT_ENCODING 3 "August 27, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ACCEPT_ENCODING 3 "August 27, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ADDRESS_SCOPE 3 "March 07, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ADDRESS_SCOPE \- set scope id for IPv6 addresses
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ADDRESS_SCOPE, long scope);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ADDRESS_SCOPE 3 "March 07, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ADDRESS_SCOPE \- set scope id for IPv6 addresses
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ADDRESS_SCOPE, long scope);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ALTSVC.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC 3 "August 14, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC \- set alt-svc cache file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC 3 "August 14, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC \- set alt-svc cache file name
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC_CTRL 3 "August 13, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ALTSVC_CTRL 3 "August 13, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_APPEND.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_APPEND 3 "March 06, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_APPEND \- enable appending to the remote file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_APPEND 3 "March 06, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_APPEND \- enable appending to the remote file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_AUTOREFERER 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_AUTOREFERER \- automatically update the referer header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_AUTOREFERER 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_AUTOREFERER \- automatically update the referer header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_BUFFERSIZE 3 "May 13, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_BUFFERSIZE \- set preferred receive buffer size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_BUFFERSIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_BUFFERSIZE 3 "May 13, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_BUFFERSIZE \- set preferred receive buffer size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_BUFFERSIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CAINFO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAINFO 3 "June 10, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAINFO, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAINFO 3 "June 10, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAINFO, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CAPATH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAPATH 3 "September 10, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAPATH \- specify directory holding CA certificates
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CAPATH 3 "September 10, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CAPATH \- specify directory holding CA certificates
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CERTINFO 3 "January 29, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CERTINFO \- request SSL certificate information
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CERTINFO 3 "January 29, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CERTINFO \- request SSL certificate information
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "May 03, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "May 03, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_DATA 3 "November 07, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_DATA 3 "November 07, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_END_FUNCTION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CHUNK_END_FUNCTION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETDATA 3 "November 07, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETDATA 3 "November 07, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CLOSESOCKETDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETFUNCTION 3 "November 07, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement function
.SH SYNOPSIS
#include <curl/curl.h>

int closesocket_callback(void *clientp, curl_socket_t item);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CLOSESOCKETFUNCTION 3 "November 07, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement function
.SH SYNOPSIS
#include <curl/curl.h>

int closesocket_callback(void *clientp, curl_socket_t item);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT 3 "October 03, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT 3 "October 03, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT_MS 3 "September 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT_MS, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECTTIMEOUT_MS 3 "September 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECTTIMEOUT_MS, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_ONLY 3 "February 18, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_ONLY \- stop when connected to target server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_ONLY, long only);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_ONLY 3 "February 18, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_ONLY \- stop when connected to target server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_ONLY, long only);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONNECT_TO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_TO 3 "May 05, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_TO \- Connect to a specific host and port instead of the URL's host and port
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONNECT_TO 3 "May 05, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONNECT_TO \- Connect to a specific host and port instead of the URL's host and port
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIE 3 "December 21, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIE \- set contents of HTTP Cookie header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIE, char *cookie);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIE 3 "December 21, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIE \- set contents of HTTP Cookie header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIE, char *cookie);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEFILE 3 "March 13, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEFILE \- file name to read cookies from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEFILE 3 "March 13, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEFILE \- file name to read cookies from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEJAR 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEJAR \- file name to store cookies to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEJAR, char *filename);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIEJAR 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIEJAR \- file name to store cookies to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEJAR, char *filename);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIELIST 3 "April 26, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIELIST 3 "April 26, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIESESSION 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIESESSION \- start a new cookie session
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIESESSION, long init);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COOKIESESSION 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COOKIESESSION \- start a new cookie session
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIESESSION, long init);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COPYPOSTFIELDS 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char *data);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_COPYPOSTFIELDS 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char *data);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CRLF.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLF 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLF \- enable/disable CRLF conversion
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLF, long conv);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLF 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLF \- enable/disable CRLF conversion
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLF, long conv);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLFILE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLFILE \- specify a Certificate Revocation List file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLFILE, char *file);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CRLFILE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CRLFILE \- specify a Certificate Revocation List file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CRLFILE, char *file);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CURLU.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CURLU 3 "January 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CURLU \- set URL with CURLU *
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CURLU, void *pointer);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CURLU 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CURLU \- set URL with CURLU *
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CURLU, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CUSTOMREQUEST 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CUSTOMREQUEST \- custom string for request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CUSTOMREQUEST, char *request);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_CUSTOMREQUEST 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_CUSTOMREQUEST \- custom string for request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CUSTOMREQUEST, char *request);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGDATA 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGDATA \- custom pointer for debug callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGDATA 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGDATA \- custom pointer for debug callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEBUGDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGFUNCTION 3 "October 06, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGFUNCTION \- debug callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEBUGFUNCTION 3 "October 06, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEBUGFUNCTION \- debug callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEFAULT_PROTOCOL 3 "December 21, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
scheme name
.SH SYNOPSIS
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DEFAULT_PROTOCOL 3 "December 21, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
scheme name
.SH SYNOPSIS
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DIRLISTONLY 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DIRLISTONLY 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DIRLISTONLY, long listonly);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "February 25, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the url
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DISALLOW_USERNAME_IN_URL, long disallow);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "February 25, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the url
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DISALLOW_USERNAME_IN_URL, long disallow);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "December 09, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "December 09, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_INTERFACE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_INTERFACE \- set interface to speak DNS over
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_INTERFACE, char *ifname);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_INTERFACE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_INTERFACE \- set interface to speak DNS over
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_INTERFACE, char *ifname);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP4 3 "December 10, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP4 3 "December 10, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP6 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP6, char *address);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_LOCAL_IP6 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP6, char *address);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SERVERS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SERVERS \- set preferred DNS servers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_SERVERS, char *servers);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SERVERS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SERVERS \- set preferred DNS servers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_SERVERS, char *servers);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "March 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SHUFFLE_ADDRESSES \- Shuffle addresses when a hostname returns more than one
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "March 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_SHUFFLE_ADDRESSES \- Shuffle addresses when a hostname returns more than one
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "March 07, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_USE_GLOBAL_CACHE \- enable/disable global DNS cache
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_USE_GLOBAL_CACHE,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "March 07, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DNS_USE_GLOBAL_CACHE \- enable/disable global DNS cache
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_USE_GLOBAL_CACHE,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_DOH_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_URL 3 "September 06, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DOH_URL, char *URL);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_DOH_URL 3 "September 06, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DOH_URL, char *URL);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EGDSOCKET 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EGDSOCKET \- set EGD socket path
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EGDSOCKET 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EGDSOCKET \- set EGD socket path
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ERRORBUFFER 3 "March 13, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ERRORBUFFER \- set error buffer for error messages
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ERRORBUFFER 3 "March 13, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ERRORBUFFER \- set error buffer for error messages
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FAILONERROR 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FAILONERROR, long fail);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FAILONERROR 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FAILONERROR, long fail);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FILETIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FILETIME 3 "April 03, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FILETIME \- get the modification time of the remote resource
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FILETIME 3 "April 03, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FILETIME \- get the modification time of the remote resource
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_DATA 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_DATA \- custom pointer to fnmatch callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_DATA 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_DATA \- custom pointer to fnmatch callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_FUNCTION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_FUNCTION \- wildcard matching function callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FNMATCH_FUNCTION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FNMATCH_FUNCTION \- wildcard matching function callback
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FOLLOWLOCATION 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FOLLOWLOCATION 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FORBID_REUSE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FORBID_REUSE \- make connection get closed at once after use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FORBID_REUSE, long close);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FORBID_REUSE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FORBID_REUSE \- make connection get closed at once after use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FORBID_REUSE, long close);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FRESH_CONNECT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FRESH_CONNECT \- force a new connection to be used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FRESH_CONNECT, long fresh);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FRESH_CONNECT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FRESH_CONNECT \- force a new connection to be used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FRESH_CONNECT, long fresh);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPPORT 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPPORT \- make FTP transfer active
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPPORT, char *spec);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPPORT 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPPORT \- make FTP transfer active
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPPORT, char *spec);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPSSLAUTH 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPSSLAUTH \- set order in which to attempt TLS vs SSL when using FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPSSLAUTH, long order);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTPSSLAUTH 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTPSSLAUTH \- set order in which to attempt TLS vs SSL when using FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTPSSLAUTH, long order);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ACCOUNT 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ACCOUNT \- set account info for FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ACCOUNT, char *account);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ACCOUNT 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ACCOUNT \- set account info for FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ACCOUNT, char *account);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_FILEMETHOD 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_FILEMETHOD 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "October 03, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "October 03, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SKIP_PASV_IP, long skip);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SKIP_PASV_IP, long skip);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SSL_CCC 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SSL_CCC,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_SSL_CCC 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_SSL_CCC,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPRT 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPRT \- enable/disable use of EPRT with FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPRT, long enabled);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPRT 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPRT \- enable/disable use of EPRT with FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPRT, long enabled);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPSV 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPSV \- enable/disable use of EPSV
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPSV, long epsv);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_EPSV 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_EPSV \- enable/disable use of EPSV
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_EPSV, long epsv);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_PRET 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_PRET \- enable the PRET command
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_PRET, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_FTP_USE_PRET 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_FTP_USE_PRET \- enable the PRET command
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_USE_PRET, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_GSSAPI_DELEGATION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_GSSAPI_DELEGATION \- set allowed GSS-API delegation
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_GSSAPI_DELEGATION, long level);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_GSSAPI_DELEGATION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_GSSAPI_DELEGATION \- set allowed GSS-API delegation
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_GSSAPI_DELEGATION, long level);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "February 21, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "February 21, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPROXYPROTOCOL 3 "May 18, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPROXYPROTOCOL,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HAPROXYPROTOCOL 3 "May 18, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPROXYPROTOCOL,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADER 3 "October 03, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADER \- pass headers to the data stream
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADER, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADER 3 "October 03, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADER \- pass headers to the data stream
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADER, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERDATA 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERDATA \- pointer to pass to header callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERDATA 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERDATA \- pointer to pass to header callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERFUNCTION 3 "August 27, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERFUNCTION \- callback that receives header data
.SH SYNOPSIS
#include <curl/curl.h>

size_t header_callback(char *buffer,







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADERFUNCTION 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADERFUNCTION \- callback that receives header data
.SH SYNOPSIS
#include <curl/curl.h>

size_t header_callback(char *buffer,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADEROPT 3 "July 03, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADEROPT \- set how to send HTTP headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADEROPT, long bitmask);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HEADEROPT 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HEADEROPT \- set how to send HTTP headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADEROPT, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP09_ALLOWED 3 "August 05, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP09 \- allow HTTP/0.9 response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP09_ALLOWED, long allowed);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP09_ALLOWED 3 "August 05, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP09 \- allow HTTP/0.9 response
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP09_ALLOWED, long allowed);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP200ALIASES 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP200ALIASES \- specify alternative matches for HTTP 200 OK
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP200ALIASES 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP200ALIASES \- specify alternative matches for HTTP 200 OK
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPAUTH 3 "June 15, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPAUTH \- set HTTP server authentication methods to try
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPAUTH 3 "June 15, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPAUTH \- set HTTP server authentication methods to try
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPGET 3 "May 21, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPGET \- ask for an HTTP GET request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPGET, long useget);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPGET 3 "May 21, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPGET \- ask for an HTTP GET request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPGET, long useget);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPHEADER 3 "December 30, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPHEADER \- set custom HTTP headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPHEADER, struct curl_slist *headers);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPHEADER 3 "December 30, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPHEADER \- set custom HTTP headers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPHEADER, struct curl_slist *headers);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPOST 3 "September 02, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPOST \- specify the multipart formpost content
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPOST 3 "September 02, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPOST \- specify the multipart formpost content
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPROXYTUNNEL 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPROXYTUNNEL, long tunnel);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTPPROXYTUNNEL 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPROXYTUNNEL, long tunnel);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_CONTENT_DECODING \- enable/disable HTTP content decoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_CONTENT_DECODING \- enable/disable HTTP content decoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_TRANSFER_DECODING \- enable/disable HTTP transfer decoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_TRANSFER_DECODING \- enable/disable HTTP transfer decoding
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_VERSION 3 "August 09, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_HTTP_VERSION 3 "September 14, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version);
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
will still do HTTP/2 the standard way with negotiated protocol version in the
TLS handshake. (Added in 7.49.0)
.IP CURL_HTTP_VERSION_3
(Added in 7.66.0) Setting this value will make libcurl attempt to use HTTP/3
directly to server given in the URL. Note that this cannot gracefully
downgrade to earlier HTTP version if the server doesn't support HTTP/3.

For more reliably upgrading to HTTP/3, set the prefered version to something
lower and let the server announce its HTTP/3 support via Alt-Svc:. See
\fICURLOPT_ALTSVC(3)\fP.
.SH DEFAULT
Since curl 7.62.0: CURL_HTTP_VERSION_2TLS

Before that: CURL_HTTP_VERSION_1_1
.SH PROTOCOLS







|







59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
will still do HTTP/2 the standard way with negotiated protocol version in the
TLS handshake. (Added in 7.49.0)
.IP CURL_HTTP_VERSION_3
(Added in 7.66.0) Setting this value will make libcurl attempt to use HTTP/3
directly to server given in the URL. Note that this cannot gracefully
downgrade to earlier HTTP version if the server doesn't support HTTP/3.

For more reliably upgrading to HTTP/3, set the preferred version to something
lower and let the server announce its HTTP/3 support via Alt-Svc:. See
\fICURLOPT_ALTSVC(3)\fP.
.SH DEFAULT
Since curl 7.62.0: CURL_HTTP_VERSION_2TLS

Before that: CURL_HTTP_VERSION_1_1
.SH PROTOCOLS
Changes to jni/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE \- set size of the input file to send off
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE, long filesize);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE \- set size of the input file to send off
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INFILESIZE, long filesize);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE_LARGE 3 "September 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE_LARGE \- set size of the input file to send off
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INFILESIZE_LARGE 3 "September 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INFILESIZE_LARGE \- set size of the input file to send off
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERFACE 3 "June 18, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERFACE \- source interface for outgoing traffic
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERFACE, char *interface);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERFACE 3 "June 18, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERFACE \- source interface for outgoing traffic
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERFACE, char *interface);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEDATA 3 "September 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEDATA \- custom pointer passed to RTSP interleave callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEDATA 3 "September 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEDATA \- custom pointer passed to RTSP interleave callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_INTERLEAVEDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEFUNCTION 3 "August 11, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEFUNCTION \- callback function for RTSP interleaved data
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_INTERLEAVEFUNCTION 3 "August 11, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_INTERLEAVEFUNCTION \- callback function for RTSP interleaved data
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLDATA 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLDATA \- custom pointer passed to I/O callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLDATA 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLDATA \- custom pointer passed to I/O callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IOCTLDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLFUNCTION 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLFUNCTION \- callback for I/O operations
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IOCTLFUNCTION 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IOCTLFUNCTION \- callback for I/O operations
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IPRESOLVE 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IPRESOLVE \- specify which IP protocol version to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IPRESOLVE, long resolve);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_IPRESOLVE 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_IPRESOLVE \- specify which IP protocol version to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IPRESOLVE, long resolve);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ISSUERCERT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT \- issuer SSL certificate filename
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT, char *file);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_ISSUERCERT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_ISSUERCERT \- issuer SSL certificate filename
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ISSUERCERT, char *file);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEEP_SENDING_ON_ERROR,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEEP_SENDING_ON_ERROR,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEYPASSWD 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEYPASSWD \- set passphrase to private key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEYPASSWD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KEYPASSWD 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KEYPASSWD \- set passphrase to private key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEYPASSWD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KRBLEVEL 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KRBLEVEL \- set FTP kerberos security level
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KRBLEVEL, char *level);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_KRBLEVEL 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_KRBLEVEL \- set FTP kerberos security level
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KRBLEVEL, char *level);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORT 3 "January 31, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORT \- set local port number to use for socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORT, long port);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORT 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORT \- set local port number to use for socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORT, long port);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORTRANGE 3 "January 31, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORTRANGE,







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOCALPORTRANGE 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOCALPORTRANGE,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOGIN_OPTIONS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOGIN_OPTIONS \- set login options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOGIN_OPTIONS, char *options);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOGIN_OPTIONS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOGIN_OPTIONS \- set login options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOGIN_OPTIONS, char *options);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_LIMIT \- set low speed limit in bytes per second
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_LIMIT, long speedlimit);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_LIMIT \- set low speed limit in bytes per second
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_LIMIT, long speedlimit);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_TIME 3 "May 06, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_TIME \- set low speed limit time period
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_TIME, long speedtime);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_LOW_SPEED_TIME 3 "May 06, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_LOW_SPEED_TIME \- set low speed limit time period
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_LOW_SPEED_TIME, long speedtime);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_AUTH 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_AUTH \- SMTP authentication address
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_AUTH, char *auth);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_AUTH 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_AUTH \- SMTP authentication address
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_AUTH, char *auth);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_FROM 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_FROM \- SMTP sender address
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_FROM, char *from);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_FROM 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_FROM \- SMTP sender address
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_FROM, char *from);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_RCPT 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAIL_RCPT 3 "July 16, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXAGE_CONN 3 "April 14, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXAGE_CONN, long maxage);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXAGE_CONN 3 "April 14, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXAGE_CONN, long maxage);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXCONNECTS 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXCONNECTS \- maximum connection cache size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXCONNECTS, long amount);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXCONNECTS 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXCONNECTS \- maximum connection cache size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXCONNECTS, long amount);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE \- maximum file size allowed to download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE \- maximum file size allowed to download
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXFILESIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXREDIRS 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXREDIRS \- maximum number of redirects allowed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXREDIRS, long amount);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAXREDIRS 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAXREDIRS \- maximum number of redirects allowed
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXREDIRS, long amount);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_MIMEPOST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MIMEPOST 3 "September 04, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MIMEPOST \- set post/send data from mime structure
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_MIMEPOST 3 "September 04, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_MIMEPOST \- set post/send data from mime structure
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NETRC.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC 3 "November 03, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC \- request that .netrc is used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC, long level);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC 3 "November 03, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC \- request that .netrc is used
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC, long level);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC_FILE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC_FILE \- file name to read .netrc info from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC_FILE, char *file);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NETRC_FILE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NETRC_FILE \- file name to read .netrc info from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC_FILE, char *file);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_FILE_PERMS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NEW_FILE_PERMS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOBODY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOBODY 3 "June 21, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOBODY \- do the download request without getting the body
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOBODY, long opt);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOBODY 3 "June 21, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOBODY \- do the download request without getting the body
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOBODY, long opt);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROGRESS 3 "October 09, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROGRESS \- switch off the progress meter
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROGRESS, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROGRESS 3 "October 09, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROGRESS \- switch off the progress meter
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROGRESS, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROXY 3 "August 24, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROXY \- disable proxy use for specific hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROXY, char *noproxy);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOPROXY 3 "August 24, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOPROXY \- disable proxy use for specific hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROXY, char *noproxy);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOSIGNAL 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOSIGNAL \- skip all signal handling
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOSIGNAL, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_NOSIGNAL 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_NOSIGNAL \- skip all signal handling
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOSIGNAL, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETDATA 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETDATA \- custom pointer passed to open socket callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETDATA 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETDATA \- custom pointer passed to open socket callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETFUNCTION \- set callback for opening sockets
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_OPENSOCKETFUNCTION \- set callback for opening sockets
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PASSWORD 3 "September 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PASSWORD \- password to use in authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PASSWORD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PASSWORD 3 "September 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PASSWORD \- password to use in authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PASSWORD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PATH_AS_IS 3 "September 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PATH_AS_IS, long leaveit);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PATH_AS_IS 3 "September 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PATH_AS_IS, long leaveit);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PINNEDPUBLICKEY 3 "June 02, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PINNEDPUBLICKEY \- set pinned public key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char *pinnedpubkey);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PINNEDPUBLICKEY 3 "June 02, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PINNEDPUBLICKEY \- set pinned public key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char *pinnedpubkey);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PIPEWAIT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PIPEWAIT 3 "May 01, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PIPEWAIT, long wait);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PIPEWAIT 3 "May 01, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PIPEWAIT, long wait);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PORT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PORT \- set remote port number to work with
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PORT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PORT \- set remote port number to work with
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POST 3 "July 22, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POST \- request an HTTP POST
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POST, long post);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POST 3 "July 22, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POST \- request an HTTP POST
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POST, long post);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDS 3 "May 21, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDS \- specify data to POST to server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDS 3 "May 21, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDS \- specify data to POST to server
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDSIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTQUOTE 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTQUOTE, struct curl_slist *cmds);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTQUOTE 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTQUOTE, struct curl_slist *cmds);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTREDIR 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_POSTREDIR 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PREQUOTE 3 "June 18, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PREQUOTE \- commands to run before an FTP transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PREQUOTE,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PREQUOTE 3 "June 18, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PREQUOTE \- commands to run before an FTP transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PREQUOTE,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PRE_PROXY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRE_PROXY 3 "September 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRE_PROXY \- set pre-proxy to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRE_PROXY, char *preproxy);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRE_PROXY 3 "September 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRE_PROXY \- set pre-proxy to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRE_PROXY, char *preproxy);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRIVATE 3 "December 08, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRIVATE \- store a private pointer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRIVATE, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PRIVATE 3 "December 08, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PRIVATE \- store a private pointer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRIVATE, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSDATA 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSDATA \- custom pointer passed to the progress callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSDATA 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSDATA \- custom pointer passed to the progress callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSFUNCTION 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSFUNCTION \- callback to progress meter function
.SH SYNOPSIS
#include <curl/curl.h>

int progress_callback(void *clientp,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROGRESSFUNCTION 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROGRESSFUNCTION \- callback to progress meter function
.SH SYNOPSIS
#include <curl/curl.h>

int progress_callback(void *clientp,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROTOCOLS 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROTOCOLS \- set allowed protocols
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROTOCOLS 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROTOCOLS \- set allowed protocols
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY 3 "August 24, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY \- set proxy to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY 3 "August 24, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY \- set proxy to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYAUTH 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYAUTH \- set HTTP proxy authentication methods to try
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYAUTH, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYAUTH 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYAUTH \- set HTTP proxy authentication methods to try
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYAUTH, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYHEADER 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYHEADER \- custom HTTP headers to pass to proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYHEADER 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYHEADER \- custom HTTP headers to pass to proxy
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPASSWORD 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPASSWORD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPASSWORD 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPASSWORD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPORT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPORT \- port number the proxy listens on
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPORT, long port);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYPORT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYPORT \- port number the proxy listens on
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYPORT, long port);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYTYPE 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYTYPE \- proxy protocol type
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYTYPE, long type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYTYPE 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYTYPE \- proxy protocol type
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYTYPE, long type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERNAME 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERNAME 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERPWD 3 "May 30, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERPWD, char *userpwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXYUSERPWD 3 "May 30, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERPWD, char *userpwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAINFO 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAINFO, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAINFO 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAINFO, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAPATH 3 "May 15, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAPATH \- specify directory holding proxy CA certificates
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAPATH, char *capath);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CAPATH 3 "May 15, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CAPATH \- specify directory holding proxy CA certificates
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAPATH, char *capath);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CRLFILE 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CRLFILE \- specify a proxy Certificate Revocation List file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CRLFILE, char *file);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_CRLFILE 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_CRLFILE \- specify a proxy Certificate Revocation List file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CRLFILE, char *file);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_KEYPASSWD 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_KEYPASSWD \- set passphrase to proxy private key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_KEYPASSWD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_KEYPASSWD 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_KEYPASSWD \- set passphrase to proxy private key
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_KEYPASSWD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "May 15, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_PINNEDPUBLICKEY \- set pinned public key for https proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_PINNEDPUBLICKEY, char *pinnedpubkey);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "May 15, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_PINNEDPUBLICKEY \- set pinned public key for https proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_PINNEDPUBLICKEY, char *pinnedpubkey);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME, char *name);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME, char *name);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERT 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERT \- set SSL proxy client certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERT, char *cert);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERT 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERT \- set SSL proxy client certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERT, char *cert);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERTTYPE 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERTTYPE \- specify type of the proxy client SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERTTYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLCERTTYPE 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLCERTTYPE \- specify type of the proxy client SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERTTYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEY 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEY \- specify private keyfile for TLS and SSL proxy client cert
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEY, char *keyfile);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEY 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEY \- specify private keyfile for TLS and SSL proxy client cert
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEY, char *keyfile);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEYTYPE 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEYTYPE \- set type of the proxy private key file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEYTYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLKEYTYPE 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLKEYTYPE \- set type of the proxy private key file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEYTYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2016, 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLVERSION 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLVERSION \- set preferred proxy TLS/SSL version
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLVERSION, long version);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSLVERSION 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSLVERSION \- set preferred proxy TLS/SSL version
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLVERSION, long version);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_CIPHER_LIST \- specify ciphers to use for proxy TLS
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_CIPHER_LIST, char *list);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_CIPHER_LIST \- specify ciphers to use for proxy TLS
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_CIPHER_LIST, char *list);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_OPTIONS 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_OPTIONS \- set proxy SSL behavior options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_OPTIONS, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_OPTIONS 3 "July 16, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_OPTIONS \- set proxy SSL behavior options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_OPTIONS, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "August 20, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYHOST, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "August 20, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYHOST, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "December 16, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYPEER, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "December 16, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSL_VERIFYPEER, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "May 27, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLS13_CIPHERS, char *list);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLS13_CIPHERS, char *list);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_PASSWORD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_PASSWORD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_TYPE \- set proxy TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_TYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_TYPE \- set proxy TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_TYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_USERNAME, char *user);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TLSAUTH_USERNAME, char *user);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TRANSFER_MODE 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TRANSFER_MODE, long enabled);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PROXY_TRANSFER_MODE 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TRANSFER_MODE, long enabled);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_PUT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PUT 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PUT \- make an HTTP PUT request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PUT, long put);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_PUT 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_PUT \- make an HTTP PUT request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PUT, long put);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_QUOTE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_QUOTE 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_QUOTE \- (S)FTP commands to run before transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_QUOTE, struct curl_slist *cmds);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_QUOTE 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_QUOTE \- (S)FTP commands to run before transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_QUOTE, struct curl_slist *cmds);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANDOM_FILE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANDOM_FILE \- specify a source for random data
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANDOM_FILE, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANDOM_FILE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANDOM_FILE \- specify a source for random data
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANDOM_FILE, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RANGE.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANGE 3 "July 17, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANGE \- set byte range to request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANGE, char *range);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RANGE 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RANGE \- set byte range to request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANGE, char *range);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_READDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READDATA 3 "August 11, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READDATA \- custom pointer passed to the read callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READDATA 3 "August 11, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READDATA \- custom pointer passed to the read callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READFUNCTION 3 "August 12, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READFUNCTION \- read callback for data uploads
.SH SYNOPSIS
#include <curl/curl.h>

size_t read_callback(char *buffer, size_t size, size_t nitems, void *userdata);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_READFUNCTION 3 "August 12, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_READFUNCTION \- read callback for data uploads
.SH SYNOPSIS
#include <curl/curl.h>

size_t read_callback(char *buffer, size_t size, size_t nitems, void *userdata);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REDIR_PROTOCOLS 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REDIR_PROTOCOLS \- set protocols allowed to redirect to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REDIR_PROTOCOLS 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REDIR_PROTOCOLS \- set protocols allowed to redirect to
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_REFERER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REFERER 3 "December 21, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REFERER \- set the HTTP referer header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REFERER, char *where);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REFERER 3 "December 21, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REFERER \- set the HTTP referer header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REFERER, char *where);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REQUEST_TARGET 3 "June 21, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REQUEST_TARGET \- specify an alternative target for this request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REQUEST_TARGET, string);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_REQUEST_TARGET 3 "June 21, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_REQUEST_TARGET \- specify an alternative target for this request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REQUEST_TARGET, string);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVE 3 "May 30, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVE \- provide custom host name to IP address resolves
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVE 3 "May 30, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVE \- provide custom host name to IP address resolves
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_DATA 3 "February 14, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_DATA \- custom pointer passed to the resolver start callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVER_START_DATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_DATA 3 "February 14, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_DATA \- custom pointer passed to the resolver start callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVER_START_DATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_FUNCTION 3 "February 14, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_FUNCTION \- set callback to be called before a new resolve request is started
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESOLVER_START_FUNCTION 3 "February 14, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESOLVER_START_FUNCTION \- set callback to be called before a new resolve request is started
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM \- set a point to resume transfer from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM, long from);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM \- set a point to resume transfer from
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESUME_FROM, long from);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM_LARGE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM_LARGE \- set a point to resume transfer from
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RESUME_FROM_LARGE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RESUME_FROM_LARGE \- set a point to resume transfer from
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_CLIENT_CSEQ \- set the RTSP client CSEQ number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_CLIENT_CSEQ, long cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_CLIENT_CSEQ \- set the RTSP client CSEQ number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_CLIENT_CSEQ, long cseq);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_REQUEST 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_REQUEST \- specify RTSP request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_REQUEST, long request);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_REQUEST 3 "July 16, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_REQUEST \- specify RTSP request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_REQUEST, long request);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SERVER_CSEQ \- set the RTSP server CSEQ number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SERVER_CSEQ, long cseq);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SERVER_CSEQ \- set the RTSP server CSEQ number
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SERVER_CSEQ, long cseq);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SESSION_ID \- set RTSP session ID
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SESSION_ID, char *id);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_SESSION_ID \- set RTSP session ID
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_SESSION_ID, char *id);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_STREAM_URI 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_STREAM_URI \- set RTSP stream URI
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_STREAM_URI, char *URI);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_STREAM_URI 3 "July 16, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_STREAM_URI \- set RTSP stream URI
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_STREAM_URI, char *URI);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_TRANSPORT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_TRANSPORT \- set RTSP Transport: header
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_RTSP_TRANSPORT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_RTSP_TRANSPORT \- set RTSP Transport: header
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SASL_IR 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SASL_IR \- enable sending initial response in first packet
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_IR, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SASL_IR 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SASL_IR \- enable sending initial response in first packet
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_IR, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKDATA 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKDATA \- custom pointer passed to the seek callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, void *pointer);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKDATA 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKDATA \- custom pointer passed to the seek callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SEEKDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKFUNCTION 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SEEKFUNCTION 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SERVICE_NAME \- authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SERVICE_NAME \- authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SHARE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SHARE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SHARE \- specify share handle to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SHARE, CURLSH *share);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SHARE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SHARE \- specify share handle to use
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SHARE, CURLSH *share);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTDATA 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTDATA \- custom pointer to pass to sockopt callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTDATA 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTDATA \- custom pointer to pass to sockopt callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKOPTDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTFUNCTION 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTFUNCTION \- set callback for setting socket options
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKOPTFUNCTION 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKOPTFUNCTION \- set callback for setting socket options
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_AUTH 3 "April 27, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_AUTH \- set allowed methods for SOCKS5 proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_AUTH, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_AUTH 3 "April 27, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_AUTH \- set allowed methods for SOCKS5 proxy authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_AUTH, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_NEC \- set socks proxy gssapi negotiation protection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_NEC, long nec);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_NEC \- set socks proxy gssapi negotiation protection
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_NEC, long nec);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE, char *name);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE, char *name);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_AUTH_TYPES 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_AUTH_TYPES \- set desired auth types for SFTP and SCP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_AUTH_TYPES, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_AUTH_TYPES 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_AUTH_TYPES \- set desired auth types for SFTP and SCP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_AUTH_TYPES, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_COMPRESSION 3 "August 10, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_COMPRESSION \- enables compression / decompression of SSH traffic
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_COMPRESSION, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_COMPRESSION 3 "August 10, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_COMPRESSION \- enables compression / decompression of SSH traffic
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_COMPRESSION, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- checksum of SSH server public key
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- checksum of SSH server public key
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYDATA 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYDATA \- pointer to pass to the SSH key callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYDATA 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYDATA \- pointer to pass to the SSH key callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KEYDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYFUNCTION 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KEYFUNCTION 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KNOWNHOSTS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KNOWNHOSTS, char *fname);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_KNOWNHOSTS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_KNOWNHOSTS, char *fname);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PRIVATE_KEYFILE \- set private key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PRIVATE_KEYFILE \- set private key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PUBLIC_KEYFILE \- set public key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSH_PUBLIC_KEYFILE \- set public key file for SSH auth
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERT 3 "January 29, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERT \- set SSL client certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT, char *cert);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERT 3 "January 29, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERT \- set SSL client certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT, char *cert);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERTTYPE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERTTYPE \- specify type of the client SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERTTYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLCERTTYPE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLCERTTYPE \- specify type of the client SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERTTYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE \- set SSL engine identifier
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE, char *id);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE \- set SSL engine identifier
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE, char *id);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE_DEFAULT, long val);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE_DEFAULT, long val);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEY 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEY \- specify private keyfile for TLS and SSL client cert
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEY, char *keyfile);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEY 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEY \- specify private keyfile for TLS and SSL client cert
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEY, char *keyfile);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEYTYPE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEYTYPE \- set type of the private key file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEYTYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLKEYTYPE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLKEYTYPE \- set type of the private key file
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLKEYTYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2015, 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLVERSION 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLVERSION \- set preferred TLS/SSL version
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLVERSION, long version);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSLVERSION 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSLVERSION \- set preferred TLS/SSL version
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLVERSION, long version);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CIPHER_LIST \- specify ciphers to use for TLS
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CIPHER_LIST, char *list);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CIPHER_LIST 3 "October 10, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CIPHER_LIST \- specify ciphers to use for TLS
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CIPHER_LIST, char *list);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_DATA 3 "June 02, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_DATA \- custom pointer passed to ssl_ctx callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_DATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_DATA 3 "June 02, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_DATA \- custom pointer passed to ssl_ctx callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_DATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_FUNCTION 3 "June 02, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL or mbedTLS
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_CTX_FUNCTION 3 "June 02, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL or mbedTLS
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_ALPN \- enable ALPN
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_ALPN, long npn);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_ALPN \- enable ALPN
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_ALPN, long npn);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_NPN 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_NPN \- enable NPN
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_NPN, long npn);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_ENABLE_NPN 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_ENABLE_NPN \- enable NPN
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_NPN, long npn);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_FALSESTART 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_FALSESTART \- enable TLS false start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_FALSESTART, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_FALSESTART 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_FALSESTART \- enable TLS false start
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_FALSESTART, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_OPTIONS 3 "July 16, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_OPTIONS \- set SSL behavior options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_OPTIONS 3 "July 16, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_OPTIONS \- set SSL behavior options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_SESSIONID_CACHE \- enable/disable use of the SSL session-ID cache
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_SESSIONID_CACHE \- enable/disable use of the SSL session-ID cache
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYHOST 3 "August 20, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYHOST, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYHOST 3 "August 20, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYHOST, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYPEER 3 "June 24, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYPEER, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYPEER 3 "June 24, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYPEER, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYSTATUS 3 "October 09, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYSTATUS, long verify);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SSL_VERIFYSTATUS 3 "October 09, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_VERIFYSTATUS, long verify);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STDERR.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STDERR 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STDERR \- redirect stderr to another stream
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STDERR, FILE *stream);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STDERR 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STDERR \- redirect stderr to another stream
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STDERR, FILE *stream);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS \- set stream this transfer depends on
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS, CURL *dephandle);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS \- set stream this transfer depends on
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS, CURL *dephandle);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS_E 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS_E \- set stream this transfer depends on exclusively
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS_E, CURL *dephandle);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_DEPENDS_E 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_DEPENDS_E \- set stream this transfer depends on exclusively
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS_E, CURL *dephandle);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_WEIGHT 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_WEIGHT \- set numerical stream weight
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_WEIGHT, long weight);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_STREAM_WEIGHT 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_STREAM_WEIGHT \- set numerical stream weight
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_WEIGHT, long weight);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "April 28, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SUPPRESS_CONNECT_HEADERS \- Suppress proxy CONNECT response headers from user callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "April 28, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_SUPPRESS_CONNECT_HEADERS \- Suppress proxy CONNECT response headers from user callbacks
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_FASTOPEN 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_FASTOPEN \- enable TCP Fast Open
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_FASTOPEN, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_FASTOPEN 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_FASTOPEN \- enable TCP Fast Open
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_FASTOPEN, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPALIVE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPALIVE \- enable TCP keep-alive probing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPALIVE, long probe);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPALIVE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPALIVE \- enable TCP keep-alive probing
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPALIVE, long probe);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPIDLE 3 "January 02, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPIDLE \- set TCP keep-alive idle time wait
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPIDLE, long delay);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPIDLE 3 "January 02, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPIDLE \- set TCP keep-alive idle time wait
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPIDLE, long delay);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPINTVL 3 "January 02, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPINTVL \- set TCP keep-alive interval
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPINTVL, long interval);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_KEEPINTVL 3 "January 02, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_KEEPINTVL \- set TCP keep-alive interval
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPINTVL, long interval);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_NODELAY 3 "January 15, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TCP_NODELAY 3 "January 15, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TELNETOPTIONS 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TELNETOPTIONS \- custom telnet options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TELNETOPTIONS 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TELNETOPTIONS \- custom telnet options
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_BLKSIZE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_BLKSIZE \- TFTP block size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_BLKSIZE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_BLKSIZE \- TFTP block size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_NO_OPTIONS 3 "April 06, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_NO_OPTIONS \- Do not send TFTP options requests.
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_NO_OPTIONS, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TFTP_NO_OPTIONS 3 "April 06, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TFTP_NO_OPTIONS \- Do not send TFTP options requests.
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_NO_OPTIONS, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMECONDITION 3 "April 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMECONDITION \- select condition for a time request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMECONDITION, long cond);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMECONDITION 3 "April 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMECONDITION \- select condition for a time request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMECONDITION, long cond);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

46
47
48
49
50
51
52
53
54
55
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT 3 "October 03, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT \- set maximum time the request is allowed to take
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT, long timeout);
.SH DESCRIPTION
Pass a long as parameter containing \fItimeout\fP - the maximum time in
seconds that you allow the libcurl transfer operation to take. Normally, name
lookups can take a considerable time and limiting operations to less than a
few minutes risk aborting perfectly normal operations. This option may cause
libcurl to use the SIGALRM signal to timeout system calls.

In unix-like systems, this might cause signals to be used unless
\fICURLOPT_NOSIGNAL(3)\fP is set.

If both \fICURLOPT_TIMEOUT(3)\fP and \fICURLOPT_TIMEOUT_MS(3)\fP are set, the
value set last will be used.

Since this puts a hard limit for how long time a request is allowed to take,
it has limited use in dynamic use cases with varying transfer times. You are

then advised to explore \fICURLOPT_LOW_SPEED_LIMIT(3)\fP,
\fICURLOPT_LOW_SPEED_TIME(3)\fP or using \fICURLOPT_PROGRESSFUNCTION(3)\fP to
implement your own timeout logic.
.SH DEFAULT
Default timeout is 0 (zero) which means it never times out during transfer.
.SH PROTOCOLS
All
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();







|














|










|
|
|







|
|
>
|
|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT 3 "October 15, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT \- set maximum time the request is allowed to take
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT, long timeout);
.SH DESCRIPTION
Pass a long as parameter containing \fItimeout\fP - the maximum time in
seconds that you allow the libcurl transfer operation to take. Normally, name
lookups can take a considerable time and limiting operations risk aborting
perfectly normal operations. This option may cause libcurl to use the SIGALRM
signal to timeout system calls.

In unix-like systems, this might cause signals to be used unless
\fICURLOPT_NOSIGNAL(3)\fP is set.

If both \fICURLOPT_TIMEOUT(3)\fP and \fICURLOPT_TIMEOUT_MS(3)\fP are set, the
value set last will be used.

Since this option puts a hard limit on how long time a request is allowed to
take, it has limited use in dynamic use cases with varying transfer times. That
is especially apparent when using the multi interface, which may queue the
transfer, and that time is included. You are advised to explore
\fICURLOPT_LOW_SPEED_LIMIT(3)\fP, \fICURLOPT_LOW_SPEED_TIME(3)\fP or using
\fICURLOPT_PROGRESSFUNCTION(3)\fP to implement your own timeout logic.
.SH DEFAULT
Default timeout is 0 (zero) which means it never times out during transfer.
.SH PROTOCOLS
All
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT_MS 3 "September 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT_MS \- set maximum time the request is allowed to take
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT_MS, long timeout);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEOUT_MS 3 "September 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEOUT_MS \- set maximum time the request is allowed to take
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEOUT_MS, long timeout);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE 3 "January 25, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE \- set time value for conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE, long val);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE 3 "January 25, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE \- set time value for conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE, long val);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE_LARGE 3 "January 25, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE_LARGE \- set time value for conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE_LARGE, curl_off_t val);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TIMEVALUE_LARGE 3 "January 25, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TIMEVALUE_LARGE \- set time value for conditional
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE_LARGE, curl_off_t val);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLS13_CIPHERS 3 "May 27, 2019" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLS13_CIPHERS \- specify ciphers suites to use for TLS 1.3
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLS13_CIPHERS, char *list);







|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLS13_CIPHERS 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLS13_CIPHERS \- specify ciphers suites to use for TLS 1.3
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLS13_CIPHERS, char *list);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_PASSWORD, char *pwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_PASSWORD, char *pwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, char *type);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, char *type);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_USERNAME, char *user);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_USERNAME, char *user);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRAILERDATA.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERDATA 3 "December 14, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME:
CURLOPT_TRAILERDATA \- Custom pointer passed to the trailing headers callback
.SH SYNOPSIS:
#include <curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRAILERDATA, void *userdata);
.SH DESCRIPTION:
Data pointer to be passed to the HTTP trailer callback function.
.SH DEFAULT:
NULL
.SH PROTOCOLS:
HTTP
.SH EXAMPLE:
.nf
/* Assuming we have a CURL handle in the hndl variable. */

struct MyData data;

curl_easy_setopt(hndl, CURLOPT_TRAILERDATA, &data);
.fi

A more complete example can be found in examples/http_trailers.html
.SH AVAILABILITY:
This option was added in curl 7.64.0 and is present if HTTP support is enabled
.SH "SEE ALSO"
.BR CURLOPT_TRAILERFUNCTION "(3), "







|














|

|

|





|

|

|









|



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERDATA 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERDATA \- Custom pointer passed to the trailing headers callback
.SH SYNOPSIS
#include <curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRAILERDATA, void *userdata);
.SH DESCRIPTION:
Data pointer to be passed to the HTTP trailer callback function.
.SH DEFAULT
NULL
.SH PROTOCOLS
HTTP
.SH EXAMPLE
.nf
/* Assuming we have a CURL handle in the hndl variable. */

struct MyData data;

curl_easy_setopt(hndl, CURLOPT_TRAILERDATA, &data);
.fi

A more complete example can be found in examples/http_trailers.html
.SH AVAILABILITY
This option was added in curl 7.64.0 and is present if HTTP support is enabled
.SH "SEE ALSO"
.BR CURLOPT_TRAILERFUNCTION "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERFUNCTION 3 "December 14, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME:
CURLOPT_TRAILERFUNCTION \- Set callback for sending trailing headers
.SH SYNOPSIS:
#include <curl.h>

int curl_trailer_callback(struct curl_slist ** list, void *userdata);

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRAILERFUNCTION, curl_trailer_callback *func);
.SH DESCRIPTION:
Pass a pointer to a callback function.

This callback function will be called once right before sending the final
CR LF in an HTTP chunked transfer to fill a list of trailing headers to be
sent before finishing the HTTP transfer.

You can set the userdata argument with the CURLOPT_TRAILERDATA option.







|














|

|

|





|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
.\" *
.\" * This software is licensed as described in the file COPYING, which
.\" * you should have received as part of this distribution. The terms
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRAILERFUNCTION 3 "October 31, 2019" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRAILERFUNCTION \- Set callback for sending trailing headers
.SH SYNOPSIS
#include <curl.h>

int curl_trailer_callback(struct curl_slist ** list, void *userdata);

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRAILERFUNCTION, curl_trailer_callback *func);
.SH DESCRIPTION
Pass a pointer to a callback function.

This callback function will be called once right before sending the final
CR LF in an HTTP chunked transfer to fill a list of trailing headers to be
sent before finishing the HTTP transfer.

You can set the userdata argument with the CURLOPT_TRAILERDATA option.
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

The return value can either be CURL_TRAILERFUNC_OK or CURL_TRAILERFUNC_ABORT
which would respectively instruct libcurl to either continue with sending the
trailers or to abort the request.

If you set this option to NULL, then the transfer proceeds as usual
without any interruptions.
.SH DEFAULT:
NULL
.SH PROTOCOLS:
HTTP
.SH EXAMPLE:
#include <curl/curl.h>

static int trailer_cb(struct curl_slist **tr, void *data)
{
  /* libcurl will free the list */
  tr = curl_slist_append(*tr, "My-super-awesome-trailer: trailer-stuff");
  return CURL_TRAILERFUNC_OK;







|

|

|







53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71

The return value can either be CURL_TRAILERFUNC_OK or CURL_TRAILERFUNC_ABORT
which would respectively instruct libcurl to either continue with sending the
trailers or to abort the request.

If you set this option to NULL, then the transfer proceeds as usual
without any interruptions.
.SH DEFAULT
NULL
.SH PROTOCOLS
HTTP
.SH EXAMPLE
#include <curl/curl.h>

static int trailer_cb(struct curl_slist **tr, void *data)
{
  /* libcurl will free the list */
  tr = curl_slist_append(*tr, "My-super-awesome-trailer: trailer-stuff");
  return CURL_TRAILERFUNC_OK;
92
93
94
95
96
97
98
99
100
101
102
  /* Perform the request, res will get the return code */
  res = curl_easy_perform(curl);

  curl_easy_cleanup(curl);

  curl_slist_free_all(headers);
}
.SH AVAILABILITY:
This option was added in curl 7.64.0 and is present if HTTP support is enabled
.SH "SEE ALSO"
.BR CURLOPT_TRAILERDATA "(3), "







|



92
93
94
95
96
97
98
99
100
101
102
  /* Perform the request, res will get the return code */
  res = curl_easy_perform(curl);

  curl_easy_cleanup(curl);

  curl_slist_free_all(headers);
}
.SH AVAILABILITY
This option was added in curl 7.64.0 and is present if HTTP support is enabled
.SH "SEE ALSO"
.BR CURLOPT_TRAILERDATA "(3), "
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFERTEXT 3 "May 31, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFERTEXT, long text);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFERTEXT 3 "May 31, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFERTEXT, long text);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFER_ENCODING 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFER_ENCODING, long enable);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_TRANSFER_ENCODING 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TRANSFER_ENCODING, long enable);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNIX_SOCKET_PATH 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNIX_SOCKET_PATH \- set Unix domain socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNIX_SOCKET_PATH, char *path);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNIX_SOCKET_PATH 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNIX_SOCKET_PATH \- set Unix domain socket
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UNIX_SOCKET_PATH, char *path);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 15, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 15, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD 3 "April 17, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD \- enable data upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD, long upload);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD 3 "April 17, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD \- enable data upload
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD, long upload);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "August 18, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD_BUFFERSIZE \- set preferred upload buffer size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD_BUFFERSIZE, long size);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "August 18, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_UPLOAD_BUFFERSIZE \- set preferred upload buffer size
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD_BUFFERSIZE, long size);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_URL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_URL 3 "November 11, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_URL \- provide the URL to use in the request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_URL, char *URL);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_URL 3 "November 11, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_URL \- provide the URL to use in the request
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_URL, char *URL);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERAGENT 3 "December 21, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERAGENT \- set HTTP user-agent header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERAGENT, char *ua);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERAGENT 3 "December 21, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERAGENT \- set HTTP user-agent header
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERAGENT, char *ua);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERNAME.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERNAME 3 "May 05, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERNAME \- user name to use in authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERNAME 3 "May 05, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERNAME \- user name to use in authentication
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_USERPWD.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERPWD 3 "August 24, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERPWD \- user name and password to use in authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERPWD, char *userpwd);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USERPWD 3 "August 24, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USERPWD \- user name and password to use in authentication
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERPWD, char *userpwd);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USE_SSL 3 "October 10, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USE_SSL, long level);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_USE_SSL 3 "October 10, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USE_SSL, long level);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_VERBOSE 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_VERBOSE \- set verbose mode on/off
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_VERBOSE, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_VERBOSE 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_VERBOSE \- set verbose mode on/off
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_VERBOSE, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WILDCARDMATCH 3 "May 18, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WILDCARDMATCH \- enable directory wildcard transfers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WILDCARDMATCH, long onoff);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WILDCARDMATCH 3 "May 18, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WILDCARDMATCH \- enable directory wildcard transfers
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WILDCARDMATCH, long onoff);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEDATA 3 "August 11, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEDATA \- custom pointer passed to the write callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEDATA 3 "August 11, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEDATA \- custom pointer passed to the write callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEFUNCTION 3 "November 23, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEFUNCTION \- set callback for writing received data
.SH SYNOPSIS
.nf
#include <curl/curl.h>








|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_WRITEFUNCTION 3 "November 23, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_WRITEFUNCTION \- set callback for writing received data
.SH SYNOPSIS
.nf
#include <curl/curl.h>

Changes to jni/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFODATA 3 "October 09, 2017" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFODATA \- custom pointer passed to the progress callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFODATA, void *pointer);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFODATA 3 "October 09, 2017" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFODATA \- custom pointer passed to the progress callback
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFODATA, void *pointer);
Changes to jni/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFOFUNCTION 3 "February 03, 2016" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFOFUNCTION \- callback to progress meter function
.SH SYNOPSIS
#include <curl/curl.h>

int progress_callback(void *clientp,







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XFERINFOFUNCTION 3 "February 03, 2016" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XFERINFOFUNCTION \- callback to progress meter function
.SH SYNOPSIS
#include <curl/curl.h>

int progress_callback(void *clientp,
Changes to jni/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XOAUTH2_BEARER 3 "May 22, 2018" "libcurl 7.66.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XOAUTH2_BEARER \- specify OAuth 2.0 access token
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token);







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH CURLOPT_XOAUTH2_BEARER 3 "May 22, 2018" "libcurl 7.67.0" "curl_easy_setopt options"

.SH NAME
CURLOPT_XOAUTH2_BEARER \- specify OAuth 2.0 access token
.SH SYNOPSIS
#include <curl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token);
Changes to jni/curl/docs/libcurl/opts/Makefile.in.
460
461
462
463
464
465
466

467
468
469
470
471
472
473
  CURLINFO_TLS_SESSION.3                        \
  CURLINFO_TLS_SSL_PTR.3                        \
  CURLINFO_TOTAL_TIME.3                         \
  CURLINFO_TOTAL_TIME_T.3                       \
  CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3          \
  CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3        \
  CURLMOPT_MAXCONNECTS.3                        \

  CURLMOPT_MAX_HOST_CONNECTIONS.3               \
  CURLMOPT_MAX_PIPELINE_LENGTH.3                \
  CURLMOPT_MAX_TOTAL_CONNECTIONS.3              \
  CURLMOPT_PIPELINING.3                         \
  CURLMOPT_PIPELINING_SERVER_BL.3               \
  CURLMOPT_PIPELINING_SITE_BL.3                 \
  CURLMOPT_PUSHDATA.3                           \







>







460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
  CURLINFO_TLS_SESSION.3                        \
  CURLINFO_TLS_SSL_PTR.3                        \
  CURLINFO_TOTAL_TIME.3                         \
  CURLINFO_TOTAL_TIME_T.3                       \
  CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3          \
  CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3        \
  CURLMOPT_MAXCONNECTS.3                        \
  CURLMOPT_MAX_CONCURRENT_STREAMS.3             \
  CURLMOPT_MAX_HOST_CONNECTIONS.3               \
  CURLMOPT_MAX_PIPELINE_LENGTH.3                \
  CURLMOPT_MAX_TOTAL_CONNECTIONS.3              \
  CURLMOPT_PIPELINING.3                         \
  CURLMOPT_PIPELINING_SERVER_BL.3               \
  CURLMOPT_PIPELINING_SITE_BL.3                 \
  CURLMOPT_PUSHDATA.3                           \
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
  CURLOPT_CAPATH.3                              \
  CURLOPT_CERTINFO.3                            \
  CURLOPT_CHUNK_BGN_FUNCTION.3                  \
  CURLOPT_CHUNK_DATA.3                          \
  CURLOPT_CHUNK_END_FUNCTION.3                  \
  CURLOPT_CLOSESOCKETDATA.3                     \
  CURLOPT_CLOSESOCKETFUNCTION.3                 \
  CURLOPT_UPKEEP_INTERVAL_MS.3             \
  CURLOPT_CONNECTTIMEOUT.3                      \
  CURLOPT_CONNECTTIMEOUT_MS.3                   \
  CURLOPT_CONNECT_ONLY.3                        \
  CURLOPT_CONNECT_TO.3                          \
  CURLOPT_CONV_FROM_NETWORK_FUNCTION.3          \
  CURLOPT_CONV_FROM_UTF8_FUNCTION.3             \
  CURLOPT_CONV_TO_NETWORK_FUNCTION.3            \
  CURLOPT_COOKIE.3                              \
  CURLOPT_COOKIEFILE.3                          \
  CURLOPT_COOKIEJAR.3                           \
  CURLOPT_COOKIELIST.3                          \
  CURLOPT_COOKIESESSION.3                       \
  CURLOPT_COPYPOSTFIELDS.3                      \
  CURLOPT_CRLF.3                                \
  CURLOPT_CRLFILE.3                             \
  CURLOPT_CUSTOMREQUEST.3                       \
  CURLOPT_CURLU.3                               \
  CURLOPT_DEBUGDATA.3                           \
  CURLOPT_DEBUGFUNCTION.3                       \
  CURLOPT_DEFAULT_PROTOCOL.3                    \
  CURLOPT_DIRLISTONLY.3                         \
  CURLOPT_DISALLOW_USERNAME_IN_URL.3            \
  CURLOPT_DNS_CACHE_TIMEOUT.3                   \
  CURLOPT_DNS_INTERFACE.3                       \







<















|
|







490
491
492
493
494
495
496

497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
  CURLOPT_CAPATH.3                              \
  CURLOPT_CERTINFO.3                            \
  CURLOPT_CHUNK_BGN_FUNCTION.3                  \
  CURLOPT_CHUNK_DATA.3                          \
  CURLOPT_CHUNK_END_FUNCTION.3                  \
  CURLOPT_CLOSESOCKETDATA.3                     \
  CURLOPT_CLOSESOCKETFUNCTION.3                 \

  CURLOPT_CONNECTTIMEOUT.3                      \
  CURLOPT_CONNECTTIMEOUT_MS.3                   \
  CURLOPT_CONNECT_ONLY.3                        \
  CURLOPT_CONNECT_TO.3                          \
  CURLOPT_CONV_FROM_NETWORK_FUNCTION.3          \
  CURLOPT_CONV_FROM_UTF8_FUNCTION.3             \
  CURLOPT_CONV_TO_NETWORK_FUNCTION.3            \
  CURLOPT_COOKIE.3                              \
  CURLOPT_COOKIEFILE.3                          \
  CURLOPT_COOKIEJAR.3                           \
  CURLOPT_COOKIELIST.3                          \
  CURLOPT_COOKIESESSION.3                       \
  CURLOPT_COPYPOSTFIELDS.3                      \
  CURLOPT_CRLF.3                                \
  CURLOPT_CRLFILE.3                             \
  CURLOPT_CURLU.3                               \
  CURLOPT_CUSTOMREQUEST.3                       \
  CURLOPT_DEBUGDATA.3                           \
  CURLOPT_DEBUGFUNCTION.3                       \
  CURLOPT_DEFAULT_PROTOCOL.3                    \
  CURLOPT_DIRLISTONLY.3                         \
  CURLOPT_DISALLOW_USERNAME_IN_URL.3            \
  CURLOPT_DNS_CACHE_TIMEOUT.3                   \
  CURLOPT_DNS_INTERFACE.3                       \
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
  CURLOPT_HTTPHEADER.3                          \
  CURLOPT_HTTPPOST.3                            \
  CURLOPT_HTTPPROXYTUNNEL.3                     \
  CURLOPT_HTTP_CONTENT_DECODING.3               \
  CURLOPT_HTTP_TRANSFER_DECODING.3              \
  CURLOPT_HTTP_VERSION.3                        \
  CURLOPT_IGNORE_CONTENT_LENGTH.3               \
  CURLOPT_TRAILERDATA.3                         \
  CURLOPT_TRAILERFUNCTION.3                     \
  CURLOPT_INFILESIZE.3                          \
  CURLOPT_INFILESIZE_LARGE.3                    \
  CURLOPT_INTERFACE.3                           \
  CURLOPT_INTERLEAVEDATA.3                      \
  CURLOPT_INTERLEAVEFUNCTION.3                  \
  CURLOPT_IOCTLDATA.3                           \
  CURLOPT_IOCTLFUNCTION.3                       \







<
<







560
561
562
563
564
565
566


567
568
569
570
571
572
573
  CURLOPT_HTTPHEADER.3                          \
  CURLOPT_HTTPPOST.3                            \
  CURLOPT_HTTPPROXYTUNNEL.3                     \
  CURLOPT_HTTP_CONTENT_DECODING.3               \
  CURLOPT_HTTP_TRANSFER_DECODING.3              \
  CURLOPT_HTTP_VERSION.3                        \
  CURLOPT_IGNORE_CONTENT_LENGTH.3               \


  CURLOPT_INFILESIZE.3                          \
  CURLOPT_INFILESIZE_LARGE.3                    \
  CURLOPT_INTERFACE.3                           \
  CURLOPT_INTERLEAVEDATA.3                      \
  CURLOPT_INTERLEAVEFUNCTION.3                  \
  CURLOPT_IOCTLDATA.3                           \
  CURLOPT_IOCTLFUNCTION.3                       \
724
725
726
727
728
729
730


731
732
733
734

735
736
737
738
739
740
741
  CURLOPT_TIMEOUT_MS.3                          \
  CURLOPT_TIMEVALUE.3                           \
  CURLOPT_TIMEVALUE_LARGE.3                     \
  CURLOPT_TLS13_CIPHERS.3                       \
  CURLOPT_TLSAUTH_PASSWORD.3                    \
  CURLOPT_TLSAUTH_TYPE.3                        \
  CURLOPT_TLSAUTH_USERNAME.3                    \


  CURLOPT_TRANSFERTEXT.3                        \
  CURLOPT_TRANSFER_ENCODING.3                   \
  CURLOPT_UNIX_SOCKET_PATH.3                    \
  CURLOPT_UNRESTRICTED_AUTH.3                   \

  CURLOPT_UPLOAD.3                              \
  CURLOPT_UPLOAD_BUFFERSIZE.3                   \
  CURLOPT_URL.3                                 \
  CURLOPT_USERAGENT.3                           \
  CURLOPT_USERNAME.3                            \
  CURLOPT_USERPWD.3                             \
  CURLOPT_USE_SSL.3                             \







>
>




>







722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
  CURLOPT_TIMEOUT_MS.3                          \
  CURLOPT_TIMEVALUE.3                           \
  CURLOPT_TIMEVALUE_LARGE.3                     \
  CURLOPT_TLS13_CIPHERS.3                       \
  CURLOPT_TLSAUTH_PASSWORD.3                    \
  CURLOPT_TLSAUTH_TYPE.3                        \
  CURLOPT_TLSAUTH_USERNAME.3                    \
  CURLOPT_TRAILERDATA.3                         \
  CURLOPT_TRAILERFUNCTION.3                     \
  CURLOPT_TRANSFERTEXT.3                        \
  CURLOPT_TRANSFER_ENCODING.3                   \
  CURLOPT_UNIX_SOCKET_PATH.3                    \
  CURLOPT_UNRESTRICTED_AUTH.3                   \
  CURLOPT_UPKEEP_INTERVAL_MS.3                  \
  CURLOPT_UPLOAD.3                              \
  CURLOPT_UPLOAD_BUFFERSIZE.3                   \
  CURLOPT_URL.3                                 \
  CURLOPT_USERAGENT.3                           \
  CURLOPT_USERNAME.3                            \
  CURLOPT_USERPWD.3                             \
  CURLOPT_USE_SSL.3                             \
Changes to jni/curl/docs/libcurl/opts/Makefile.inc.
64
65
66
67
68
69
70

71
72
73
74
75
76
77
  CURLINFO_TLS_SESSION.3                        \
  CURLINFO_TLS_SSL_PTR.3                        \
  CURLINFO_TOTAL_TIME.3                         \
  CURLINFO_TOTAL_TIME_T.3                       \
  CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3          \
  CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3        \
  CURLMOPT_MAXCONNECTS.3                        \

  CURLMOPT_MAX_HOST_CONNECTIONS.3               \
  CURLMOPT_MAX_PIPELINE_LENGTH.3                \
  CURLMOPT_MAX_TOTAL_CONNECTIONS.3              \
  CURLMOPT_PIPELINING.3                         \
  CURLMOPT_PIPELINING_SERVER_BL.3               \
  CURLMOPT_PIPELINING_SITE_BL.3                 \
  CURLMOPT_PUSHDATA.3                           \







>







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  CURLINFO_TLS_SESSION.3                        \
  CURLINFO_TLS_SSL_PTR.3                        \
  CURLINFO_TOTAL_TIME.3                         \
  CURLINFO_TOTAL_TIME_T.3                       \
  CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3          \
  CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3        \
  CURLMOPT_MAXCONNECTS.3                        \
  CURLMOPT_MAX_CONCURRENT_STREAMS.3             \
  CURLMOPT_MAX_HOST_CONNECTIONS.3               \
  CURLMOPT_MAX_PIPELINE_LENGTH.3                \
  CURLMOPT_MAX_TOTAL_CONNECTIONS.3              \
  CURLMOPT_PIPELINING.3                         \
  CURLMOPT_PIPELINING_SERVER_BL.3               \
  CURLMOPT_PIPELINING_SITE_BL.3                 \
  CURLMOPT_PUSHDATA.3                           \
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
  CURLOPT_CAPATH.3                              \
  CURLOPT_CERTINFO.3                            \
  CURLOPT_CHUNK_BGN_FUNCTION.3                  \
  CURLOPT_CHUNK_DATA.3                          \
  CURLOPT_CHUNK_END_FUNCTION.3                  \
  CURLOPT_CLOSESOCKETDATA.3                     \
  CURLOPT_CLOSESOCKETFUNCTION.3                 \
  CURLOPT_UPKEEP_INTERVAL_MS.3             \
  CURLOPT_CONNECTTIMEOUT.3                      \
  CURLOPT_CONNECTTIMEOUT_MS.3                   \
  CURLOPT_CONNECT_ONLY.3                        \
  CURLOPT_CONNECT_TO.3                          \
  CURLOPT_CONV_FROM_NETWORK_FUNCTION.3          \
  CURLOPT_CONV_FROM_UTF8_FUNCTION.3             \
  CURLOPT_CONV_TO_NETWORK_FUNCTION.3            \
  CURLOPT_COOKIE.3                              \
  CURLOPT_COOKIEFILE.3                          \
  CURLOPT_COOKIEJAR.3                           \
  CURLOPT_COOKIELIST.3                          \
  CURLOPT_COOKIESESSION.3                       \
  CURLOPT_COPYPOSTFIELDS.3                      \
  CURLOPT_CRLF.3                                \
  CURLOPT_CRLFILE.3                             \
  CURLOPT_CUSTOMREQUEST.3                       \
  CURLOPT_CURLU.3                               \
  CURLOPT_DEBUGDATA.3                           \
  CURLOPT_DEBUGFUNCTION.3                       \
  CURLOPT_DEFAULT_PROTOCOL.3                    \
  CURLOPT_DIRLISTONLY.3                         \
  CURLOPT_DISALLOW_USERNAME_IN_URL.3            \
  CURLOPT_DNS_CACHE_TIMEOUT.3                   \
  CURLOPT_DNS_INTERFACE.3                       \







<















|
|







94
95
96
97
98
99
100

101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
  CURLOPT_CAPATH.3                              \
  CURLOPT_CERTINFO.3                            \
  CURLOPT_CHUNK_BGN_FUNCTION.3                  \
  CURLOPT_CHUNK_DATA.3                          \
  CURLOPT_CHUNK_END_FUNCTION.3                  \
  CURLOPT_CLOSESOCKETDATA.3                     \
  CURLOPT_CLOSESOCKETFUNCTION.3                 \

  CURLOPT_CONNECTTIMEOUT.3                      \
  CURLOPT_CONNECTTIMEOUT_MS.3                   \
  CURLOPT_CONNECT_ONLY.3                        \
  CURLOPT_CONNECT_TO.3                          \
  CURLOPT_CONV_FROM_NETWORK_FUNCTION.3          \
  CURLOPT_CONV_FROM_UTF8_FUNCTION.3             \
  CURLOPT_CONV_TO_NETWORK_FUNCTION.3            \
  CURLOPT_COOKIE.3                              \
  CURLOPT_COOKIEFILE.3                          \
  CURLOPT_COOKIEJAR.3                           \
  CURLOPT_COOKIELIST.3                          \
  CURLOPT_COOKIESESSION.3                       \
  CURLOPT_COPYPOSTFIELDS.3                      \
  CURLOPT_CRLF.3                                \
  CURLOPT_CRLFILE.3                             \
  CURLOPT_CURLU.3                               \
  CURLOPT_CUSTOMREQUEST.3                       \
  CURLOPT_DEBUGDATA.3                           \
  CURLOPT_DEBUGFUNCTION.3                       \
  CURLOPT_DEFAULT_PROTOCOL.3                    \
  CURLOPT_DIRLISTONLY.3                         \
  CURLOPT_DISALLOW_USERNAME_IN_URL.3            \
  CURLOPT_DNS_CACHE_TIMEOUT.3                   \
  CURLOPT_DNS_INTERFACE.3                       \
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
  CURLOPT_HTTPHEADER.3                          \
  CURLOPT_HTTPPOST.3                            \
  CURLOPT_HTTPPROXYTUNNEL.3                     \
  CURLOPT_HTTP_CONTENT_DECODING.3               \
  CURLOPT_HTTP_TRANSFER_DECODING.3              \
  CURLOPT_HTTP_VERSION.3                        \
  CURLOPT_IGNORE_CONTENT_LENGTH.3               \
  CURLOPT_TRAILERDATA.3                         \
  CURLOPT_TRAILERFUNCTION.3                     \
  CURLOPT_INFILESIZE.3                          \
  CURLOPT_INFILESIZE_LARGE.3                    \
  CURLOPT_INTERFACE.3                           \
  CURLOPT_INTERLEAVEDATA.3                      \
  CURLOPT_INTERLEAVEFUNCTION.3                  \
  CURLOPT_IOCTLDATA.3                           \
  CURLOPT_IOCTLFUNCTION.3                       \







<
<







164
165
166
167
168
169
170


171
172
173
174
175
176
177
  CURLOPT_HTTPHEADER.3                          \
  CURLOPT_HTTPPOST.3                            \
  CURLOPT_HTTPPROXYTUNNEL.3                     \
  CURLOPT_HTTP_CONTENT_DECODING.3               \
  CURLOPT_HTTP_TRANSFER_DECODING.3              \
  CURLOPT_HTTP_VERSION.3                        \
  CURLOPT_IGNORE_CONTENT_LENGTH.3               \


  CURLOPT_INFILESIZE.3                          \
  CURLOPT_INFILESIZE_LARGE.3                    \
  CURLOPT_INTERFACE.3                           \
  CURLOPT_INTERLEAVEDATA.3                      \
  CURLOPT_INTERLEAVEFUNCTION.3                  \
  CURLOPT_IOCTLDATA.3                           \
  CURLOPT_IOCTLFUNCTION.3                       \
328
329
330
331
332
333
334


335
336
337
338

339
340
341
342
343
344
345
  CURLOPT_TIMEOUT_MS.3                          \
  CURLOPT_TIMEVALUE.3                           \
  CURLOPT_TIMEVALUE_LARGE.3                     \
  CURLOPT_TLS13_CIPHERS.3                       \
  CURLOPT_TLSAUTH_PASSWORD.3                    \
  CURLOPT_TLSAUTH_TYPE.3                        \
  CURLOPT_TLSAUTH_USERNAME.3                    \


  CURLOPT_TRANSFERTEXT.3                        \
  CURLOPT_TRANSFER_ENCODING.3                   \
  CURLOPT_UNIX_SOCKET_PATH.3                    \
  CURLOPT_UNRESTRICTED_AUTH.3                   \

  CURLOPT_UPLOAD.3                              \
  CURLOPT_UPLOAD_BUFFERSIZE.3                   \
  CURLOPT_URL.3                                 \
  CURLOPT_USERAGENT.3                           \
  CURLOPT_USERNAME.3                            \
  CURLOPT_USERPWD.3                             \
  CURLOPT_USE_SSL.3                             \







>
>




>







326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
  CURLOPT_TIMEOUT_MS.3                          \
  CURLOPT_TIMEVALUE.3                           \
  CURLOPT_TIMEVALUE_LARGE.3                     \
  CURLOPT_TLS13_CIPHERS.3                       \
  CURLOPT_TLSAUTH_PASSWORD.3                    \
  CURLOPT_TLSAUTH_TYPE.3                        \
  CURLOPT_TLSAUTH_USERNAME.3                    \
  CURLOPT_TRAILERDATA.3                         \
  CURLOPT_TRAILERFUNCTION.3                     \
  CURLOPT_TRANSFERTEXT.3                        \
  CURLOPT_TRANSFER_ENCODING.3                   \
  CURLOPT_UNIX_SOCKET_PATH.3                    \
  CURLOPT_UNRESTRICTED_AUTH.3                   \
  CURLOPT_UPKEEP_INTERVAL_MS.3                  \
  CURLOPT_UPLOAD.3                              \
  CURLOPT_UPLOAD_BUFFERSIZE.3                   \
  CURLOPT_URL.3                                 \
  CURLOPT_USERAGENT.3                           \
  CURLOPT_USERNAME.3                            \
  CURLOPT_USERPWD.3                             \
  CURLOPT_USE_SSL.3                             \
Changes to jni/curl/docs/libcurl/symbols-in-versions.
315
316
317
318
319
320
321

322
323
324
325
326
327
328
CURLKHTYPE_UNKNOWN              7.19.6
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 7.30.0
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 7.30.0
CURLMOPT_MAXCONNECTS            7.16.3
CURLMOPT_MAX_HOST_CONNECTIONS   7.30.0
CURLMOPT_MAX_PIPELINE_LENGTH    7.30.0
CURLMOPT_MAX_TOTAL_CONNECTIONS  7.30.0

CURLMOPT_PIPELINING             7.16.0
CURLMOPT_PIPELINING_SERVER_BL   7.30.0
CURLMOPT_PIPELINING_SITE_BL     7.30.0
CURLMOPT_PUSHDATA               7.44.0
CURLMOPT_PUSHFUNCTION           7.44.0
CURLMOPT_SOCKETDATA             7.15.4
CURLMOPT_SOCKETFUNCTION         7.15.4







>







315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
CURLKHTYPE_UNKNOWN              7.19.6
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 7.30.0
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 7.30.0
CURLMOPT_MAXCONNECTS            7.16.3
CURLMOPT_MAX_HOST_CONNECTIONS   7.30.0
CURLMOPT_MAX_PIPELINE_LENGTH    7.30.0
CURLMOPT_MAX_TOTAL_CONNECTIONS  7.30.0
CURLMOPT_MAX_CONCURRENT_STREAMS  7.67.0
CURLMOPT_PIPELINING             7.16.0
CURLMOPT_PIPELINING_SERVER_BL   7.30.0
CURLMOPT_PIPELINING_SITE_BL     7.30.0
CURLMOPT_PUSHDATA               7.44.0
CURLMOPT_PUSHFUNCTION           7.44.0
CURLMOPT_SOCKETDATA             7.15.4
CURLMOPT_SOCKETFUNCTION         7.15.4
775
776
777
778
779
780
781

782
783
784
785
786
787
788
CURLU_APPENDQUERY               7.62.0
CURLU_DEFAULT_PORT              7.62.0
CURLU_DEFAULT_SCHEME            7.62.0
CURLU_DISALLOW_USER             7.62.0
CURLU_GUESS_SCHEME              7.62.0
CURLU_NON_SUPPORT_SCHEME        7.62.0
CURLU_NO_DEFAULT_PORT           7.62.0

CURLU_PATH_AS_IS                7.62.0
CURLU_URLDECODE                 7.62.0
CURLU_URLENCODE                 7.62.0
CURLVERSION_FIFTH               7.57.0
CURLVERSION_FIRST               7.10
CURLVERSION_FOURTH              7.16.1
CURLVERSION_NOW                 7.10







>







776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
CURLU_APPENDQUERY               7.62.0
CURLU_DEFAULT_PORT              7.62.0
CURLU_DEFAULT_SCHEME            7.62.0
CURLU_DISALLOW_USER             7.62.0
CURLU_GUESS_SCHEME              7.62.0
CURLU_NON_SUPPORT_SCHEME        7.62.0
CURLU_NO_DEFAULT_PORT           7.62.0
CURLU_NO_AUTHORITY              7.67.0
CURLU_PATH_AS_IS                7.62.0
CURLU_URLDECODE                 7.62.0
CURLU_URLENCODE                 7.62.0
CURLVERSION_FIFTH               7.57.0
CURLVERSION_FIRST               7.10
CURLVERSION_FOURTH              7.16.1
CURLVERSION_NOW                 7.10
921
922
923
924
925
926
927

928
929
930
931
932
933
934
CURL_UPKEEP_INTERVAL_DEFAULT    7.62.0
CURL_VERSION_ALTSVC             7.64.1
CURL_VERSION_ASYNCHDNS          7.10.7
CURL_VERSION_BROTLI             7.57.0
CURL_VERSION_CONV               7.15.4
CURL_VERSION_CURLDEBUG          7.19.6
CURL_VERSION_DEBUG              7.10.6

CURL_VERSION_GSSAPI             7.38.0
CURL_VERSION_GSSNEGOTIATE       7.10.6        7.38.0
CURL_VERSION_HTTP2              7.33.0
CURL_VERSION_HTTP3              7.66.0
CURL_VERSION_HTTPS_PROXY        7.52.0
CURL_VERSION_IDN                7.12.0
CURL_VERSION_IPV6               7.10







>







923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
CURL_UPKEEP_INTERVAL_DEFAULT    7.62.0
CURL_VERSION_ALTSVC             7.64.1
CURL_VERSION_ASYNCHDNS          7.10.7
CURL_VERSION_BROTLI             7.57.0
CURL_VERSION_CONV               7.15.4
CURL_VERSION_CURLDEBUG          7.19.6
CURL_VERSION_DEBUG              7.10.6
CURL_VERSION_ESNI               7.67.0
CURL_VERSION_GSSAPI             7.38.0
CURL_VERSION_GSSNEGOTIATE       7.10.6        7.38.0
CURL_VERSION_HTTP2              7.33.0
CURL_VERSION_HTTP3              7.66.0
CURL_VERSION_HTTPS_PROXY        7.52.0
CURL_VERSION_IDN                7.12.0
CURL_VERSION_IPV6               7.10
Changes to jni/curl/include/curl/curl.h.
2795
2796
2797
2798
2799
2800
2801


2802
2803
2804
2805
2806
2807
2808
#define CURL_VERSION_PSL          (1<<20) /* Mozilla's Public Suffix List, used
                                             for cookie domain verification */
#define CURL_VERSION_HTTPS_PROXY  (1<<21) /* HTTPS-proxy support built-in */
#define CURL_VERSION_MULTI_SSL    (1<<22) /* Multiple SSL backends available */
#define CURL_VERSION_BROTLI       (1<<23) /* Brotli features are present. */
#define CURL_VERSION_ALTSVC       (1<<24) /* Alt-Svc handling built-in */
#define CURL_VERSION_HTTP3        (1<<25) /* HTTP3 support built-in */



 /*
 * NAME curl_version_info()
 *
 * DESCRIPTION
 *
 * This function returns a pointer to a static copy of the version info







>
>







2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
#define CURL_VERSION_PSL          (1<<20) /* Mozilla's Public Suffix List, used
                                             for cookie domain verification */
#define CURL_VERSION_HTTPS_PROXY  (1<<21) /* HTTPS-proxy support built-in */
#define CURL_VERSION_MULTI_SSL    (1<<22) /* Multiple SSL backends available */
#define CURL_VERSION_BROTLI       (1<<23) /* Brotli features are present. */
#define CURL_VERSION_ALTSVC       (1<<24) /* Alt-Svc handling built-in */
#define CURL_VERSION_HTTP3        (1<<25) /* HTTP3 support built-in */

#define CURL_VERSION_ESNI         (1<<26) /* ESNI support */

 /*
 * NAME curl_version_info()
 *
 * DESCRIPTION
 *
 * This function returns a pointer to a static copy of the version info
Changes to jni/curl/include/curl/curlver.h.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
   a script at release-time. This was made its own header file in 7.11.2 */

/* This is the global package copyright */
#define LIBCURL_COPYRIGHT "1996 - 2019 Daniel Stenberg, <daniel@haxx.se>."

/* This is the version number of the libcurl package from which this header
   file origins: */
#define LIBCURL_VERSION "7.66.0"

/* The numeric version number is also available "in parts" by using these
   defines: */
#define LIBCURL_VERSION_MAJOR 7
#define LIBCURL_VERSION_MINOR 66
#define LIBCURL_VERSION_PATCH 0

/* This is the numeric version of the libcurl version number, meant for easier
   parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
   always follow this syntax:

         0xXXYYZZ







|




|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
   a script at release-time. This was made its own header file in 7.11.2 */

/* This is the global package copyright */
#define LIBCURL_COPYRIGHT "1996 - 2019 Daniel Stenberg, <daniel@haxx.se>."

/* This is the version number of the libcurl package from which this header
   file origins: */
#define LIBCURL_VERSION "7.67.0"

/* The numeric version number is also available "in parts" by using these
   defines: */
#define LIBCURL_VERSION_MAJOR 7
#define LIBCURL_VERSION_MINOR 67
#define LIBCURL_VERSION_PATCH 0

/* This is the numeric version of the libcurl version number, meant for easier
   parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
   always follow this syntax:

         0xXXYYZZ
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
   and it is always a greater number in a more recent release. It makes
   comparisons with greater than and less than work.

   Note: This define is the full hex number and _does not_ use the
   CURL_VERSION_BITS() macro since curl's own configure script greps for it
   and needs it to contain the full number.
*/
#define LIBCURL_VERSION_NUM 0x074200

/*
 * This is the date and time when the full source package was created. The
 * timestamp is not stored in git, as the timestamp is properly set in the
 * tarballs by the maketgz script.
 *
 * The format of the date follows this template:
 *
 * "2007-11-23"
 */
#define LIBCURL_TIMESTAMP "2019-09-11"

#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
#define CURL_AT_LEAST_VERSION(x,y,z) \
  (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))

#endif /* CURLINC_CURLVER_H */







|










|






53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
   and it is always a greater number in a more recent release. It makes
   comparisons with greater than and less than work.

   Note: This define is the full hex number and _does not_ use the
   CURL_VERSION_BITS() macro since curl's own configure script greps for it
   and needs it to contain the full number.
*/
#define LIBCURL_VERSION_NUM 0x074300

/*
 * This is the date and time when the full source package was created. The
 * timestamp is not stored in git, as the timestamp is properly set in the
 * tarballs by the maketgz script.
 *
 * The format of the date follows this template:
 *
 * "2007-11-23"
 */
#define LIBCURL_TIMESTAMP "2019-11-06"

#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
#define CURL_AT_LEAST_VERSION(x,y,z) \
  (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))

#endif /* CURLINC_CURLVER_H */
Changes to jni/curl/include/curl/multi.h.
392
393
394
395
396
397
398



399
400
401
402
403
404
405

   /* This is the server push callback function pointer */
  CINIT(PUSHFUNCTION, FUNCTIONPOINT, 14),

  /* This is the argument passed to the server push callback */
  CINIT(PUSHDATA, OBJECTPOINT, 15),




  CURLMOPT_LASTENTRY /* the last unused */
} CURLMoption;


/*
 * Name:    curl_multi_setopt()
 *







>
>
>







392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408

   /* This is the server push callback function pointer */
  CINIT(PUSHFUNCTION, FUNCTIONPOINT, 14),

  /* This is the argument passed to the server push callback */
  CINIT(PUSHDATA, OBJECTPOINT, 15),

  /* maximum number of concurrent streams to support on a connection */
  CINIT(MAX_CONCURRENT_STREAMS, LONG, 16),

  CURLMOPT_LASTENTRY /* the last unused */
} CURLMoption;


/*
 * Name:    curl_multi_setopt()
 *
444
445
446
447
448
449
450



451
452
453
454
455

typedef int (*curl_push_callback)(CURL *parent,
                                  CURL *easy,
                                  size_t num_headers,
                                  struct curl_pushheaders *headers,
                                  void *userp);




#ifdef __cplusplus
} /* end of extern "C" */
#endif

#endif







>
>
>





447
448
449
450
451
452
453
454
455
456
457
458
459
460
461

typedef int (*curl_push_callback)(CURL *parent,
                                  CURL *easy,
                                  size_t num_headers,
                                  struct curl_pushheaders *headers,
                                  void *userp);

/* value for MAXIMUM CONCURRENT STREAMS upper limit */
#define INITIAL_MAX_CONCURRENT_STREAMS ((1U << 31) - 1)

#ifdef __cplusplus
} /* end of extern "C" */
#endif

#endif
Changes to jni/curl/include/curl/urlapi.h.
73
74
75
76
77
78
79


80
81
82
83
84
85
86
#define CURLU_NON_SUPPORT_SCHEME (1<<3) /* allow non-supported scheme */
#define CURLU_PATH_AS_IS (1<<4)         /* leave dot sequences */
#define CURLU_DISALLOW_USER (1<<5)      /* no user+password allowed */
#define CURLU_URLDECODE (1<<6)          /* URL decode on get */
#define CURLU_URLENCODE (1<<7)          /* URL encode on set */
#define CURLU_APPENDQUERY (1<<8)        /* append a form style part */
#define CURLU_GUESS_SCHEME (1<<9)       /* legacy curl-style guessing */



typedef struct Curl_URL CURLU;

/*
 * curl_url() creates a new CURLU handle and returns a pointer to it.
 * Must be freed with curl_url_cleanup().
 */







>
>







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#define CURLU_NON_SUPPORT_SCHEME (1<<3) /* allow non-supported scheme */
#define CURLU_PATH_AS_IS (1<<4)         /* leave dot sequences */
#define CURLU_DISALLOW_USER (1<<5)      /* no user+password allowed */
#define CURLU_URLDECODE (1<<6)          /* URL decode on get */
#define CURLU_URLENCODE (1<<7)          /* URL encode on set */
#define CURLU_APPENDQUERY (1<<8)        /* append a form style part */
#define CURLU_GUESS_SCHEME (1<<9)       /* legacy curl-style guessing */
#define CURLU_NO_AUTHORITY (1<<10)      /* Allow empty authority when the
                                           scheme is unknown. */

typedef struct Curl_URL CURLU;

/*
 * curl_url() creates a new CURLU handle and returns a pointer to it.
 * Must be freed with curl_url_cleanup().
 */
Changes to jni/curl/lib/Makefile.in.
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
	libcurl_la-x509asn1.lo libcurl_la-http2.lo libcurl_la-smb.lo \
	libcurl_la-curl_endian.lo libcurl_la-curl_des.lo \
	libcurl_la-system_win32.lo libcurl_la-mime.lo \
	libcurl_la-sha256.lo libcurl_la-setopt.lo \
	libcurl_la-curl_path.lo libcurl_la-curl_ctype.lo \
	libcurl_la-curl_range.lo libcurl_la-psl.lo libcurl_la-doh.lo \
	libcurl_la-urlapi.lo libcurl_la-curl_get_line.lo \
	libcurl_la-altsvc.lo
am__dirstamp = $(am__leading_dot)dirstamp
am__objects_2 = vauth/libcurl_la-vauth.lo \
	vauth/libcurl_la-cleartext.lo vauth/libcurl_la-cram.lo \
	vauth/libcurl_la-digest.lo vauth/libcurl_la-digest_sspi.lo \
	vauth/libcurl_la-krb5_gssapi.lo vauth/libcurl_la-krb5_sspi.lo \
	vauth/libcurl_la-ntlm.lo vauth/libcurl_la-ntlm_sspi.lo \
	vauth/libcurl_la-oauth2.lo vauth/libcurl_la-spnego_gssapi.lo \







|







225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
	libcurl_la-x509asn1.lo libcurl_la-http2.lo libcurl_la-smb.lo \
	libcurl_la-curl_endian.lo libcurl_la-curl_des.lo \
	libcurl_la-system_win32.lo libcurl_la-mime.lo \
	libcurl_la-sha256.lo libcurl_la-setopt.lo \
	libcurl_la-curl_path.lo libcurl_la-curl_ctype.lo \
	libcurl_la-curl_range.lo libcurl_la-psl.lo libcurl_la-doh.lo \
	libcurl_la-urlapi.lo libcurl_la-curl_get_line.lo \
	libcurl_la-altsvc.lo libcurl_la-socketpair.lo
am__dirstamp = $(am__leading_dot)dirstamp
am__objects_2 = vauth/libcurl_la-vauth.lo \
	vauth/libcurl_la-cleartext.lo vauth/libcurl_la-cram.lo \
	vauth/libcurl_la-digest.lo vauth/libcurl_la-digest_sspi.lo \
	vauth/libcurl_la-krb5_gssapi.lo vauth/libcurl_la-krb5_sspi.lo \
	vauth/libcurl_la-ntlm.lo vauth/libcurl_la-ntlm_sspi.lo \
	vauth/libcurl_la-oauth2.lo vauth/libcurl_la-spnego_gssapi.lo \
311
312
313
314
315
316
317
318

319
320
321
322
323
324
325
	libcurlu_la-x509asn1.lo libcurlu_la-http2.lo \
	libcurlu_la-smb.lo libcurlu_la-curl_endian.lo \
	libcurlu_la-curl_des.lo libcurlu_la-system_win32.lo \
	libcurlu_la-mime.lo libcurlu_la-sha256.lo \
	libcurlu_la-setopt.lo libcurlu_la-curl_path.lo \
	libcurlu_la-curl_ctype.lo libcurlu_la-curl_range.lo \
	libcurlu_la-psl.lo libcurlu_la-doh.lo libcurlu_la-urlapi.lo \
	libcurlu_la-curl_get_line.lo libcurlu_la-altsvc.lo

am__objects_10 = vauth/libcurlu_la-vauth.lo \
	vauth/libcurlu_la-cleartext.lo vauth/libcurlu_la-cram.lo \
	vauth/libcurlu_la-digest.lo vauth/libcurlu_la-digest_sspi.lo \
	vauth/libcurlu_la-krb5_gssapi.lo \
	vauth/libcurlu_la-krb5_sspi.lo vauth/libcurlu_la-ntlm.lo \
	vauth/libcurlu_la-ntlm_sspi.lo vauth/libcurlu_la-oauth2.lo \
	vauth/libcurlu_la-spnego_gssapi.lo \







|
>







311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
	libcurlu_la-x509asn1.lo libcurlu_la-http2.lo \
	libcurlu_la-smb.lo libcurlu_la-curl_endian.lo \
	libcurlu_la-curl_des.lo libcurlu_la-system_win32.lo \
	libcurlu_la-mime.lo libcurlu_la-sha256.lo \
	libcurlu_la-setopt.lo libcurlu_la-curl_path.lo \
	libcurlu_la-curl_ctype.lo libcurlu_la-curl_range.lo \
	libcurlu_la-psl.lo libcurlu_la-doh.lo libcurlu_la-urlapi.lo \
	libcurlu_la-curl_get_line.lo libcurlu_la-altsvc.lo \
	libcurlu_la-socketpair.lo
am__objects_10 = vauth/libcurlu_la-vauth.lo \
	vauth/libcurlu_la-cleartext.lo vauth/libcurlu_la-cram.lo \
	vauth/libcurlu_la-digest.lo vauth/libcurlu_la-digest_sspi.lo \
	vauth/libcurlu_la-krb5_gssapi.lo \
	vauth/libcurlu_la-krb5_sspi.lo vauth/libcurlu_la-ntlm.lo \
	vauth/libcurlu_la-ntlm_sspi.lo vauth/libcurlu_la-oauth2.lo \
	vauth/libcurlu_la-spnego_gssapi.lo \
440
441
442
443
444
445
446

447
448
449
450
451
452
453
	./$(DEPDIR)/libcurl_la-select.Plo \
	./$(DEPDIR)/libcurl_la-sendf.Plo \
	./$(DEPDIR)/libcurl_la-setopt.Plo \
	./$(DEPDIR)/libcurl_la-sha256.Plo \
	./$(DEPDIR)/libcurl_la-share.Plo \
	./$(DEPDIR)/libcurl_la-slist.Plo \
	./$(DEPDIR)/libcurl_la-smb.Plo ./$(DEPDIR)/libcurl_la-smtp.Plo \

	./$(DEPDIR)/libcurl_la-socks.Plo \
	./$(DEPDIR)/libcurl_la-socks_gssapi.Plo \
	./$(DEPDIR)/libcurl_la-socks_sspi.Plo \
	./$(DEPDIR)/libcurl_la-speedcheck.Plo \
	./$(DEPDIR)/libcurl_la-splay.Plo \
	./$(DEPDIR)/libcurl_la-strcase.Plo \
	./$(DEPDIR)/libcurl_la-strdup.Plo \







>







441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
	./$(DEPDIR)/libcurl_la-select.Plo \
	./$(DEPDIR)/libcurl_la-sendf.Plo \
	./$(DEPDIR)/libcurl_la-setopt.Plo \
	./$(DEPDIR)/libcurl_la-sha256.Plo \
	./$(DEPDIR)/libcurl_la-share.Plo \
	./$(DEPDIR)/libcurl_la-slist.Plo \
	./$(DEPDIR)/libcurl_la-smb.Plo ./$(DEPDIR)/libcurl_la-smtp.Plo \
	./$(DEPDIR)/libcurl_la-socketpair.Plo \
	./$(DEPDIR)/libcurl_la-socks.Plo \
	./$(DEPDIR)/libcurl_la-socks_gssapi.Plo \
	./$(DEPDIR)/libcurl_la-socks_sspi.Plo \
	./$(DEPDIR)/libcurl_la-speedcheck.Plo \
	./$(DEPDIR)/libcurl_la-splay.Plo \
	./$(DEPDIR)/libcurl_la-strcase.Plo \
	./$(DEPDIR)/libcurl_la-strdup.Plo \
550
551
552
553
554
555
556

557
558
559
560
561
562
563
	./$(DEPDIR)/libcurlu_la-sendf.Plo \
	./$(DEPDIR)/libcurlu_la-setopt.Plo \
	./$(DEPDIR)/libcurlu_la-sha256.Plo \
	./$(DEPDIR)/libcurlu_la-share.Plo \
	./$(DEPDIR)/libcurlu_la-slist.Plo \
	./$(DEPDIR)/libcurlu_la-smb.Plo \
	./$(DEPDIR)/libcurlu_la-smtp.Plo \

	./$(DEPDIR)/libcurlu_la-socks.Plo \
	./$(DEPDIR)/libcurlu_la-socks_gssapi.Plo \
	./$(DEPDIR)/libcurlu_la-socks_sspi.Plo \
	./$(DEPDIR)/libcurlu_la-speedcheck.Plo \
	./$(DEPDIR)/libcurlu_la-splay.Plo \
	./$(DEPDIR)/libcurlu_la-strcase.Plo \
	./$(DEPDIR)/libcurlu_la-strdup.Plo \







>







552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
	./$(DEPDIR)/libcurlu_la-sendf.Plo \
	./$(DEPDIR)/libcurlu_la-setopt.Plo \
	./$(DEPDIR)/libcurlu_la-sha256.Plo \
	./$(DEPDIR)/libcurlu_la-share.Plo \
	./$(DEPDIR)/libcurlu_la-slist.Plo \
	./$(DEPDIR)/libcurlu_la-smb.Plo \
	./$(DEPDIR)/libcurlu_la-smtp.Plo \
	./$(DEPDIR)/libcurlu_la-socketpair.Plo \
	./$(DEPDIR)/libcurlu_la-socks.Plo \
	./$(DEPDIR)/libcurlu_la-socks_gssapi.Plo \
	./$(DEPDIR)/libcurlu_la-socks_sspi.Plo \
	./$(DEPDIR)/libcurlu_la-speedcheck.Plo \
	./$(DEPDIR)/libcurlu_la-splay.Plo \
	./$(DEPDIR)/libcurlu_la-strcase.Plo \
	./$(DEPDIR)/libcurlu_la-strdup.Plo \
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
  pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c        \
  openldap.c curl_gethostname.c gopher.c idn_win32.c                    \
  http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c      \
  http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c        \
  curl_multibyte.c hostcheck.c conncache.c dotdot.c                     \
  x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c      \
  mime.c sha256.c setopt.c curl_path.c curl_ctype.c curl_range.c psl.c  \
  doh.c urlapi.c curl_get_line.c altsvc.c

LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
  formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h         \
  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
  strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h          \
  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
  socks.h ssh.h curl_base64.h curl_addrinfo.h curl_sspi.h      \
  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
  http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
  curl_sasl.h curl_multibyte.h hostcheck.h conncache.h                  \
  curl_setup_once.h multihandle.h setup-vms.h dotdot.h                  \
  x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h           \
  curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h     \
  curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h        \
  curl_get_line.h altsvc.h quic.h

LIB_RCFILES = libcurl.rc
CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
  $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)

HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
  $(LIB_VQUIC_HFILES)







|




















|







999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
  pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c        \
  openldap.c curl_gethostname.c gopher.c idn_win32.c                    \
  http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c      \
  http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c        \
  curl_multibyte.c hostcheck.c conncache.c dotdot.c                     \
  x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c      \
  mime.c sha256.c setopt.c curl_path.c curl_ctype.c curl_range.c psl.c  \
  doh.c urlapi.c curl_get_line.c altsvc.c socketpair.c

LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
  formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h         \
  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
  strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h          \
  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
  socks.h ssh.h curl_base64.h curl_addrinfo.h curl_sspi.h      \
  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
  http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
  curl_sasl.h curl_multibyte.h hostcheck.h conncache.h                  \
  curl_setup_once.h multihandle.h setup-vms.h dotdot.h                  \
  x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h           \
  curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h     \
  curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h        \
  curl_get_line.h altsvc.h quic.h socketpair.h

LIB_RCFILES = libcurl.rc
CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
  $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)

HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
  $(LIB_VQUIC_HFILES)
1386
1387
1388
1389
1390
1391
1392

1393
1394
1395
1396
1397
1398
1399
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-sendf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-setopt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-sha256.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-share.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-slist.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-smb.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-smtp.Plo@am__quote@ # am--include-marker

@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-socks.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-socks_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-socks_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-speedcheck.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-splay.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-strcase.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-strdup.Plo@am__quote@ # am--include-marker







>







1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-sendf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-setopt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-sha256.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-share.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-slist.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-smb.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-smtp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-socketpair.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-socks.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-socks_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-socks_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-speedcheck.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-splay.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-strcase.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-strdup.Plo@am__quote@ # am--include-marker
1496
1497
1498
1499
1500
1501
1502

1503
1504
1505
1506
1507
1508
1509
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-sendf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-setopt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-sha256.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-share.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-slist.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-smb.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-smtp.Plo@am__quote@ # am--include-marker

@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-socks.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-socks_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-socks_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-speedcheck.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-splay.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-strcase.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-strdup.Plo@am__quote@ # am--include-marker







>







1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-sendf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-setopt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-sha256.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-share.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-slist.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-smb.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-smtp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-socketpair.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-socks.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-socks_gssapi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-socks_sspi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-speedcheck.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-splay.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-strcase.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-strdup.Plo@am__quote@ # am--include-marker
2376
2377
2378
2379
2380
2381
2382







2383
2384
2385
2386
2387
2388
2389
libcurl_la-altsvc.lo: altsvc.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-altsvc.lo -MD -MP -MF $(DEPDIR)/libcurl_la-altsvc.Tpo -c -o libcurl_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-altsvc.Tpo $(DEPDIR)/libcurl_la-altsvc.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='altsvc.c' object='libcurl_la-altsvc.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c








vauth/libcurl_la-vauth.lo: vauth/vauth.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vauth/libcurl_la-vauth.lo -MD -MP -MF vauth/$(DEPDIR)/libcurl_la-vauth.Tpo -c -o vauth/libcurl_la-vauth.lo `test -f 'vauth/vauth.c' || echo '$(srcdir)/'`vauth/vauth.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurl_la-vauth.Tpo vauth/$(DEPDIR)/libcurl_la-vauth.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/vauth.c' object='vauth/libcurl_la-vauth.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurl_la-vauth.lo `test -f 'vauth/vauth.c' || echo '$(srcdir)/'`vauth/vauth.c








>
>
>
>
>
>
>







2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
libcurl_la-altsvc.lo: altsvc.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-altsvc.lo -MD -MP -MF $(DEPDIR)/libcurl_la-altsvc.Tpo -c -o libcurl_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-altsvc.Tpo $(DEPDIR)/libcurl_la-altsvc.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='altsvc.c' object='libcurl_la-altsvc.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c

libcurl_la-socketpair.lo: socketpair.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT libcurl_la-socketpair.lo -MD -MP -MF $(DEPDIR)/libcurl_la-socketpair.Tpo -c -o libcurl_la-socketpair.lo `test -f 'socketpair.c' || echo '$(srcdir)/'`socketpair.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-socketpair.Tpo $(DEPDIR)/libcurl_la-socketpair.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='socketpair.c' object='libcurl_la-socketpair.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o libcurl_la-socketpair.lo `test -f 'socketpair.c' || echo '$(srcdir)/'`socketpair.c

vauth/libcurl_la-vauth.lo: vauth/vauth.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -MT vauth/libcurl_la-vauth.lo -MD -MP -MF vauth/$(DEPDIR)/libcurl_la-vauth.Tpo -c -o vauth/libcurl_la-vauth.lo `test -f 'vauth/vauth.c' || echo '$(srcdir)/'`vauth/vauth.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurl_la-vauth.Tpo vauth/$(DEPDIR)/libcurl_la-vauth.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/vauth.c' object='vauth/libcurl_la-vauth.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurl_la_CPPFLAGS) $(CPPFLAGS) $(libcurl_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurl_la-vauth.lo `test -f 'vauth/vauth.c' || echo '$(srcdir)/'`vauth/vauth.c

3349
3350
3351
3352
3353
3354
3355







3356
3357
3358
3359
3360
3361
3362
libcurlu_la-altsvc.lo: altsvc.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-altsvc.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-altsvc.Tpo -c -o libcurlu_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-altsvc.Tpo $(DEPDIR)/libcurlu_la-altsvc.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='altsvc.c' object='libcurlu_la-altsvc.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c








vauth/libcurlu_la-vauth.lo: vauth/vauth.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vauth/libcurlu_la-vauth.lo -MD -MP -MF vauth/$(DEPDIR)/libcurlu_la-vauth.Tpo -c -o vauth/libcurlu_la-vauth.lo `test -f 'vauth/vauth.c' || echo '$(srcdir)/'`vauth/vauth.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurlu_la-vauth.Tpo vauth/$(DEPDIR)/libcurlu_la-vauth.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/vauth.c' object='vauth/libcurlu_la-vauth.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurlu_la-vauth.lo `test -f 'vauth/vauth.c' || echo '$(srcdir)/'`vauth/vauth.c








>
>
>
>
>
>
>







3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
libcurlu_la-altsvc.lo: altsvc.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-altsvc.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-altsvc.Tpo -c -o libcurlu_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-altsvc.Tpo $(DEPDIR)/libcurlu_la-altsvc.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='altsvc.c' object='libcurlu_la-altsvc.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-altsvc.lo `test -f 'altsvc.c' || echo '$(srcdir)/'`altsvc.c

libcurlu_la-socketpair.lo: socketpair.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT libcurlu_la-socketpair.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-socketpair.Tpo -c -o libcurlu_la-socketpair.lo `test -f 'socketpair.c' || echo '$(srcdir)/'`socketpair.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-socketpair.Tpo $(DEPDIR)/libcurlu_la-socketpair.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='socketpair.c' object='libcurlu_la-socketpair.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o libcurlu_la-socketpair.lo `test -f 'socketpair.c' || echo '$(srcdir)/'`socketpair.c

vauth/libcurlu_la-vauth.lo: vauth/vauth.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -MT vauth/libcurlu_la-vauth.lo -MD -MP -MF vauth/$(DEPDIR)/libcurlu_la-vauth.Tpo -c -o vauth/libcurlu_la-vauth.lo `test -f 'vauth/vauth.c' || echo '$(srcdir)/'`vauth/vauth.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) vauth/$(DEPDIR)/libcurlu_la-vauth.Tpo vauth/$(DEPDIR)/libcurlu_la-vauth.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vauth/vauth.c' object='vauth/libcurlu_la-vauth.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurlu_la_CPPFLAGS) $(CPPFLAGS) $(libcurlu_la_CFLAGS) $(CFLAGS) -c -o vauth/libcurlu_la-vauth.lo `test -f 'vauth/vauth.c' || echo '$(srcdir)/'`vauth/vauth.c

3788
3789
3790
3791
3792
3793
3794

3795
3796
3797
3798
3799
3800
3801
	-rm -f ./$(DEPDIR)/libcurl_la-sendf.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-setopt.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-sha256.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-share.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-slist.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-smb.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-smtp.Plo

	-rm -f ./$(DEPDIR)/libcurl_la-socks.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-socks_gssapi.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-socks_sspi.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-speedcheck.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-splay.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-strcase.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-strdup.Plo







>







3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
	-rm -f ./$(DEPDIR)/libcurl_la-sendf.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-setopt.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-sha256.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-share.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-slist.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-smb.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-smtp.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-socketpair.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-socks.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-socks_gssapi.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-socks_sspi.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-speedcheck.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-splay.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-strcase.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-strdup.Plo
3898
3899
3900
3901
3902
3903
3904

3905
3906
3907
3908
3909
3910
3911
	-rm -f ./$(DEPDIR)/libcurlu_la-sendf.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-setopt.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-sha256.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-share.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-slist.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-smb.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-smtp.Plo

	-rm -f ./$(DEPDIR)/libcurlu_la-socks.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-socks_gssapi.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-socks_sspi.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-speedcheck.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-splay.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-strcase.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-strdup.Plo







>







3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
	-rm -f ./$(DEPDIR)/libcurlu_la-sendf.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-setopt.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-sha256.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-share.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-slist.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-smb.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-smtp.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-socketpair.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-socks.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-socks_gssapi.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-socks_sspi.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-speedcheck.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-splay.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-strcase.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-strdup.Plo
4111
4112
4113
4114
4115
4116
4117

4118
4119
4120
4121
4122
4123
4124
	-rm -f ./$(DEPDIR)/libcurl_la-sendf.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-setopt.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-sha256.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-share.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-slist.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-smb.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-smtp.Plo

	-rm -f ./$(DEPDIR)/libcurl_la-socks.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-socks_gssapi.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-socks_sspi.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-speedcheck.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-splay.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-strcase.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-strdup.Plo







>







4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
	-rm -f ./$(DEPDIR)/libcurl_la-sendf.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-setopt.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-sha256.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-share.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-slist.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-smb.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-smtp.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-socketpair.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-socks.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-socks_gssapi.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-socks_sspi.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-speedcheck.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-splay.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-strcase.Plo
	-rm -f ./$(DEPDIR)/libcurl_la-strdup.Plo
4221
4222
4223
4224
4225
4226
4227

4228
4229
4230
4231
4232
4233
4234
	-rm -f ./$(DEPDIR)/libcurlu_la-sendf.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-setopt.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-sha256.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-share.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-slist.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-smb.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-smtp.Plo

	-rm -f ./$(DEPDIR)/libcurlu_la-socks.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-socks_gssapi.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-socks_sspi.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-speedcheck.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-splay.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-strcase.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-strdup.Plo







>







4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
	-rm -f ./$(DEPDIR)/libcurlu_la-sendf.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-setopt.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-sha256.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-share.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-slist.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-smb.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-smtp.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-socketpair.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-socks.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-socks_gssapi.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-socks_sspi.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-speedcheck.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-splay.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-strcase.Plo
	-rm -f ./$(DEPDIR)/libcurlu_la-strdup.Plo
Changes to jni/curl/lib/Makefile.inc.
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c        \
  openldap.c curl_gethostname.c gopher.c idn_win32.c                    \
  http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c      \
  http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c        \
  curl_multibyte.c hostcheck.c conncache.c dotdot.c                     \
  x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c      \
  mime.c sha256.c setopt.c curl_path.c curl_ctype.c curl_range.c psl.c  \
  doh.c urlapi.c curl_get_line.c altsvc.c

LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
  formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h         \
  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
  strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h          \
  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
  socks.h ssh.h curl_base64.h curl_addrinfo.h curl_sspi.h      \
  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
  http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
  curl_sasl.h curl_multibyte.h hostcheck.h conncache.h                  \
  curl_setup_once.h multihandle.h setup-vms.h dotdot.h                  \
  x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h           \
  curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h     \
  curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h        \
  curl_get_line.h altsvc.h quic.h

LIB_RCFILES = libcurl.rc

CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
  $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)
HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
  $(LIB_VQUIC_HFILES)







|




















|







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c        \
  openldap.c curl_gethostname.c gopher.c idn_win32.c                    \
  http_proxy.c non-ascii.c asyn-ares.c asyn-thread.c curl_gssapi.c      \
  http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c        \
  curl_multibyte.c hostcheck.c conncache.c dotdot.c                     \
  x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c      \
  mime.c sha256.c setopt.c curl_path.c curl_ctype.c curl_range.c psl.c  \
  doh.c urlapi.c curl_get_line.c altsvc.c socketpair.c

LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
  formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h         \
  speedcheck.h urldata.h curl_ldap.h escape.h telnet.h getinfo.h        \
  strcase.h curl_sec.h memdebug.h http_chunks.h curl_fnmatch.h          \
  wildcard.h fileinfo.h ftplistparser.h strtok.h connect.h llist.h      \
  hash.h content_encoding.h share.h curl_md4.h curl_md5.h http_digest.h \
  http_negotiate.h inet_pton.h amigaos.h strtoofft.h strerror.h         \
  inet_ntop.h curlx.h curl_memory.h curl_setup.h transfer.h select.h    \
  easyif.h multiif.h parsedate.h tftp.h sockaddr.h splay.h strdup.h     \
  socks.h ssh.h curl_base64.h curl_addrinfo.h curl_sspi.h      \
  slist.h nonblock.h curl_memrchr.h imap.h pop3.h smtp.h pingpong.h     \
  rtsp.h curl_threads.h warnless.h curl_hmac.h curl_rtmp.h              \
  curl_gethostname.h gopher.h http_proxy.h non-ascii.h asyn.h           \
  http_ntlm.h curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h             \
  curl_sasl.h curl_multibyte.h hostcheck.h conncache.h                  \
  curl_setup_once.h multihandle.h setup-vms.h dotdot.h                  \
  x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h           \
  curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h     \
  curl_path.h curl_ctype.h curl_range.h psl.h doh.h urlapi-int.h        \
  curl_get_line.h altsvc.h quic.h socketpair.h

LIB_RCFILES = libcurl.rc

CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
  $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES)
HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
  $(LIB_VQUIC_HFILES)
Changes to jni/curl/lib/Makefile.netware.
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
	@echo $(DL)#define HAVE_OPENSSL_X509_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_SSL_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_RSA_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_PEM_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_ERR_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_CRYPTO_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_ENGINE_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_LIBSSL 1$(DL) >> $@
	@echo $(DL)#define HAVE_LIBCRYPTO 1$(DL) >> $@
	@echo $(DL)#define OPENSSL_NO_KRB5 1$(DL) >> $@
ifdef WITH_SRP
	@echo $(DL)#define USE_TLS_SRP 1$(DL) >> $@
endif
ifdef WITH_SPNEGO
	@echo $(DL)#define HAVE_SPNEGO 1$(DL) >> $@
endif







<
<







636
637
638
639
640
641
642


643
644
645
646
647
648
649
	@echo $(DL)#define HAVE_OPENSSL_X509_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_SSL_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_RSA_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_PEM_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_ERR_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_CRYPTO_H 1$(DL) >> $@
	@echo $(DL)#define HAVE_OPENSSL_ENGINE_H 1$(DL) >> $@


	@echo $(DL)#define OPENSSL_NO_KRB5 1$(DL) >> $@
ifdef WITH_SRP
	@echo $(DL)#define USE_TLS_SRP 1$(DL) >> $@
endif
ifdef WITH_SPNEGO
	@echo $(DL)#define HAVE_SPNEGO 1$(DL) >> $@
endif
Changes to jni/curl/lib/altsvc.c.
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

static enum alpnid alpn2alpnid(char *name)
{
  if(strcasecompare(name, "h1"))
    return ALPN_h1;
  if(strcasecompare(name, "h2"))
    return ALPN_h2;
#if (defined(USE_QUICHE) || defined(USE_NGHTTP2)) && !defined(UNITTESTS)
  if(strcasecompare(name, "h3-22"))
    return ALPN_h3;
#else
  if(strcasecompare(name, "h3"))
    return ALPN_h3;
#endif
  return ALPN_none; /* unknown, probably rubbish input */
}

/* Given the ALPN ID, return the name */
const char *Curl_alpnid2str(enum alpnid id)
{
  switch(id) {
  case ALPN_h1:
    return "h1";
  case ALPN_h2:
    return "h2";
  case ALPN_h3:
#if (defined(USE_QUICHE) || defined(USE_NGHTTP2)) && !defined(UNITTESTS)
    return "h3-22";
#else
    return "h3";
#endif
  default:
    return ""; /* bad */
  }
}







|
|

















|
|







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

static enum alpnid alpn2alpnid(char *name)
{
  if(strcasecompare(name, "h1"))
    return ALPN_h1;
  if(strcasecompare(name, "h2"))
    return ALPN_h2;
#if (defined(USE_QUICHE) || defined(USE_NGTCP2)) && !defined(UNITTESTS)
  if(strcasecompare(name, "h3-23"))
    return ALPN_h3;
#else
  if(strcasecompare(name, "h3"))
    return ALPN_h3;
#endif
  return ALPN_none; /* unknown, probably rubbish input */
}

/* Given the ALPN ID, return the name */
const char *Curl_alpnid2str(enum alpnid id)
{
  switch(id) {
  case ALPN_h1:
    return "h1";
  case ALPN_h2:
    return "h2";
  case ALPN_h3:
#if (defined(USE_QUICHE) || defined(USE_NGTCP2)) && !defined(UNITTESTS)
    return "h3-23";
#else
    return "h3";
#endif
  default:
    return ""; /* bad */
  }
}
438
439
440
441
442
443
444

445
446
447
448
449
450
451
452
453







454
455
456
457
458
459


460
461
462
463
464
465
466
  semip = p;
  do {
    semip = strchr(semip, ';');
    if(semip) {
      char option[32];
      unsigned long num;
      char *end_ptr;

      semip++; /* pass the semicolon */
      result = getalnum(&semip, option, sizeof(option));
      if(result)
        break;
      while(*semip && ISBLANK(*semip))
        semip++;
      if(*semip != '=')
        continue;
      semip++;







      num = strtoul(semip, &end_ptr, 10);
      if(num < ULONG_MAX) {
        if(strcasecompare("ma", option))
          maxage = num;
        else if(strcasecompare("persist", option) && (num == 1))
          persist = TRUE;


      }
      semip = end_ptr;
    }
  } while(semip);

  do {
    if(*p == '=') {







>









>
>
>
>
>
>
>

|




>
>







438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
  semip = p;
  do {
    semip = strchr(semip, ';');
    if(semip) {
      char option[32];
      unsigned long num;
      char *end_ptr;
      bool quoted = FALSE;
      semip++; /* pass the semicolon */
      result = getalnum(&semip, option, sizeof(option));
      if(result)
        break;
      while(*semip && ISBLANK(*semip))
        semip++;
      if(*semip != '=')
        continue;
      semip++;
      while(*semip && ISBLANK(*semip))
        semip++;
      if(*semip == '\"') {
        /* quoted value */
        semip++;
        quoted = TRUE;
      }
      num = strtoul(semip, &end_ptr, 10);
      if((end_ptr != semip) && num && (num < ULONG_MAX)) {
        if(strcasecompare("ma", option))
          maxage = num;
        else if(strcasecompare("persist", option) && (num == 1))
          persist = TRUE;
        if(quoted && (*end_ptr == '\"'))
          end_ptr++;
      }
      semip = end_ptr;
    }
  } while(semip);

  do {
    if(*p == '=') {
Changes to jni/curl/lib/asyn-thread.c.
17
18
19
20
21
22
23

24
25
26
27
28
29
30
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "curl_setup.h"


/***********************************************************************
 * Only for threaded name resolves builds
 **********************************************************************/
#ifdef CURLRES_THREADED

#ifdef HAVE_NETINET_IN_H







>







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "curl_setup.h"
#include "socketpair.h"

/***********************************************************************
 * Only for threaded name resolves builds
 **********************************************************************/
#ifdef CURLRES_THREADED

#ifdef HAVE_NETINET_IN_H
70
71
72
73
74
75
76

77
78
79
80
81
82
83
#include "strerror.h"
#include "url.h"
#include "multiif.h"
#include "inet_pton.h"
#include "inet_ntop.h"
#include "curl_threads.h"
#include "connect.h"

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

struct resdata {
  struct curltime start;







>







71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include "strerror.h"
#include "url.h"
#include "multiif.h"
#include "inet_pton.h"
#include "inet_ntop.h"
#include "curl_threads.h"
#include "connect.h"
#include "socketpair.h"
/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

struct resdata {
  struct curltime start;
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
struct thread_sync_data {
  curl_mutex_t * mtx;
  int done;

  char *hostname;        /* hostname to resolve, Curl_async.hostname
                            duplicate */
  int port;
#ifdef HAVE_SOCKETPAIR
  struct connectdata *conn;
  curl_socket_t sock_pair[2]; /* socket pair */
#endif
  int sock_error;
  Curl_addrinfo *res;
#ifdef HAVE_GETADDRINFO
  struct addrinfo hints;







|







161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
struct thread_sync_data {
  curl_mutex_t * mtx;
  int done;

  char *hostname;        /* hostname to resolve, Curl_async.hostname
                            duplicate */
  int port;
#ifdef USE_SOCKETPAIR
  struct connectdata *conn;
  curl_socket_t sock_pair[2]; /* socket pair */
#endif
  int sock_error;
  Curl_addrinfo *res;
#ifdef HAVE_GETADDRINFO
  struct addrinfo hints;
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
  }

  free(tsd->hostname);

  if(tsd->res)
    Curl_freeaddrinfo(tsd->res);

#ifdef HAVE_SOCKETPAIR
  /*
   * close one end of the socket pair (may be done in resolver thread);
   * the other end (for reading) is always closed in the parent thread.
   */
  if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
    sclose(tsd->sock_pair[1]);
  }







|







199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
  }

  free(tsd->hostname);

  if(tsd->res)
    Curl_freeaddrinfo(tsd->res);

#ifdef USE_SOCKETPAIR
  /*
   * close one end of the socket pair (may be done in resolver thread);
   * the other end (for reading) is always closed in the parent thread.
   */
  if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
    sclose(tsd->sock_pair[1]);
  }
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255

  tsd->mtx = malloc(sizeof(curl_mutex_t));
  if(tsd->mtx == NULL)
    goto err_exit;

  Curl_mutex_init(tsd->mtx);

#ifdef HAVE_SOCKETPAIR
  /* create socket pair */
  if(socketpair(AF_LOCAL, SOCK_STREAM, 0, &tsd->sock_pair[0]) < 0) {
    tsd->sock_pair[0] = CURL_SOCKET_BAD;
    tsd->sock_pair[1] = CURL_SOCKET_BAD;
    goto err_exit;
  }
#endif
  tsd->sock_error = CURL_ASYNC_SUCCESS;








|
|
|







241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257

  tsd->mtx = malloc(sizeof(curl_mutex_t));
  if(tsd->mtx == NULL)
    goto err_exit;

  Curl_mutex_init(tsd->mtx);

#ifdef USE_SOCKETPAIR
  /* create socket pair, avoid AF_LOCAL since it doesn't build on Solaris */
  if(Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, &tsd->sock_pair[0]) < 0) {
    tsd->sock_pair[0] = CURL_SOCKET_BAD;
    tsd->sock_pair[1] = CURL_SOCKET_BAD;
    goto err_exit;
  }
#endif
  tsd->sock_error = CURL_ASYNC_SUCCESS;

293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
 */
static unsigned int CURL_STDCALL getaddrinfo_thread(void *arg)
{
  struct thread_sync_data *tsd = (struct thread_sync_data*)arg;
  struct thread_data *td = tsd->td;
  char service[12];
  int rc;
#ifdef HAVE_SOCKETPAIR
  char buf[1];
#endif

  msnprintf(service, sizeof(service), "%d", tsd->port);

  rc = Curl_getaddrinfo_ex(tsd->hostname, service, &tsd->hints, &tsd->res);








|







295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
 */
static unsigned int CURL_STDCALL getaddrinfo_thread(void *arg)
{
  struct thread_sync_data *tsd = (struct thread_sync_data*)arg;
  struct thread_data *td = tsd->td;
  char service[12];
  int rc;
#ifdef USE_SOCKETPAIR
  char buf[1];
#endif

  msnprintf(service, sizeof(service), "%d", tsd->port);

  rc = Curl_getaddrinfo_ex(tsd->hostname, service, &tsd->hints, &tsd->res);

318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
  if(tsd->done) {
    /* too late, gotta clean up the mess */
    Curl_mutex_release(tsd->mtx);
    destroy_thread_sync_data(tsd);
    free(td);
  }
  else {
#ifdef HAVE_SOCKETPAIR
    if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
      /* DNS has been resolved, signal client task */
      buf[0] = 1;
      if(write(tsd->sock_pair[1],  buf, sizeof(buf)) < 0) {
        /* update sock_erro to errno */
        tsd->sock_error = SOCKERRNO;
      }
    }
#endif
    tsd->done = 1;
    Curl_mutex_release(tsd->mtx);







|



|







320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
  if(tsd->done) {
    /* too late, gotta clean up the mess */
    Curl_mutex_release(tsd->mtx);
    destroy_thread_sync_data(tsd);
    free(td);
  }
  else {
#ifdef USE_SOCKETPAIR
    if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
      /* DNS has been resolved, signal client task */
      buf[0] = 1;
      if(swrite(tsd->sock_pair[1],  buf, sizeof(buf)) < 0) {
        /* update sock_erro to errno */
        tsd->sock_error = SOCKERRNO;
      }
    }
#endif
    tsd->done = 1;
    Curl_mutex_release(tsd->mtx);
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
 * destroy_async_data() cleans up async resolver data and thread handle.
 */
static void destroy_async_data(struct Curl_async *async)
{
  if(async->os_specific) {
    struct thread_data *td = (struct thread_data*) async->os_specific;
    int done;
#ifdef HAVE_SOCKETPAIR
    curl_socket_t sock_rd = td->tsd.sock_pair[0];
    struct connectdata *conn = td->tsd.conn;
#endif

    /*
     * if the thread is still blocking in the resolve syscall, detach it and
     * let the thread do the cleanup...







|







380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
 * destroy_async_data() cleans up async resolver data and thread handle.
 */
static void destroy_async_data(struct Curl_async *async)
{
  if(async->os_specific) {
    struct thread_data *td = (struct thread_data*) async->os_specific;
    int done;
#ifdef USE_SOCKETPAIR
    curl_socket_t sock_rd = td->tsd.sock_pair[0];
    struct connectdata *conn = td->tsd.conn;
#endif

    /*
     * if the thread is still blocking in the resolve syscall, detach it and
     * let the thread do the cleanup...
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
      if(td->thread_hnd != curl_thread_t_null)
        Curl_thread_join(&td->thread_hnd);

      destroy_thread_sync_data(&td->tsd);

      free(async->os_specific);
    }
#ifdef HAVE_SOCKETPAIR
    /*
     * ensure CURLMOPT_SOCKETFUNCTION fires CURL_POLL_REMOVE
     * before the FD is invalidated to avoid EBADF on EPOLL_CTL_DEL
     */
    if(conn)
      Curl_multi_closed(conn->data, sock_rd);
    sclose(sock_rd);







|







405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
      if(td->thread_hnd != curl_thread_t_null)
        Curl_thread_join(&td->thread_hnd);

      destroy_thread_sync_data(&td->tsd);

      free(async->os_specific);
    }
#ifdef USE_SOCKETPAIR
    /*
     * ensure CURLMOPT_SOCKETFUNCTION fires CURL_POLL_REMOVE
     * before the FD is invalidated to avoid EBADF on EPOLL_CTL_DEL
     */
    if(conn)
      Curl_multi_closed(conn->data, sock_rd);
    sclose(sock_rd);
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
                          curl_socket_t *socks)
{
  int ret_val = 0;
  time_t milli;
  timediff_t ms;
  struct Curl_easy *data = conn->data;
  struct resdata *reslv = (struct resdata *)data->state.resolver;
#ifdef HAVE_SOCKETPAIR
  struct thread_data *td = (struct thread_data*)conn->async.os_specific;
#else
  (void)socks;
#endif

#ifdef HAVE_SOCKETPAIR
  if(td) {
    /* return read fd to client for polling the DNS resolution status */
    socks[0] = td->tsd.sock_pair[0];
    DEBUGASSERT(td->tsd.conn == conn || !td->tsd.conn);
    td->tsd.conn = conn;
    ret_val = GETSOCK_READSOCK(0);
  }
  else {
#endif
    ms = Curl_timediff(Curl_now(), reslv->start);
    if(ms < 3)
      milli = 0;
    else if(ms <= 50)
      milli = (time_t)ms/3;
    else if(ms <= 250)
      milli = 50;
    else
      milli = 200;
    Curl_expire(data, milli, EXPIRE_ASYNC_NAME);
#ifdef HAVE_SOCKETPAIR
  }
#endif


  return ret_val;
}








|





|



















|







645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
                          curl_socket_t *socks)
{
  int ret_val = 0;
  time_t milli;
  timediff_t ms;
  struct Curl_easy *data = conn->data;
  struct resdata *reslv = (struct resdata *)data->state.resolver;
#ifdef USE_SOCKETPAIR
  struct thread_data *td = (struct thread_data*)conn->async.os_specific;
#else
  (void)socks;
#endif

#ifdef USE_SOCKETPAIR
  if(td) {
    /* return read fd to client for polling the DNS resolution status */
    socks[0] = td->tsd.sock_pair[0];
    DEBUGASSERT(td->tsd.conn == conn || !td->tsd.conn);
    td->tsd.conn = conn;
    ret_val = GETSOCK_READSOCK(0);
  }
  else {
#endif
    ms = Curl_timediff(Curl_now(), reslv->start);
    if(ms < 3)
      milli = 0;
    else if(ms <= 50)
      milli = (time_t)ms/3;
    else if(ms <= 250)
      milli = 50;
    else
      milli = 200;
    Curl_expire(data, milli, EXPIRE_ASYNC_NAME);
#ifdef USE_SOCKETPAIR
  }
#endif


  return ret_val;
}

Changes to jni/curl/lib/checksrc.pl.
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
        my $pref = (' ' x $col);
        print "${pref}^\n";
    }
}

$file = shift @ARGV;

while(1) {

    if($file =~ /-D(.*)/) {
        $dir = $1;
        $file = shift @ARGV;
        next;
    }
    elsif($file =~ /-W(.*)/) {







|







172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
        my $pref = (' ' x $col);
        print "${pref}^\n";
    }
}

$file = shift @ARGV;

while(defined $file) {

    if($file =~ /-D(.*)/) {
        $dir = $1;
        $file = shift @ARGV;
        next;
    }
    elsif($file =~ /-W(.*)/) {
Changes to jni/curl/lib/config-amigaos.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_AMIGAOS_H
#define HEADER_CURL_CONFIG_AMIGAOS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_AMIGAOS_H
#define HEADER_CURL_CONFIG_AMIGAOS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#define HAVE_CLOSESOCKET_CAMEL 1
#define HAVE_ERRNO_H 1
#define HAVE_GETHOSTBYADDR 1
#define HAVE_INET_ADDR 1
#define HAVE_INTTYPES_H 1
#define HAVE_IOCTLSOCKET_CAMEL 1
#define HAVE_IOCTLSOCKET_CAMEL_FIONBIO 1
#define HAVE_LIBCRYPTO 1
#define HAVE_LIBSSL 1
#define HAVE_LIBZ 1
#define HAVE_LONGLONG 1
#define HAVE_MALLOC_H 1
#define HAVE_MEMORY_H 1
#define HAVE_NETDB_H 1
#define HAVE_NETINET_IN_H 1
#define HAVE_NET_IF_H 1







<
<







32
33
34
35
36
37
38


39
40
41
42
43
44
45
#define HAVE_CLOSESOCKET_CAMEL 1
#define HAVE_ERRNO_H 1
#define HAVE_GETHOSTBYADDR 1
#define HAVE_INET_ADDR 1
#define HAVE_INTTYPES_H 1
#define HAVE_IOCTLSOCKET_CAMEL 1
#define HAVE_IOCTLSOCKET_CAMEL_FIONBIO 1


#define HAVE_LIBZ 1
#define HAVE_LONGLONG 1
#define HAVE_MALLOC_H 1
#define HAVE_MEMORY_H 1
#define HAVE_NETDB_H 1
#define HAVE_NETINET_IN_H 1
#define HAVE_NET_IF_H 1
Changes to jni/curl/lib/config-os400.h.
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187

/* Define if you have the `krb_get_our_ip_for_realm' function. */
#undef HAVE_KRB_GET_OUR_IP_FOR_REALM

/* Define if you have the <krb.h> header file. */
#undef HAVE_KRB_H

/* Define if you have the `crypto' library (-lcrypto). */
#undef HAVE_LIBCRYPTO

/* Define if you have the `nsl' library (-lnsl). */
#undef HAVE_LIBNSL

/* Define if you have the `resolv' library (-lresolv). */
#undef HAVE_LIBRESOLV

/* Define if you have the `resolve' library (-lresolve). */
#undef HAVE_LIBRESOLVE

/* Define if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET

/* Define if you have the `ssl' library (-lssl). */
#undef HAVE_LIBSSL

/* Define if you have GSS API. */
#define HAVE_GSSAPI

/* Define if you have the GNU gssapi libraries */
#undef HAVE_GSSGNU

/* Define if you have the Heimdal gssapi libraries */







<
<
<












<
<
<







156
157
158
159
160
161
162



163
164
165
166
167
168
169
170
171
172
173
174



175
176
177
178
179
180
181

/* Define if you have the `krb_get_our_ip_for_realm' function. */
#undef HAVE_KRB_GET_OUR_IP_FOR_REALM

/* Define if you have the <krb.h> header file. */
#undef HAVE_KRB_H




/* Define if you have the `nsl' library (-lnsl). */
#undef HAVE_LIBNSL

/* Define if you have the `resolv' library (-lresolv). */
#undef HAVE_LIBRESOLV

/* Define if you have the `resolve' library (-lresolve). */
#undef HAVE_LIBRESOLVE

/* Define if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET




/* Define if you have GSS API. */
#define HAVE_GSSAPI

/* Define if you have the GNU gssapi libraries */
#undef HAVE_GSSGNU

/* Define if you have the Heimdal gssapi libraries */
Changes to jni/curl/lib/config-plan9.h.
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#define HAVE_GMTIME_R 1
#define HAVE_INET_ADDR 1
#define HAVE_INET_NTOP 1
#define HAVE_INET_PTON 1
#define HAVE_INTTYPES_H 1
#define HAVE_IOCTL 1
#define HAVE_LIBGEN_H 1
#define HAVE_LIBSSL 1
#define HAVE_LIBZ 1
#define HAVE_LL 1
#define HAVE_LOCALE_H 1
#define HAVE_LOCALTIME_R 1
#define HAVE_LONGLONG 1
#define HAVE_NETDB_H 1
#define HAVE_NETINET_IN_H 1







<







122
123
124
125
126
127
128

129
130
131
132
133
134
135
#define HAVE_GMTIME_R 1
#define HAVE_INET_ADDR 1
#define HAVE_INET_NTOP 1
#define HAVE_INET_PTON 1
#define HAVE_INTTYPES_H 1
#define HAVE_IOCTL 1
#define HAVE_LIBGEN_H 1

#define HAVE_LIBZ 1
#define HAVE_LL 1
#define HAVE_LOCALE_H 1
#define HAVE_LOCALTIME_R 1
#define HAVE_LONGLONG 1
#define HAVE_NETDB_H 1
#define HAVE_NETINET_IN_H 1
Changes to jni/curl/lib/config-riscos.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_RISCOS_H
#define HEADER_CURL_CONFIG_RISCOS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_RISCOS_H
#define HEADER_CURL_CONFIG_RISCOS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191

/* Define if you have the `krb_get_our_ip_for_realm' function. */
#undef HAVE_KRB_GET_OUR_IP_FOR_REALM

/* Define if you have the <krb.h> header file. */
#undef HAVE_KRB_H

/* Define if you have the `crypto' library (-lcrypto). */
#undef HAVE_LIBCRYPTO

/* Define if you have the `nsl' library (-lnsl). */
#undef HAVE_LIBNSL

/* Define if you have the `resolv' library (-lresolv). */
#undef HAVE_LIBRESOLV

/* Define if you have the `resolve' library (-lresolve). */
#undef HAVE_LIBRESOLVE

/* Define if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET

/* Define if you have the `ssl' library (-lssl). */
#undef HAVE_LIBSSL

/* Define if you have the `ucb' library (-lucb). */
#undef HAVE_LIBUCB

/* Define if you have the `localtime_r' function. */
#undef HAVE_LOCALTIME_R

/* Define if you have the <malloc.h> header file. */







<
<
<












<
<
<







160
161
162
163
164
165
166



167
168
169
170
171
172
173
174
175
176
177
178



179
180
181
182
183
184
185

/* Define if you have the `krb_get_our_ip_for_realm' function. */
#undef HAVE_KRB_GET_OUR_IP_FOR_REALM

/* Define if you have the <krb.h> header file. */
#undef HAVE_KRB_H




/* Define if you have the `nsl' library (-lnsl). */
#undef HAVE_LIBNSL

/* Define if you have the `resolv' library (-lresolv). */
#undef HAVE_LIBRESOLV

/* Define if you have the `resolve' library (-lresolve). */
#undef HAVE_LIBRESOLVE

/* Define if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET




/* Define if you have the `ucb' library (-lucb). */
#undef HAVE_LIBUCB

/* Define if you have the `localtime_r' function. */
#undef HAVE_LOCALTIME_R

/* Define if you have the <malloc.h> header file. */
Changes to jni/curl/lib/config-symbian.h.
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327

/* Define to 1 if you have the `ssh2' library (-lssh2). */
/*#define HAVE_LIBSSH2 1*/

/* Define to 1 if you have the <libssh2.h> header file. */
/*#define HAVE_LIBSSH2_H 1*/

/* Define to 1 if you have the `ssl' library (-lssl). */
/*#define HAVE_LIBSSL 1*/

/* if your compiler supports LL */
#define HAVE_LL 1

/* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1

/* Define to 1 if you have the `localtime_r' function. */







<
<
<







311
312
313
314
315
316
317



318
319
320
321
322
323
324

/* Define to 1 if you have the `ssh2' library (-lssh2). */
/*#define HAVE_LIBSSH2 1*/

/* Define to 1 if you have the <libssh2.h> header file. */
/*#define HAVE_LIBSSH2_H 1*/




/* if your compiler supports LL */
#define HAVE_LL 1

/* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1

/* Define to 1 if you have the `localtime_r' function. */
Changes to jni/curl/lib/config-tpf.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_TPF_H
#define HEADER_CURL_CONFIG_TPF_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_CONFIG_TPF_H
#define HEADER_CURL_CONFIG_TPF_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290

/* Define to 1 if you have the `resolve' library (-lresolve). */
/* #undef HAVE_LIBRESOLVE */

/* Define to 1 if you have the `socket' library (-lsocket). */
/* #undef HAVE_LIBSOCKET */

/* Define to 1 if you have the `ssl' library (-lssl). */
/* #undef HAVE_LIBSSL */
#define HAVE_LIBSSL 1

/* if zlib is available */
/* #undef HAVE_LIBZ */

/* if your compiler supports LL */
#define HAVE_LL 1

/* Define to 1 if you have the <locale.h> header file. */







<
<
<
<







273
274
275
276
277
278
279




280
281
282
283
284
285
286

/* Define to 1 if you have the `resolve' library (-lresolve). */
/* #undef HAVE_LIBRESOLVE */

/* Define to 1 if you have the `socket' library (-lsocket). */
/* #undef HAVE_LIBSOCKET */





/* if zlib is available */
/* #undef HAVE_LIBZ */

/* if your compiler supports LL */
#define HAVE_LL 1

/* Define to 1 if you have the <locale.h> header file. */
Changes to jni/curl/lib/config-vxworks.h.
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387

/* Define to 1 if you have the <libssh2.h> header file. */
/* #undef HAVE_LIBSSH2_H */

/* Define to 1 if you have the `libssh2_version' function. */
/* #undef HAVE_LIBSSH2_VERSION */

/* Define to 1 if you have the `ssl' library (-lssl). */
#define HAVE_LIBSSL 1

/* if zlib is available */
#define HAVE_LIBZ 1

/* if your compiler supports LL */
#define HAVE_LL 1

/* Define to 1 if you have the <locale.h> header file. */







<
<
<







371
372
373
374
375
376
377



378
379
380
381
382
383
384

/* Define to 1 if you have the <libssh2.h> header file. */
/* #undef HAVE_LIBSSH2_H */

/* Define to 1 if you have the `libssh2_version' function. */
/* #undef HAVE_LIBSSH2_VERSION */




/* if zlib is available */
#define HAVE_LIBZ 1

/* if your compiler supports LL */
#define HAVE_LL 1

/* Define to 1 if you have the <locale.h> header file. */
Changes to jni/curl/lib/conncache.c.
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
  /* allocate a new easy handle to use when closing cached connections */
  connc->closure_handle = curl_easy_init();
  if(!connc->closure_handle)
    return 1; /* bad */

  rc = Curl_hash_init(&connc->hash, size, Curl_hash_str,
                      Curl_str_key_compare, free_bundle_hash_entry);
  if(rc) {
    Curl_close(connc->closure_handle);
    connc->closure_handle = NULL;
  }
  else
    connc->closure_handle->state.conn_cache = connc;

  return rc;
}

void Curl_conncache_destroy(struct conncache *connc)







|
<
|
<







139
140
141
142
143
144
145
146

147

148
149
150
151
152
153
154
  /* allocate a new easy handle to use when closing cached connections */
  connc->closure_handle = curl_easy_init();
  if(!connc->closure_handle)
    return 1; /* bad */

  rc = Curl_hash_init(&connc->hash, size, Curl_hash_str,
                      Curl_str_key_compare, free_bundle_hash_entry);
  if(rc)

    Curl_close(&connc->closure_handle);

  else
    connc->closure_handle->state.conn_cache = connc;

  return rc;
}

void Curl_conncache_destroy(struct conncache *connc)
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605

  if(connc->closure_handle) {
    SIGPIPE_VARIABLE(pipe_st);
    sigpipe_ignore(connc->closure_handle, &pipe_st);

    Curl_hostcache_clean(connc->closure_handle,
                         connc->closure_handle->dns.hostcache);
    Curl_close(connc->closure_handle);
    sigpipe_restore(&pipe_st);
  }
}

#if 0
/* Useful for debugging the connection cache */
void Curl_conncache_print(struct conncache *connc)







|







589
590
591
592
593
594
595
596
597
598
599
600
601
602
603

  if(connc->closure_handle) {
    SIGPIPE_VARIABLE(pipe_st);
    sigpipe_ignore(connc->closure_handle, &pipe_st);

    Curl_hostcache_clean(connc->closure_handle,
                         connc->closure_handle->dns.hostcache);
    Curl_close(&connc->closure_handle);
    sigpipe_restore(&pipe_st);
  }
}

#if 0
/* Useful for debugging the connection cache */
void Curl_conncache_print(struct conncache *connc)
Changes to jni/curl/lib/connect.c.
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
        *port = us_port;
        return TRUE;
      }
      break;
#endif
#if defined(HAVE_SYS_UN_H) && defined(AF_UNIX)
    case AF_UNIX:
      if(salen > sizeof(sa_family_t)) {
        su = (struct sockaddr_un*)sa;
        msnprintf(addr, MAX_IPADR_LEN, "%s", su->sun_path);
      }
      else
        addr[0] = 0; /* socket with no name */
      *port = 0;
      return TRUE;







|







661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
        *port = us_port;
        return TRUE;
      }
      break;
#endif
#if defined(HAVE_SYS_UN_H) && defined(AF_UNIX)
    case AF_UNIX:
      if(salen > (curl_socklen_t)sizeof(sa_family_t)) {
        su = (struct sockaddr_un*)sa;
        msnprintf(addr, MAX_IPADR_LEN, "%s", su->sun_path);
      }
      else
        addr[0] = 0; /* socket with no name */
      *port = 0;
      return TRUE;
972
973
974
975
976
977
978








979
980
981
982
983
984
985
      hostname = conn->conn_to_host.name;
    else
      hostname = conn->host.name;

    failf(data, "Failed to connect to %s port %ld: %s",
          hostname, conn->port,
          Curl_strerror(error, buffer, sizeof(buffer)));








  }

  return result;
}

static void tcpnodelay(struct connectdata *conn, curl_socket_t sockfd)
{







>
>
>
>
>
>
>
>







972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
      hostname = conn->conn_to_host.name;
    else
      hostname = conn->host.name;

    failf(data, "Failed to connect to %s port %ld: %s",
          hostname, conn->port,
          Curl_strerror(error, buffer, sizeof(buffer)));

#ifdef WSAETIMEDOUT
    if(WSAETIMEDOUT == data->state.os_errno)
      result = CURLE_OPERATION_TIMEDOUT;
#elif defined(ETIMEDOUT)
    if(ETIMEDOUT == data->state.os_errno)
      result = CURLE_OPERATION_TIMEDOUT;
#endif
  }

  return result;
}

static void tcpnodelay(struct connectdata *conn, curl_socket_t sockfd)
{
1503
1504
1505
1506
1507
1508
1509





1510
1511
1512
1513
1514
1515
1516
  else
    /* opensocket callback not set, so simply create the socket now */
    *sockfd = socket(addr->family, addr->socktype, addr->protocol);

  if(*sockfd == CURL_SOCKET_BAD)
    /* no socket, no connection */
    return CURLE_COULDNT_CONNECT;






#if defined(ENABLE_IPV6) && defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID)
  if(conn->scope_id && (addr->family == AF_INET6)) {
    struct sockaddr_in6 * const sa6 = (void *)&addr->sa_addr;
    sa6->sin6_scope_id = conn->scope_id;
  }
#endif







>
>
>
>
>







1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
  else
    /* opensocket callback not set, so simply create the socket now */
    *sockfd = socket(addr->family, addr->socktype, addr->protocol);

  if(*sockfd == CURL_SOCKET_BAD)
    /* no socket, no connection */
    return CURLE_COULDNT_CONNECT;

  if(conn->transport == TRNSPRT_QUIC) {
    /* QUIC sockets need to be nonblocking */
    (void)curlx_nonblock(*sockfd, TRUE);
  }

#if defined(ENABLE_IPV6) && defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID)
  if(conn->scope_id && (addr->family == AF_INET6)) {
    struct sockaddr_in6 * const sa6 = (void *)&addr->sa_addr;
    sa6->sin6_scope_id = conn->scope_id;
  }
#endif
Changes to jni/curl/lib/cookie.c.
1085
1086
1087
1088
1089
1090
1091


1092
1093
1094
1095
1096
1097
1098
 *
 * Curl_cookie_init()
 *
 * Inits a cookie struct to read data from a local file. This is always
 * called before any cookies are set. File may be NULL.
 *
 * If 'newsession' is TRUE, discard all "session cookies" on read from file.


 *
 * Returns NULL on out of memory. Invalid cookies are ignored.
 ****************************************************************************/
struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
                                    const char *file,
                                    struct CookieInfo *inc,
                                    bool newsession)







>
>







1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
 *
 * Curl_cookie_init()
 *
 * Inits a cookie struct to read data from a local file. This is always
 * called before any cookies are set. File may be NULL.
 *
 * If 'newsession' is TRUE, discard all "session cookies" on read from file.
 *
 * Note that 'data' might be called as NULL pointer.
 *
 * Returns NULL on out of memory. Invalid cookies are ignored.
 ****************************************************************************/
struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
                                    const char *file,
                                    struct CookieInfo *inc,
                                    bool newsession)
1156
1157
1158
1159
1160
1161
1162


1163
1164
1165
1166
1167
1168
1169
    remove_expired(c); /* run this once, not on every cookie */

    if(fromfile)
      fclose(fp);
  }

  c->running = TRUE;          /* now, we're running */



  return c;

fail:
  free(line);
  if(!inc)
    /* Only clean up if we allocated it here, as the original could still be in







>
>







1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
    remove_expired(c); /* run this once, not on every cookie */

    if(fromfile)
      fclose(fp);
  }

  c->running = TRUE;          /* now, we're running */
  if(data)
    data->state.cookie_engine = TRUE;

  return c;

fail:
  free(line);
  if(!inc)
    /* Only clean up if we allocated it here, as the original could still be in
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
  fputs("# Netscape HTTP Cookie File\n"
        "# https://curl.haxx.se/docs/http-cookies.html\n"
        "# This file was generated by libcurl! Edit at your own risk.\n\n",
        out);

  if(c->numcookies) {
    unsigned int i;
    unsigned int j;
    struct Cookie **array;

    array = malloc(sizeof(struct Cookie *) * c->numcookies);
    if(!array) {
      if(!use_stdout)
        fclose(out);
      return 1;
    }

    j = 0;
    for(i = 0; i < COOKIE_HASH_SIZE; i++) {
      for(co = c->cookies[i]; co; co = co->next) {
        if(!co->domain)
          continue;
        array[j++] = co;
      }
    }

    qsort(array, c->numcookies, sizeof(struct Cookie *), cookie_sort_ct);

    for(i = 0; i < j; i++) {
      char *format_ptr = get_netscape_format(array[i]);
      if(format_ptr == NULL) {
        fprintf(out, "#\n# Fatal libcurl error\n");
        free(array);
        if(!use_stdout)
          fclose(out);
        return 1;







|


|






|




|



|

|







1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
  fputs("# Netscape HTTP Cookie File\n"
        "# https://curl.haxx.se/docs/http-cookies.html\n"
        "# This file was generated by libcurl! Edit at your own risk.\n\n",
        out);

  if(c->numcookies) {
    unsigned int i;
    size_t nvalid = 0;
    struct Cookie **array;

    array = calloc(1, sizeof(struct Cookie *) * c->numcookies);
    if(!array) {
      if(!use_stdout)
        fclose(out);
      return 1;
    }

    /* only sort the cookies with a domain property */
    for(i = 0; i < COOKIE_HASH_SIZE; i++) {
      for(co = c->cookies[i]; co; co = co->next) {
        if(!co->domain)
          continue;
        array[nvalid++] = co;
      }
    }

    qsort(array, nvalid, sizeof(struct Cookie *), cookie_sort_ct);

    for(i = 0; i < nvalid; i++) {
      char *format_ptr = get_netscape_format(array[i]);
      if(format_ptr == NULL) {
        fprintf(out, "#\n# Fatal libcurl error\n");
        free(array);
        if(!use_stdout)
          fclose(out);
        return 1;
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
  struct curl_slist *list;
  Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
  list = cookie_list(data);
  Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
  return list;
}

void Curl_flush_cookies(struct Curl_easy *data, int cleanup)
{
  if(data->set.str[STRING_COOKIEJAR]) {
    if(data->change.cookielist) {
      /* If there is a list of cookie files to read, do it first so that
         we have all the told files read before we write the new jar.
         Curl_cookie_loadfiles() LOCKS and UNLOCKS the share itself! */
      Curl_cookie_loadfiles(data);







|







1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
  struct curl_slist *list;
  Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
  list = cookie_list(data);
  Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
  return list;
}

void Curl_flush_cookies(struct Curl_easy *data, bool cleanup)
{
  if(data->set.str[STRING_COOKIEJAR]) {
    if(data->change.cookielist) {
      /* If there is a list of cookie files to read, do it first so that
         we have all the told files read before we write the new jar.
         Curl_cookie_loadfiles() LOCKS and UNLOCKS the share itself! */
      Curl_cookie_loadfiles(data);
1638
1639
1640
1641
1642
1643
1644

1645
1646
1647
1648
1649
      data->change.cookielist = NULL;
    }
    Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
  }

  if(cleanup && (!data->share || (data->cookies != data->share->cookies))) {
    Curl_cookie_cleanup(data->cookies);

  }
  Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
}

#endif /* CURL_DISABLE_HTTP || CURL_DISABLE_COOKIES */







>





1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
      data->change.cookielist = NULL;
    }
    Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
  }

  if(cleanup && (!data->share || (data->cookies != data->share->cookies))) {
    Curl_cookie_cleanup(data->cookies);
    data->cookies = NULL;
  }
  Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
}

#endif /* CURL_DISABLE_HTTP || CURL_DISABLE_COOKIES */
Changes to jni/curl/lib/cookie.h.
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#if defined(CURL_DISABLE_HTTP) || defined(CURL_DISABLE_COOKIES)
#define Curl_cookie_list(x) NULL
#define Curl_cookie_loadfiles(x) Curl_nop_stmt
#define Curl_cookie_init(x,y,z,w) NULL
#define Curl_cookie_cleanup(x) Curl_nop_stmt
#define Curl_flush_cookies(x,y) Curl_nop_stmt
#else
void Curl_flush_cookies(struct Curl_easy *data, int cleanup);
void Curl_cookie_cleanup(struct CookieInfo *);
struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
                                    const char *, struct CookieInfo *, bool);
struct curl_slist *Curl_cookie_list(struct Curl_easy *data);
void Curl_cookie_loadfiles(struct Curl_easy *data);
#endif








|







105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#if defined(CURL_DISABLE_HTTP) || defined(CURL_DISABLE_COOKIES)
#define Curl_cookie_list(x) NULL
#define Curl_cookie_loadfiles(x) Curl_nop_stmt
#define Curl_cookie_init(x,y,z,w) NULL
#define Curl_cookie_cleanup(x) Curl_nop_stmt
#define Curl_flush_cookies(x,y) Curl_nop_stmt
#else
void Curl_flush_cookies(struct Curl_easy *data, bool cleanup);
void Curl_cookie_cleanup(struct CookieInfo *);
struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
                                    const char *, struct CookieInfo *, bool);
struct curl_slist *Curl_cookie_list(struct Curl_easy *data);
void Curl_cookie_loadfiles(struct Curl_easy *data);
#endif

Changes to jni/curl/lib/curl_config.h.cmake.
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419

/* Define to 1 if libssh2 provides `libssh2_session_handshake'. */
#cmakedefine HAVE_LIBSSH2_SESSION_HANDSHAKE 1

/* Define to 1 if you have the <libssh2.h> header file. */
#cmakedefine HAVE_LIBSSH2_H 1

/* Define to 1 if you have the `ssl' library (-lssl). */
#cmakedefine HAVE_LIBSSL 1

/* if zlib is available */
#cmakedefine HAVE_LIBZ 1

/* if brotli is available */
#cmakedefine HAVE_BROTLI 1

/* if your compiler supports LL */







<
<
<







403
404
405
406
407
408
409



410
411
412
413
414
415
416

/* Define to 1 if libssh2 provides `libssh2_session_handshake'. */
#cmakedefine HAVE_LIBSSH2_SESSION_HANDSHAKE 1

/* Define to 1 if you have the <libssh2.h> header file. */
#cmakedefine HAVE_LIBSSH2_H 1




/* if zlib is available */
#cmakedefine HAVE_LIBZ 1

/* if brotli is available */
#cmakedefine HAVE_BROTLI 1

/* if your compiler supports LL */
Changes to jni/curl/lib/curl_config.h.in.
623
624
625
626
627
628
629



630
631
632
633
634
635
636
#undef HAVE_SOCKETPAIR

/* Define to 1 if you have the <socket.h> header file. */
#undef HAVE_SOCKET_H

/* Define to 1 if you have the `SSLv2_client_method' function. */
#undef HAVE_SSLV2_CLIENT_METHOD




/* Define to 1 if you have the <ssl.h> header file. */
#undef HAVE_SSL_H

/* Define to 1 if you have the <stdbool.h> header file. */
#undef HAVE_STDBOOL_H








>
>
>







623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
#undef HAVE_SOCKETPAIR

/* Define to 1 if you have the <socket.h> header file. */
#undef HAVE_SOCKET_H

/* Define to 1 if you have the `SSLv2_client_method' function. */
#undef HAVE_SSLV2_CLIENT_METHOD

/* Define to 1 if you have the `SSL_get_esni_status' function. */
#undef HAVE_SSL_GET_ESNI_STATUS

/* Define to 1 if you have the <ssl.h> header file. */
#undef HAVE_SSL_H

/* Define to 1 if you have the <stdbool.h> header file. */
#undef HAVE_STDBOOL_H

947
948
949
950
951
952
953



954
955
956
957
958
959
960
#undef USE_ALTSVC

/* if AmiSSL is in use */
#undef USE_AMISSL

/* Define to enable c-ares support */
#undef USE_ARES




/* if GnuTLS is enabled */
#undef USE_GNUTLS

/* if GnuTLS uses nettle as crypto backend */
#undef USE_GNUTLS_NETTLE








>
>
>







950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
#undef USE_ALTSVC

/* if AmiSSL is in use */
#undef USE_AMISSL

/* Define to enable c-ares support */
#undef USE_ARES

/* if ESNI support is available */
#undef USE_ESNI

/* if GnuTLS is enabled */
#undef USE_GNUTLS

/* if GnuTLS uses nettle as crypto backend */
#undef USE_GNUTLS_NETTLE

Changes to jni/curl/lib/doh.c.
70
71
72
73
74
75
76


77
78
79
80
81
82
83
84
85
86







87
88
89
90
91
92
93
94

#ifdef DEBUGBUILD
#define UNITTEST
#else
#define UNITTEST static
#endif



UNITTEST DOHcode doh_encode(const char *host,
                            DNStype dnstype,
                            unsigned char *dnsp, /* buffer */
                            size_t len,  /* buffer size */
                            size_t *olen) /* output length */
{
  size_t hostlen = strlen(host);
  unsigned char *orig = dnsp;
  const char *hostp = host;








  if(len < (12 + hostlen + 4))
    return DOH_TOO_SMALL_BUFFER;

  *dnsp++ = 0; /* 16 bit id */
  *dnsp++ = 0;
  *dnsp++ = 0x01; /* |QR|   Opcode  |AA|TC|RD| Set the RD bit */
  *dnsp++ = '\0'; /* |RA|   Z    |   RCODE   |                */
  *dnsp++ = '\0';







>
>






|



>
>
>
>
>
>
>
|







70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103

#ifdef DEBUGBUILD
#define UNITTEST
#else
#define UNITTEST static
#endif

/* @unittest 1655
 */
UNITTEST DOHcode doh_encode(const char *host,
                            DNStype dnstype,
                            unsigned char *dnsp, /* buffer */
                            size_t len,  /* buffer size */
                            size_t *olen) /* output length */
{
  const size_t hostlen = strlen(host);
  unsigned char *orig = dnsp;
  const char *hostp = host;

  /* The expected output length does not depend on the number of dots within
   * the host name. It will always be two more than the length of the host
   * name, one for the size and one trailing null. In case there are dots,
   * each dot adds one size but removes the need to store the dot, net zero.
   */
  const size_t expected_len = 12 + ( 1 + hostlen + 1) + 4;

  if(len < expected_len)
    return DOH_TOO_SMALL_BUFFER;

  *dnsp++ = 0; /* 16 bit id */
  *dnsp++ = 0;
  *dnsp++ = 0x01; /* |QR|   Opcode  |AA|TC|RD| Set the RD bit */
  *dnsp++ = '\0'; /* |RA|   Z    |   RCODE   |                */
  *dnsp++ = '\0';
122
123
124
125
126
127
128

129
130

131
132
133
134




135
136
137
138
139
140
141
    hostp += labellen + 1;
    if(!found) {
      *dnsp++ = 0; /* terminating zero */
      break;
    }
  } while(1);


  *dnsp++ = '\0'; /* upper 8 bit TYPE */
  *dnsp++ = (unsigned char)dnstype;

  *dnsp++ = '\0'; /* upper 8 bit CLASS */
  *dnsp++ = DNS_CLASS_IN; /* IN - "the Internet" */

  *olen = dnsp - orig;




  return DOH_OK;
}

static size_t
doh_write_cb(void *contents, size_t size, size_t nmemb, void *userp)
{
  size_t realsize = size * nmemb;







>
|
|
>




>
>
>
>







131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
    hostp += labellen + 1;
    if(!found) {
      *dnsp++ = 0; /* terminating zero */
      break;
    }
  } while(1);

  /* There are assigned TYPE codes beyond 255: use range [1..65535]  */
  *dnsp++ = (unsigned char)(255 & (dnstype>>8)); /* upper 8 bit TYPE */
  *dnsp++ = (unsigned char)(255 & dnstype);      /* lower 8 bit TYPE */

  *dnsp++ = '\0'; /* upper 8 bit CLASS */
  *dnsp++ = DNS_CLASS_IN; /* IN - "the Internet" */

  *olen = dnsp - orig;

  /* verify that our assumption of length is valid, since
   * this has lead to buffer overflows in this function */
  DEBUGASSERT(*olen == expected_len);
  return DOH_OK;
}

static size_t
doh_write_cb(void *contents, size_t size, size_t nmemb, void *userp)
{
  size_t realsize = size * nmemb;
221
222
223
224
225
226
227



228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248



249
250
251
252
253
254
255
      result = CURLE_OUT_OF_MEMORY;
      goto error;
    }
    url = nurl;
  }

  timeout_ms = Curl_timeleft(data, NULL, TRUE);




  /* Curl_open() is the internal version of curl_easy_init() */
  result = Curl_open(&doh);
  if(!result) {
    /* pass in the struct pointer via a local variable to please coverity and
       the gcc typecheck helpers */
    struct dohresponse *resp = &p->serverdoh;
    ERROR_CHECK_SETOPT(CURLOPT_URL, url);
    ERROR_CHECK_SETOPT(CURLOPT_WRITEFUNCTION, doh_write_cb);
    ERROR_CHECK_SETOPT(CURLOPT_WRITEDATA, resp);
    if(!data->set.doh_get) {
      ERROR_CHECK_SETOPT(CURLOPT_POSTFIELDS, p->dohbuffer);
      ERROR_CHECK_SETOPT(CURLOPT_POSTFIELDSIZE, (long)p->dohlen);
    }
    ERROR_CHECK_SETOPT(CURLOPT_HTTPHEADER, headers);
#ifdef USE_NGHTTP2
    ERROR_CHECK_SETOPT(CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
#endif
#ifndef CURLDEBUG
    /* enforce HTTPS if not debug */
    ERROR_CHECK_SETOPT(CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);



#endif
    ERROR_CHECK_SETOPT(CURLOPT_TIMEOUT_MS, (long)timeout_ms);
    if(data->set.verbose)
      ERROR_CHECK_SETOPT(CURLOPT_VERBOSE, 1L);
    if(data->set.no_signal)
      ERROR_CHECK_SETOPT(CURLOPT_NOSIGNAL, 1L);








>
>
>
|




















>
>
>







236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
      result = CURLE_OUT_OF_MEMORY;
      goto error;
    }
    url = nurl;
  }

  timeout_ms = Curl_timeleft(data, NULL, TRUE);
  if(timeout_ms <= 0) {
    result = CURLE_OPERATION_TIMEDOUT;
    goto error;
  }
  /* Curl_open() is the internal version of curl_easy_init() */
  result = Curl_open(&doh);
  if(!result) {
    /* pass in the struct pointer via a local variable to please coverity and
       the gcc typecheck helpers */
    struct dohresponse *resp = &p->serverdoh;
    ERROR_CHECK_SETOPT(CURLOPT_URL, url);
    ERROR_CHECK_SETOPT(CURLOPT_WRITEFUNCTION, doh_write_cb);
    ERROR_CHECK_SETOPT(CURLOPT_WRITEDATA, resp);
    if(!data->set.doh_get) {
      ERROR_CHECK_SETOPT(CURLOPT_POSTFIELDS, p->dohbuffer);
      ERROR_CHECK_SETOPT(CURLOPT_POSTFIELDSIZE, (long)p->dohlen);
    }
    ERROR_CHECK_SETOPT(CURLOPT_HTTPHEADER, headers);
#ifdef USE_NGHTTP2
    ERROR_CHECK_SETOPT(CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
#endif
#ifndef CURLDEBUG
    /* enforce HTTPS if not debug */
    ERROR_CHECK_SETOPT(CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);
#else
    /* in debug mode, also allow http */
    ERROR_CHECK_SETOPT(CURLOPT_PROTOCOLS, CURLPROTO_HTTP|CURLPROTO_HTTPS);
#endif
    ERROR_CHECK_SETOPT(CURLOPT_TIMEOUT_MS, (long)timeout_ms);
    if(data->set.verbose)
      ERROR_CHECK_SETOPT(CURLOPT_VERBOSE, 1L);
    if(data->set.no_signal)
      ERROR_CHECK_SETOPT(CURLOPT_NOSIGNAL, 1L);

321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
  else
    goto error;
  free(nurl);
  return CURLE_OK;

  error:
  free(nurl);
  Curl_close(doh);
  return result;
}

/*
 * Curl_doh() resolves a name using DOH. It resolves a name and returns a
 * 'Curl_addrinfo *' with the address information.
 */







|







342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
  else
    goto error;
  free(nurl);
  return CURLE_OK;

  error:
  free(nurl);
  Curl_close(&doh);
  return result;
}

/*
 * Curl_doh() resolves a name using DOH. It resolves a name and returns a
 * 'Curl_addrinfo *' with the address information.
 */
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
    data->req.doh.pending++;
  }
  return NULL;

  error:
  curl_slist_free_all(data->req.doh.headers);
  data->req.doh.headers = NULL;
  curl_easy_cleanup(data->req.doh.probe[0].easy);
  data->req.doh.probe[0].easy = NULL;
  curl_easy_cleanup(data->req.doh.probe[1].easy);
  data->req.doh.probe[1].easy = NULL;
  return NULL;
}

static DOHcode skipqname(unsigned char *doh, size_t dohlen,
                         unsigned int *indexp)
{
  unsigned char length;







<
|
<
|







398
399
400
401
402
403
404

405

406
407
408
409
410
411
412
413
    data->req.doh.pending++;
  }
  return NULL;

  error:
  curl_slist_free_all(data->req.doh.headers);
  data->req.doh.headers = NULL;

  Curl_close(&data->req.doh.probe[0].easy);

  Curl_close(&data->req.doh.probe[1].easy);
  return NULL;
}

static DOHcode skipqname(unsigned char *doh, size_t dohlen,
                         unsigned int *indexp)
{
  unsigned char length;
415
416
417
418
419
420
421



422



423
424
425
426
427
428
429
430
static unsigned short get16bit(unsigned char *doh, int index)
{
  return (unsigned short)((doh[index] << 8) | doh[index + 1]);
}

static unsigned int get32bit(unsigned char *doh, int index)
{



  return (doh[index] << 24) | (doh[index + 1] << 16) |



    (doh[index + 2] << 8) | doh[index + 3];
}

static DOHcode store_a(unsigned char *doh, int index, struct dohentry *d)
{
  /* silently ignore addresses over the limit */
  if(d->numaddr < DOH_MAX_ADDR) {
    struct dohaddr *a = &d->addr[d->numaddr];







>
>
>
|
>
>
>
|







434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
static unsigned short get16bit(unsigned char *doh, int index)
{
  return (unsigned short)((doh[index] << 8) | doh[index + 1]);
}

static unsigned int get32bit(unsigned char *doh, int index)
{
   /* make clang and gcc optimize this to bswap by incrementing
      the pointer first. */
   doh += index;

   /* avoid undefined behaviour by casting to unsigned before shifting
      24 bits, possibly into the sign bit. codegen is same, but
      ub sanitizer won't be upset */
  return ( (unsigned)doh[0] << 24) | (doh[1] << 16) |(doh[2] << 8) | doh[3];
}

static DOHcode store_a(unsigned char *doh, int index, struct dohentry *d)
{
  /* silently ignore addresses over the limit */
  if(d->numaddr < DOH_MAX_ADDR) {
    struct dohaddr *a = &d->addr[d->numaddr];
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
  }
  else if(!data->req.doh.pending) {
    DOHcode rc;
    DOHcode rc2;
    struct dohentry de;
    /* remove DOH handles from multi handle and close them */
    curl_multi_remove_handle(data->multi, data->req.doh.probe[0].easy);
    Curl_close(data->req.doh.probe[0].easy);
    curl_multi_remove_handle(data->multi, data->req.doh.probe[1].easy);
    Curl_close(data->req.doh.probe[1].easy);

    /* parse the responses, create the struct and return it! */
    init_dohentry(&de);
    rc = doh_decode(data->req.doh.probe[0].serverdoh.memory,
                    data->req.doh.probe[0].serverdoh.size,
                    data->req.doh.probe[0].dnstype,
                    &de);
    free(data->req.doh.probe[0].serverdoh.memory);
    if(rc) {
      infof(data, "DOH: %s type %s for %s\n", doh_strerror(rc),
            type2name(data->req.doh.probe[0].dnstype),
            data->req.doh.host);
    }
    rc2 = doh_decode(data->req.doh.probe[1].serverdoh.memory,
                     data->req.doh.probe[1].serverdoh.size,
                     data->req.doh.probe[1].dnstype,
                     &de);
    free(data->req.doh.probe[1].serverdoh.memory);
    if(rc2) {
      infof(data, "DOH: %s type %s for %s\n", doh_strerror(rc2),
            type2name(data->req.doh.probe[1].dnstype),
            data->req.doh.host);
    }
    if(!rc || !rc2) {
      struct Curl_dns_entry *dns;







|

|
<






|









|







919
920
921
922
923
924
925
926
927
928

929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
  }
  else if(!data->req.doh.pending) {
    DOHcode rc;
    DOHcode rc2;
    struct dohentry de;
    /* remove DOH handles from multi handle and close them */
    curl_multi_remove_handle(data->multi, data->req.doh.probe[0].easy);
    Curl_close(&data->req.doh.probe[0].easy);
    curl_multi_remove_handle(data->multi, data->req.doh.probe[1].easy);
    Curl_close(&data->req.doh.probe[1].easy);

    /* parse the responses, create the struct and return it! */
    init_dohentry(&de);
    rc = doh_decode(data->req.doh.probe[0].serverdoh.memory,
                    data->req.doh.probe[0].serverdoh.size,
                    data->req.doh.probe[0].dnstype,
                    &de);
    Curl_safefree(data->req.doh.probe[0].serverdoh.memory);
    if(rc) {
      infof(data, "DOH: %s type %s for %s\n", doh_strerror(rc),
            type2name(data->req.doh.probe[0].dnstype),
            data->req.doh.host);
    }
    rc2 = doh_decode(data->req.doh.probe[1].serverdoh.memory,
                     data->req.doh.probe[1].serverdoh.size,
                     data->req.doh.probe[1].dnstype,
                     &de);
    Curl_safefree(data->req.doh.probe[1].serverdoh.memory);
    if(rc2) {
      infof(data, "DOH: %s type %s for %s\n", doh_strerror(rc2),
            type2name(data->req.doh.probe[1].dnstype),
            data->req.doh.host);
    }
    if(!rc || !rc2) {
      struct Curl_dns_entry *dns;
Changes to jni/curl/lib/easy.c.
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
{
  SIGPIPE_VARIABLE(pipe_st);

  if(!data)
    return;

  sigpipe_ignore(data, &pipe_st);
  Curl_close(data);
  sigpipe_restore(&pipe_st);
}

/*
 * curl_easy_getinfo() is an external interface that allows an app to retrieve
 * information from a performed transfer and similar.
 */







|







727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
{
  SIGPIPE_VARIABLE(pipe_st);

  if(!data)
    return;

  sigpipe_ignore(data, &pipe_st);
  Curl_close(&data);
  sigpipe_restore(&pipe_st);
}

/*
 * curl_easy_getinfo() is an external interface that allows an app to retrieve
 * information from a performed transfer and similar.
 */
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032

    if(result)
      return result;
  }

  /* if there's no error and we're not pausing both directions, we want
     to have this handle checked soon */
  if(!result &&
     ((newstate&(KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) !=
      (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) ) {
    Curl_expire(data, 0, EXPIRE_RUN_NOW); /* get this handle going again */
    if(data->multi)
      Curl_update_timer(data->multi);
  }

  /* This transfer may have been moved in or out of the bundle, update
     the corresponding socket callback, if used */







<
|
|







1016
1017
1018
1019
1020
1021
1022

1023
1024
1025
1026
1027
1028
1029
1030
1031

    if(result)
      return result;
  }

  /* if there's no error and we're not pausing both directions, we want
     to have this handle checked soon */

  if((newstate & (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) !=
     (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) {
    Curl_expire(data, 0, EXPIRE_RUN_NOW); /* get this handle going again */
    if(data->multi)
      Curl_update_timer(data->multi);
  }

  /* This transfer may have been moved in or out of the bundle, update
     the corresponding socket callback, if used */
Changes to jni/curl/lib/ftp.c.
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533

    result = InitiateTransfer(conn);
    if(result)
      return result;
  }
  else {
    /* Add timeout to multi handle and break out of the loop */
    if(!result && *connected == FALSE) {
      Curl_expire(data, data->set.accepttimeout > 0 ?
                  data->set.accepttimeout: DEFAULT_ACCEPT_TIMEOUT, 0);
    }
  }

  return result;
}







|







519
520
521
522
523
524
525
526
527
528
529
530
531
532
533

    result = InitiateTransfer(conn);
    if(result)
      return result;
  }
  else {
    /* Add timeout to multi handle and break out of the loop */
    if(*connected == FALSE) {
      Curl_expire(data, data->set.accepttimeout > 0 ?
                  data->set.accepttimeout: DEFAULT_ACCEPT_TIMEOUT, 0);
    }
  }

  return result;
}
863
864
865
866
867
868
869




870
871
872
873
874
875
876
877
878
879
880


881
882
883
884
885
886
887
  CURLcode result = CURLE_OK;
  struct ftp_conn *ftpc = &conn->proto.ftpc;

  if(ftpc->cwddone)
    /* already done and fine */
    result = ftp_state_mdtm(conn);
  else {




    ftpc->count2 = 0; /* count2 counts failed CWDs */

    /* count3 is set to allow a MKD to fail once. In the case when first CWD
       fails and then MKD fails (due to another session raced it to create the
       dir) this then allows for a second try to CWD to it */
    ftpc->count3 = (conn->data->set.ftp_create_missing_dirs == 2)?1:0;

    if((conn->data->set.ftp_filemethod == FTPFILE_NOCWD) && !ftpc->cwdcount)
      /* No CWD necessary */
      result = ftp_state_mdtm(conn);
    else if(conn->bits.reuse && ftpc->entrypath) {


      /* This is a re-used connection. Since we change directory to where the
         transfer is taking place, we must first get back to the original dir
         where we ended up after login: */
      ftpc->cwdcount = 0; /* we count this as the first path, then we add one
                             for all upcoming ones in the ftp->dirs[] array */
      PPSENDF(&conn->proto.ftpc.pp, "CWD %s", ftpc->entrypath);
      state(conn, FTP_CWD);







>
>
>
>







<
<
<
|
>
>







863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880



881
882
883
884
885
886
887
888
889
890
  CURLcode result = CURLE_OK;
  struct ftp_conn *ftpc = &conn->proto.ftpc;

  if(ftpc->cwddone)
    /* already done and fine */
    result = ftp_state_mdtm(conn);
  else {
    /* FTPFILE_NOCWD with full path: expect ftpc->cwddone! */
    DEBUGASSERT((conn->data->set.ftp_filemethod != FTPFILE_NOCWD) ||
                !(ftpc->dirdepth && ftpc->dirs[0][0] == '/'));

    ftpc->count2 = 0; /* count2 counts failed CWDs */

    /* count3 is set to allow a MKD to fail once. In the case when first CWD
       fails and then MKD fails (due to another session raced it to create the
       dir) this then allows for a second try to CWD to it */
    ftpc->count3 = (conn->data->set.ftp_create_missing_dirs == 2)?1:0;




    if(conn->bits.reuse && ftpc->entrypath &&
       /* no need to go to entrypath when we have an absolute path */
       !(ftpc->dirdepth && ftpc->dirs[0][0] == '/')) {
      /* This is a re-used connection. Since we change directory to where the
         transfer is taking place, we must first get back to the original dir
         where we ended up after login: */
      ftpc->cwdcount = 0; /* we count this as the first path, then we add one
                             for all upcoming ones in the ftp->dirs[] array */
      PPSENDF(&conn->proto.ftpc.pp, "CWD %s", ftpc->entrypath);
      state(conn, FTP_CWD);
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446

1447
1448
1449
1450
1451


1452


1453
1454
1455

1456
1457
1458
1459


1460
1461


1462
1463
1464
1465
1466
1467
1468
1469
1470
1471

1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487

  /* If this output is to be machine-parsed, the NLST command might be better
     to use, since the LIST command output is not specified or standard in any
     way. It has turned out that the NLST list output is not the same on all
     servers either... */

  /*
     if FTPFILE_NOCWD was specified, we are currently in
     the user's home directory, so we should add the path
     as argument for the LIST / NLST / or custom command.
     Whether the server will support this, is uncertain.

     The other ftp_filemethods will CWD into dir/dir/ first and
     then just do LIST (in that case: nothing to do here)
  */

  char *cmd, *lstArg, *slashPos;
  const char *inpath = ftp->path;

  lstArg = NULL;
  if((data->set.ftp_filemethod == FTPFILE_NOCWD) &&


     inpath && inpath[0] && strchr(inpath, '/')) {


    size_t n = strlen(inpath);

    /* Check if path does not end with /, as then we cut off the file part */

    if(inpath[n - 1] != '/') {
      /* chop off the file part if format is dir/dir/file */
      slashPos = strrchr(inpath, '/');
      n = slashPos - inpath;


    }
    result = Curl_urldecode(data, inpath, n, &lstArg, NULL, TRUE);


    if(result)
      return result;
  }

  cmd = aprintf("%s%s%s",
                data->set.str[STRING_CUSTOMREQUEST]?
                data->set.str[STRING_CUSTOMREQUEST]:
                (data->set.ftp_list_only?"NLST":"LIST"),
                lstArg? " ": "",
                lstArg? lstArg: "");


  if(!cmd) {
    free(lstArg);
    return CURLE_OUT_OF_MEMORY;
  }

  result = Curl_pp_sendf(&conn->proto.ftpc.pp, "%s", cmd);

  free(lstArg);
  free(cmd);

  if(result)
    return result;

  state(conn, FTP_LIST);








|
<






>
|
<

<
|
>
>
|
>
>
|

<
>
|
|
|
|
>
>
|
|
>
>
|
|








>

|
<

|
<

<
<







1435
1436
1437
1438
1439
1440
1441
1442

1443
1444
1445
1446
1447
1448
1449
1450

1451

1452
1453
1454
1455
1456
1457
1458
1459

1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483

1484
1485

1486


1487
1488
1489
1490
1491
1492
1493

  /* If this output is to be machine-parsed, the NLST command might be better
     to use, since the LIST command output is not specified or standard in any
     way. It has turned out that the NLST list output is not the same on all
     servers either... */

  /*
     if FTPFILE_NOCWD was specified, we should add the path

     as argument for the LIST / NLST / or custom command.
     Whether the server will support this, is uncertain.

     The other ftp_filemethods will CWD into dir/dir/ first and
     then just do LIST (in that case: nothing to do here)
  */
  char *lstArg = NULL;
  char *cmd;



  if((data->set.ftp_filemethod == FTPFILE_NOCWD) && ftp->path) {
    /* url-decode before evaluation: e.g. paths starting/ending with %2f */
    const char *slashPos = NULL;
    char *rawPath = NULL;
    result = Curl_urldecode(data, ftp->path, 0, &rawPath, NULL, TRUE);
    if(result)
      return result;


    slashPos = strrchr(rawPath, '/');
    if(slashPos) {
      /* chop off the file part if format is dir/file otherwise remove
         the trailing slash for dir/dir/ except for absolute path / */
      size_t n = slashPos - rawPath;
      if(n == 0)
        ++n;

      lstArg = rawPath;
      lstArg[n] = '\0';
    }
    else
      free(rawPath);
  }

  cmd = aprintf("%s%s%s",
                data->set.str[STRING_CUSTOMREQUEST]?
                data->set.str[STRING_CUSTOMREQUEST]:
                (data->set.ftp_list_only?"NLST":"LIST"),
                lstArg? " ": "",
                lstArg? lstArg: "");
  free(lstArg);

  if(!cmd)

    return CURLE_OUT_OF_MEMORY;


  result = Curl_pp_sendf(&conn->proto.ftpc.pp, "%s", cmd);


  free(cmd);

  if(result)
    return result;

  state(conn, FTP_LIST);

2238
2239
2240
2241
2242
2243
2244
2245














2246
2247


2248
2249
2250
2251
2252
2253
2254
{
  CURLcode result = CURLE_OK;
  struct Curl_easy *data = conn->data;
  curl_off_t filesize = -1;
  char *buf = data->state.buffer;

  /* get the size from the ascii string: */
  if(ftpcode == 213)














    /* ignores parsing errors, which will make the size remain unknown */
    (void)curlx_strtoofft(buf + 4, NULL, 0, &filesize);



  if(instate == FTP_SIZE) {
#ifdef CURL_FTP_HTTPSTYLE_HEAD
    if(-1 != filesize) {
      char clbuf[128];
      msnprintf(clbuf, sizeof(clbuf),
                "Content-Length: %" CURL_FORMAT_CURL_OFF_T "\r\n", filesize);







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>

|
>
>







2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
{
  CURLcode result = CURLE_OK;
  struct Curl_easy *data = conn->data;
  curl_off_t filesize = -1;
  char *buf = data->state.buffer;

  /* get the size from the ascii string: */
  if(ftpcode == 213) {
    /* To allow servers to prepend "rubbish" in the response string, we scan
       for all the digits at the end of the response and parse only those as a
       number. */
    char *start = &buf[4];
    char *fdigit = strchr(start, '\r');
    if(fdigit) {
      do
        fdigit--;
      while(ISDIGIT(*fdigit) && (fdigit > start));
      if(!ISDIGIT(*fdigit))
        fdigit++;
    }
    else
      fdigit = start;
    /* ignores parsing errors, which will make the size remain unknown */
    (void)curlx_strtoofft(fdigit, NULL, 0, &filesize);

  }

  if(instate == FTP_SIZE) {
#ifdef CURL_FTP_HTTPSTYLE_HEAD
    if(-1 != filesize) {
      char clbuf[128];
      msnprintf(clbuf, sizeof(clbuf),
                "Content-Length: %" CURL_FORMAT_CURL_OFF_T "\r\n", filesize);
3111
3112
3113
3114
3115
3116
3117
3118

3119
3120
3121
3122
3123
3124
3125
  struct Curl_easy *data = conn->data;
  struct FTP *ftp = data->req.protop;
  struct ftp_conn *ftpc = &conn->proto.ftpc;
  struct pingpong *pp = &ftpc->pp;
  ssize_t nread;
  int ftpcode;
  CURLcode result = CURLE_OK;
  char *path = NULL;


  if(!ftp)
    return CURLE_OK;

  switch(status) {
  case CURLE_BAD_DOWNLOAD_RESUME:
  case CURLE_FTP_WEIRD_PASV_REPLY:







|
>







3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
  struct Curl_easy *data = conn->data;
  struct FTP *ftp = data->req.protop;
  struct ftp_conn *ftpc = &conn->proto.ftpc;
  struct pingpong *pp = &ftpc->pp;
  ssize_t nread;
  int ftpcode;
  CURLcode result = CURLE_OK;
  char *rawPath = NULL;
  size_t pathLen = 0;

  if(!ftp)
    return CURLE_OK;

  switch(status) {
  case CURLE_BAD_DOWNLOAD_RESUME:
  case CURLE_FTP_WEIRD_PASV_REPLY:
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175

3176
3177



3178
3179
3180
3181
3182
3183
3184
3185

3186

3187
3188
3189
3190
3191
3192
3193
3194
3195


3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
    ftpc->cwdfail = TRUE; /* set this TRUE to prevent us to remember the
                             current path, as this connection is going */
    connclose(conn, "FTP ended with bad error code");
    result = status;      /* use the already set error code */
    break;
  }

  /* now store a copy of the directory we are in */
  free(ftpc->prevpath);

  if(data->state.wildcardmatch) {
    if(data->set.chunk_end && ftpc->file) {
      Curl_set_in_callback(data, true);
      data->set.chunk_end(data->wildcard.customptr);
      Curl_set_in_callback(data, false);
    }
    ftpc->known_filesize = -1;
  }

  if(!result)
    /* get the "raw" path */
    result = Curl_urldecode(data, ftp->path, 0, &path, NULL, TRUE);
  if(result) {
    /* We can limp along anyway (and should try to since we may already be in
     * the error path) */
    ftpc->ctl_valid = FALSE; /* mark control connection as bad */
    connclose(conn, "FTP: out of memory!"); /* mark for connection closure */

    ftpc->prevpath = NULL; /* no path remembering */
  }



  else {
    size_t flen = ftpc->file?strlen(ftpc->file):0; /* file is "raw" already */
    size_t dlen = strlen(path)-flen;
    if(!ftpc->cwdfail) {
      ftpc->prevmethod = data->set.ftp_filemethod;
      if(dlen && (data->set.ftp_filemethod != FTPFILE_NOCWD)) {
        ftpc->prevpath = path;
        if(flen)

          /* if 'path' is not the whole string */

          ftpc->prevpath[dlen] = 0; /* terminate */
      }
      else {
        free(path);
        /* we never changed dir */
        ftpc->prevpath = strdup("");
        if(!ftpc->prevpath)
          return CURLE_OUT_OF_MEMORY;
      }


      if(ftpc->prevpath)
        infof(data, "Remembering we are in dir \"%s\"\n", ftpc->prevpath);
    }
    else {
      ftpc->prevpath = NULL; /* no path */
      free(path);
    }
  }
  /* free the dir tree and file parts */
  freedirs(ftpc);

  /* shut down the socket to inform the server we're done */

#ifdef _WIN32_WCE
  shutdown(conn->sock[SECONDARYSOCKET], 2);  /* SD_BOTH */







<
<
<










|
|





>


>
>
>
|
|
|
|
|
<
|
|
>
|
>
|


|
<
|
<
<

>
>
|
|
|
<
<
<
|
<







3172
3173
3174
3175
3176
3177
3178



3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206

3207
3208
3209
3210
3211
3212
3213
3214
3215

3216


3217
3218
3219
3220
3221
3222



3223

3224
3225
3226
3227
3228
3229
3230
    ftpc->cwdfail = TRUE; /* set this TRUE to prevent us to remember the
                             current path, as this connection is going */
    connclose(conn, "FTP ended with bad error code");
    result = status;      /* use the already set error code */
    break;
  }




  if(data->state.wildcardmatch) {
    if(data->set.chunk_end && ftpc->file) {
      Curl_set_in_callback(data, true);
      data->set.chunk_end(data->wildcard.customptr);
      Curl_set_in_callback(data, false);
    }
    ftpc->known_filesize = -1;
  }

  if(!result)
    /* get the url-decoded "raw" path */
    result = Curl_urldecode(data, ftp->path, 0, &rawPath, &pathLen, TRUE);
  if(result) {
    /* We can limp along anyway (and should try to since we may already be in
     * the error path) */
    ftpc->ctl_valid = FALSE; /* mark control connection as bad */
    connclose(conn, "FTP: out of memory!"); /* mark for connection closure */
    free(ftpc->prevpath);
    ftpc->prevpath = NULL; /* no path remembering */
  }
  else { /* remember working directory for connection reuse */
    if((data->set.ftp_filemethod == FTPFILE_NOCWD) && (rawPath[0] == '/'))
      free(rawPath); /* full path => no CWDs happened => keep ftpc->prevpath */
    else {
      free(ftpc->prevpath);

      if(!ftpc->cwdfail) {
        if(data->set.ftp_filemethod == FTPFILE_NOCWD)

          pathLen = 0; /* relative path => working directory is FTP home */
        else
          pathLen -= ftpc->file?strlen(ftpc->file):0; /* file is url-decoded */

        rawPath[pathLen] = '\0';
        ftpc->prevpath = rawPath;
      }
      else {
        free(rawPath);

        ftpc->prevpath = NULL; /* no path */


      }
    }

    if(ftpc->prevpath)
      infof(data, "Remembering we are in dir \"%s\"\n", ftpc->prevpath);
  }





  /* free the dir tree and file parts */
  freedirs(ftpc);

  /* shut down the socket to inform the server we're done */

#ifdef _WIN32_WCE
  shutdown(conn->sock[SECONDARYSOCKET], 2);  /* SD_BOTH */
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
       They are only done to kickstart the do_more state */
    result = ftp_multi_statemach(conn, &complete);

    *completep = (int)complete;

    /* if we got an error or if we don't wait for a data connection return
       immediately */
    if(result || (ftpc->wait_data_conn != TRUE))
      return result;

    if(ftpc->wait_data_conn)
      /* if we reach the end of the FTP state machine here, *complete will be
         TRUE but so is ftpc->wait_data_conn, which says we need to wait for
         the data connection and therefore we're not actually complete */
      *completep = 0;
  }

  if(ftp->transfer <= FTPTRANSFER_INFO) {
    /* a transfer is about to take place, or if not a file name was given
       so we'll do a SIZE on it later and then we need the right TYPE first */

    if(ftpc->wait_data_conn == TRUE) {







|


<
|
|
|
|







3529
3530
3531
3532
3533
3534
3535
3536
3537
3538

3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
       They are only done to kickstart the do_more state */
    result = ftp_multi_statemach(conn, &complete);

    *completep = (int)complete;

    /* if we got an error or if we don't wait for a data connection return
       immediately */
    if(result || !ftpc->wait_data_conn)
      return result;


    /* if we reach the end of the FTP state machine here, *complete will be
       TRUE but so is ftpc->wait_data_conn, which says we need to wait for the
       data connection and therefore we're not actually complete */
    *completep = 0;
  }

  if(ftp->transfer <= FTPTRANSFER_INFO) {
    /* a transfer is about to take place, or if not a file name was given
       so we'll do a SIZE on it later and then we need the right TYPE first */

    if(ftpc->wait_data_conn == TRUE) {
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
    }
    else if(data->set.upload) {
      result = ftp_nb_type(conn, data->set.prefer_ascii, FTP_STOR_TYPE);
      if(result)
        return result;

      result = ftp_multi_statemach(conn, &complete);
      if(ftpc->wait_data_conn)
        /* if we reach the end of the FTP state machine here, *complete will be
           TRUE but so is ftpc->wait_data_conn, which says we need to wait for
           the data connection and therefore we're not actually complete */
        *completep = 0;
      else
        *completep = (int)complete;
    }
    else {
      /* download */
      ftp->downloadsize = -1; /* unknown as of yet */

      result = Curl_range(conn);








|
<
<
<
<
<
|







3569
3570
3571
3572
3573
3574
3575
3576





3577
3578
3579
3580
3581
3582
3583
3584
    }
    else if(data->set.upload) {
      result = ftp_nb_type(conn, data->set.prefer_ascii, FTP_STOR_TYPE);
      if(result)
        return result;

      result = ftp_multi_statemach(conn, &complete);
      /* ftpc->wait_data_conn is always false here */





      *completep = (int)complete;
    }
    else {
      /* download */
      ftp->downloadsize = -1; /* unknown as of yet */

      result = Curl_range(conn);

3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613

      result = ftp_multi_statemach(conn, &complete);
      *completep = (int)complete;
    }
    return result;
  }

  if(!result && (ftp->transfer != FTPTRANSFER_BODY))
    /* no data to transfer. FIX: it feels like a kludge to have this here
       too! */
    Curl_setup_transfer(data, -1, -1, FALSE, -1);

  if(!ftpc->wait_data_conn) {
    /* no waiting for the data connection so this is now complete */
    *completep = 1;
    DEBUGF(infof(data, "DO-MORE phase ends with %d\n", (int)result));
  }








<
|
<
|







3610
3611
3612
3613
3614
3615
3616

3617

3618
3619
3620
3621
3622
3623
3624
3625

      result = ftp_multi_statemach(conn, &complete);
      *completep = (int)complete;
    }
    return result;
  }


  /* no data to transfer */

  Curl_setup_transfer(data, -1, -1, FALSE, -1);

  if(!ftpc->wait_data_conn) {
    /* no waiting for the data connection so this is now complete */
    *completep = 1;
    DEBUGF(infof(data, "DO-MORE phase ends with %d\n", (int)result));
  }

4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088

4089
4090
4091
4092
4093





4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126

4127
4128
4129
4130
4131
4132
4133
4134
4135
4136





4137
4138
4139
4140
4141
4142
4143
4144


4145
4146
4147
4148
4149
4150





4151




4152
4153
4154
4155
4156
4157

4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170

4171

4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214


4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235

4236
4237
4238
4239
4240




4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262


4263
4264
4265
4266
4267
4268
4269
static
CURLcode ftp_parse_url_path(struct connectdata *conn)
{
  struct Curl_easy *data = conn->data;
  /* the ftp struct is already inited in ftp_connect() */
  struct FTP *ftp = data->req.protop;
  struct ftp_conn *ftpc = &conn->proto.ftpc;
  const char *slash_pos;  /* position of the first '/' char in curpos */
  const char *path_to_use = ftp->path;
  const char *cur_pos;
  const char *filename = NULL;

  cur_pos = path_to_use; /* current position in path. point at the begin of

                            next path component */

  ftpc->ctl_valid = FALSE;
  ftpc->cwdfail = FALSE;






  switch(data->set.ftp_filemethod) {
  case FTPFILE_NOCWD:
    /* fastest, but less standard-compliant */

    /*
      The best time to check whether the path is a file or directory is right
      here. so:

      the first condition in the if() right here, is there just in case
      someone decides to set path to NULL one day
   */
    if(path_to_use[0] &&
       (path_to_use[strlen(path_to_use) - 1] != '/') )
      filename = path_to_use;  /* this is a full file path */
    /*
      else {
        ftpc->file is not used anywhere other than for operations on a file.
        In other words, never for directory operations.
        So we can safely leave filename as NULL here and use it as a
        argument in dir/file decisions.
      }
    */
    break;

  case FTPFILE_SINGLECWD:
    /* get the last slash */
    if(!path_to_use[0]) {
      /* no dir, no file */
      ftpc->dirdepth = 0;
      break;
    }
    slash_pos = strrchr(cur_pos, '/');
    if(slash_pos || !*cur_pos) {

      size_t dirlen = slash_pos-cur_pos;
      CURLcode result;

      ftpc->dirs = calloc(1, sizeof(ftpc->dirs[0]));
      if(!ftpc->dirs)
        return CURLE_OUT_OF_MEMORY;

      if(!dirlen)
        dirlen++;






      result = Curl_urldecode(conn->data, slash_pos ? cur_pos : "/",
                              slash_pos ? dirlen : 1,
                              &ftpc->dirs[0], NULL,
                              TRUE);
      if(result) {
        freedirs(ftpc);
        return result;
      }


      ftpc->dirdepth = 1; /* we consider it to be a single dir */
      filename = slash_pos ? slash_pos + 1 : cur_pos; /* rest is file name */
    }
    else
      filename = cur_pos;  /* this is a file name only */
    break;










  default: /* allow pretty much anything */
  case FTPFILE_MULTICWD:
    ftpc->dirdepth = 0;
    ftpc->diralloc = 5; /* default dir depth to allocate */
    ftpc->dirs = calloc(ftpc->diralloc, sizeof(ftpc->dirs[0]));
    if(!ftpc->dirs)

      return CURLE_OUT_OF_MEMORY;

    /* we have a special case for listing the root dir only */
    if(!strcmp(path_to_use, "/")) {
      cur_pos++; /* make it point to the zero byte */
      ftpc->dirs[0] = strdup("/");
      ftpc->dirdepth++;
    }
    else {
      /* parse the URL path into separate path components */
      while((slash_pos = strchr(cur_pos, '/')) != NULL) {
        /* 1 or 0 pointer offset to indicate absolute directory */
        ssize_t absolute_dir = ((cur_pos - ftp->path > 0) &&

                                (ftpc->dirdepth == 0))?1:0;


        /* seek out the next path component */
        if(slash_pos-cur_pos) {
          /* we skip empty path components, like "x//y" since the FTP command
             CWD requires a parameter and a non-existent parameter a) doesn't
             work on many servers and b) has no effect on the others. */
          size_t len = slash_pos - cur_pos + absolute_dir;
          CURLcode result =
            Curl_urldecode(conn->data, cur_pos - absolute_dir, len,
                           &ftpc->dirs[ftpc->dirdepth], NULL,
                           TRUE);
          if(result) {
            freedirs(ftpc);
            return result;
          }
        }
        else {
          cur_pos = slash_pos + 1; /* jump to the rest of the string */
          if(!ftpc->dirdepth) {
            /* path starts with a slash, add that as a directory */
            ftpc->dirs[ftpc->dirdepth] = strdup("/");
            if(!ftpc->dirs[ftpc->dirdepth++]) { /* run out of memory ... */
              failf(data, "no memory");
              freedirs(ftpc);
              return CURLE_OUT_OF_MEMORY;
            }
          }
          continue;
        }

        cur_pos = slash_pos + 1; /* jump to the rest of the string */
        if(++ftpc->dirdepth >= ftpc->diralloc) {
          /* enlarge array */
          char **bigger;
          ftpc->diralloc *= 2; /* double the size each time */
          bigger = realloc(ftpc->dirs, ftpc->diralloc * sizeof(ftpc->dirs[0]));
          if(!bigger) {
            freedirs(ftpc);
            return CURLE_OUT_OF_MEMORY;
          }
          ftpc->dirs = bigger;
        }
      }


    }
    filename = cur_pos;  /* the rest is the file name */
    break;
  } /* switch */

  if(filename && *filename) {
    CURLcode result =
      Curl_urldecode(conn->data, filename, 0,  &ftpc->file, NULL, TRUE);

    if(result) {
      freedirs(ftpc);
      return result;
    }
  }
  else
    ftpc->file = NULL; /* instead of point to a zero byte, we make it a NULL
                          pointer */

  if(data->set.upload && !ftpc->file && (ftp->transfer == FTPTRANSFER_BODY)) {
    /* We need a file name when uploading. Return error! */
    failf(data, "Uploading to a URL without a file name!");

    return CURLE_URL_MALFORMAT;
  }

  ftpc->cwddone = FALSE; /* default to not done */





  if(ftpc->prevpath) {
    /* prevpath is "raw" so we convert the input path before we compare the
       strings */
    size_t dlen;
    char *path;
    CURLcode result =
      Curl_urldecode(conn->data, ftp->path, 0, &path, &dlen, TRUE);
    if(result) {
      freedirs(ftpc);
      return result;
    }

    dlen -= ftpc->file?strlen(ftpc->file):0;
    if((dlen == strlen(ftpc->prevpath)) &&
       !strncmp(path, ftpc->prevpath, dlen) &&
       (ftpc->prevmethod == data->set.ftp_filemethod)) {
      infof(data, "Request has same path as previous transfer\n");
      ftpc->cwddone = TRUE;
    }
    free(path);
  }



  return CURLE_OK;
}

/* call this when the DO phase has completed */
static CURLcode ftp_dophase_done(struct connectdata *conn,
                                 bool connected)
{







<
<
|
|
|
<
>
|




>
>
>
>
>

<
|

<
<
<
|
<
<
<
<
<
|
|
<
|
|
|
|
<
|
|

|
<
<
<
<
<
<
|
|
>
|
<
|
<
<
<
<
<
|

>
>
>
>
>
|
|
|
<
<
|
|
|
>
>
|
|
|
|
|
|
>
>
>
>
>

>
>
>
>
|
|
|
<
|
|
>
|
|
<
<
<
<
<
|
<
|
|
|
|
>
|
>

<
<



<
|
<
<
|
|
|
<
<
<
<
<
<
<
<
<
<
<


<
<
<
|
<
|
<
<
<
<
<
<
<

|


>
>

<



|
<
<
|
<
<
<
<
<

|
|




>





>
>
>
>
|
<
<
|
<
<
<
|
|
<
<
|
|
|
|
<
|
|
|
<
|
|
>
>







4088
4089
4090
4091
4092
4093
4094


4095
4096
4097

4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109

4110
4111



4112





4113
4114

4115
4116
4117
4118

4119
4120
4121
4122






4123
4124
4125
4126

4127





4128
4129
4130
4131
4132
4133
4134
4135
4136
4137


4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161

4162
4163
4164
4165
4166





4167

4168
4169
4170
4171
4172
4173
4174
4175


4176
4177
4178

4179


4180
4181
4182











4183
4184



4185

4186







4187
4188
4189
4190
4191
4192
4193

4194
4195
4196
4197


4198





4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216


4217



4218
4219


4220
4221
4222
4223

4224
4225
4226

4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
static
CURLcode ftp_parse_url_path(struct connectdata *conn)
{
  struct Curl_easy *data = conn->data;
  /* the ftp struct is already inited in ftp_connect() */
  struct FTP *ftp = data->req.protop;
  struct ftp_conn *ftpc = &conn->proto.ftpc;


  const char *slashPos = NULL;
  const char *fileName = NULL;
  CURLcode result = CURLE_OK;

  char *rawPath = NULL; /* url-decoded "raw" path */
  size_t pathLen = 0;

  ftpc->ctl_valid = FALSE;
  ftpc->cwdfail = FALSE;

  /* url-decode ftp path before further evaluation */
  result = Curl_urldecode(data, ftp->path, 0, &rawPath, &pathLen, TRUE);
  if(result)
    return result;

  switch(data->set.ftp_filemethod) {

    case FTPFILE_NOCWD: /* fastest, but less standard-compliant */




      if((pathLen > 0) && (rawPath[pathLen - 1] != '/'))





          fileName = rawPath;  /* this is a full file path */
      /*

        else: ftpc->file is not used anywhere other than for operations on
              a file. In other words, never for directory operations.
              So we can safely leave filename as NULL here and use it as a
              argument in dir/file decisions.

      */
      break;

    case FTPFILE_SINGLECWD:






      slashPos = strrchr(rawPath, '/');
      if(slashPos) {
        /* get path before last slash, except for / */
        size_t dirlen = slashPos - rawPath;

        if(dirlen == 0)





            dirlen++;

        ftpc->dirs = calloc(1, sizeof(ftpc->dirs[0]));
        if(!ftpc->dirs) {
          free(rawPath);
          return CURLE_OUT_OF_MEMORY;
        }

        ftpc->dirs[0] = calloc(1, dirlen + 1);
        if(!ftpc->dirs[0]) {


          free(rawPath);
          return CURLE_OUT_OF_MEMORY;
        }

        strncpy(ftpc->dirs[0], rawPath, dirlen);
        ftpc->dirdepth = 1; /* we consider it to be a single dir */
        fileName = slashPos + 1; /* rest is file name */
      }
      else
        fileName = rawPath; /* file name only (or empty) */
      break;

    default: /* allow pretty much anything */
    case FTPFILE_MULTICWD: {
      /* current position: begin of next path component */
      const char *curPos = rawPath;

      int dirAlloc = 0; /* number of entries allocated for the 'dirs' array */
      const char *str = rawPath;
      for(; *str != 0; ++str)
        if (*str == '/')
          ++dirAlloc;

      if(dirAlloc > 0) {

        ftpc->dirs = calloc(dirAlloc, sizeof(ftpc->dirs[0]));
        if(!ftpc->dirs) {
          free(rawPath);
          return CURLE_OUT_OF_MEMORY;
        }







        /* parse the URL path into separate path components */
        while((slashPos = strchr(curPos, '/')) != NULL) {
          size_t compLen = slashPos - curPos;

          /* path starts with a slash: add that as a directory */
          if((compLen == 0) && (ftpc->dirdepth == 0))
            ++compLen;



          /* we skip empty path components, like "x//y" since the FTP command
             CWD requires a parameter and a non-existent parameter a) doesn't
             work on many servers and b) has no effect on the others. */

          if(compLen > 0) {


            char *comp = calloc(1, compLen + 1);
            if(!comp) {
              free(rawPath);











              return CURLE_OUT_OF_MEMORY;
            }



            strncpy(comp, curPos, compLen);

            ftpc->dirs[ftpc->dirdepth++] = comp;







          }
          curPos = slashPos + 1;
        }
      }
      DEBUGASSERT(ftpc->dirdepth <= dirAlloc);
      fileName = curPos; /* the rest is the file name (or empty) */
    }

    break;
  } /* switch */

  if(fileName && *fileName)


    ftpc->file = strdup(fileName);





  else
    ftpc->file = NULL; /* instead of point to a zero byte,
                            we make it a NULL pointer */

  if(data->set.upload && !ftpc->file && (ftp->transfer == FTPTRANSFER_BODY)) {
    /* We need a file name when uploading. Return error! */
    failf(data, "Uploading to a URL without a file name!");
    free(rawPath);
    return CURLE_URL_MALFORMAT;
  }

  ftpc->cwddone = FALSE; /* default to not done */

  if((data->set.ftp_filemethod == FTPFILE_NOCWD) && (rawPath[0] == '/'))
    ftpc->cwddone = TRUE; /* skip CWD for absolute paths */
  else { /* newly created FTP connections are already in entry path */
    const char *oldPath = conn->bits.reuse ? ftpc->prevpath : "";
    if(oldPath) {


      size_t n = pathLen;



      if(data->set.ftp_filemethod == FTPFILE_NOCWD)
        n = 0; /* CWD to entry for relative paths */


      else
        n -= ftpc->file?strlen(ftpc->file):0;

      if((strlen(oldPath) == n) && !strncmp(rawPath, oldPath, n)) {

        infof(data, "Request has same path as previous transfer\n");
        ftpc->cwddone = TRUE;
      }

    }
  }

  free(rawPath);
  return CURLE_OK;
}

/* call this when the DO phase has completed */
static CURLcode ftp_dophase_done(struct connectdata *conn,
                                 bool connected)
{
Changes to jni/curl/lib/ftp.h.
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/* ftp_conn is used for struct connection-oriented data in the connectdata
   struct */
struct ftp_conn {
  struct pingpong pp;
  char *entrypath; /* the PWD reply when we logged on */
  char **dirs;   /* realloc()ed array for path components */
  int dirdepth;  /* number of entries used in the 'dirs' array */
  int diralloc;  /* number of entries allocated for the 'dirs' array */
  char *file;    /* decoded file */
  bool dont_check;  /* Set to TRUE to prevent the final (post-transfer)
                       file size and 226/250 status check. It should still
                       read the line, just ignore the result. */
  bool ctl_valid;   /* Tells Curl_ftp_quit() whether or not to do anything. If
                       the connection has timed out or been closed, this
                       should be FALSE when it gets to Curl_ftp_quit() */
  bool cwddone;     /* if it has been determined that the proper CWD combo
                       already has been done */
  int cwdcount;     /* number of CWD commands issued */
  bool cwdfail;     /* set TRUE if a CWD command fails, as then we must prevent
                       caching the current directory */
  bool wait_data_conn; /* this is set TRUE if data connection is waited */
  char *prevpath;   /* conn->path from the previous transfer */
  curl_ftpfile prevmethod; /* ftp method in previous transfer  */
  char transfertype; /* set by ftp_transfertype for use by Curl_client_write()a
                        and others (A/I or zero) */
  int count1; /* general purpose counter for the state machine */
  int count2; /* general purpose counter for the state machine */
  int count3; /* general purpose counter for the state machine */
  ftpstate state; /* always use ftp.c:state() to change state! */
  ftpstate state_saved; /* transfer type saved to be reloaded after







<
|












|
<







117
118
119
120
121
122
123

124
125
126
127
128
129
130
131
132
133
134
135
136
137

138
139
140
141
142
143
144
/* ftp_conn is used for struct connection-oriented data in the connectdata
   struct */
struct ftp_conn {
  struct pingpong pp;
  char *entrypath; /* the PWD reply when we logged on */
  char **dirs;   /* realloc()ed array for path components */
  int dirdepth;  /* number of entries used in the 'dirs' array */

  char *file;    /* url-decoded file name (or path) */
  bool dont_check;  /* Set to TRUE to prevent the final (post-transfer)
                       file size and 226/250 status check. It should still
                       read the line, just ignore the result. */
  bool ctl_valid;   /* Tells Curl_ftp_quit() whether or not to do anything. If
                       the connection has timed out or been closed, this
                       should be FALSE when it gets to Curl_ftp_quit() */
  bool cwddone;     /* if it has been determined that the proper CWD combo
                       already has been done */
  int cwdcount;     /* number of CWD commands issued */
  bool cwdfail;     /* set TRUE if a CWD command fails, as then we must prevent
                       caching the current directory */
  bool wait_data_conn; /* this is set TRUE if data connection is waited */
  char *prevpath;   /* url-decoded conn->path from the previous transfer */

  char transfertype; /* set by ftp_transfertype for use by Curl_client_write()a
                        and others (A/I or zero) */
  int count1; /* general purpose counter for the state machine */
  int count2; /* general purpose counter for the state machine */
  int count3; /* general purpose counter for the state machine */
  ftpstate state; /* always use ftp.c:state() to change state! */
  ftpstate state_saved; /* transfer type saved to be reloaded after
Changes to jni/curl/lib/ftplistparser.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/hostcheck.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/hostip.c.
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
     the time we spent until now! */
  if(prev_alarm) {
    /* there was an alarm() set before us, now put it back */
    timediff_t elapsed_secs = Curl_timediff(Curl_now(),
                                            conn->created) / 1000;

    /* the alarm period is counted in even number of seconds */
    unsigned long alarm_set = prev_alarm - elapsed_secs;

    if(!alarm_set ||
       ((alarm_set >= 0x80000000) && (prev_alarm < 0x80000000)) ) {
      /* if the alarm time-left reached zero or turned "negative" (counted
         with unsigned values), we should fire off a SIGALRM here, but we
         won't, and zero would be to switch it off so we never set it to
         less than 1! */







|







745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
     the time we spent until now! */
  if(prev_alarm) {
    /* there was an alarm() set before us, now put it back */
    timediff_t elapsed_secs = Curl_timediff(Curl_now(),
                                            conn->created) / 1000;

    /* the alarm period is counted in even number of seconds */
    unsigned long alarm_set = (unsigned long)(prev_alarm - elapsed_secs);

    if(!alarm_set ||
       ((alarm_set >= 0x80000000) && (prev_alarm < 0x80000000)) ) {
      /* if the alarm time-left reached zero or turned "negative" (counted
         with unsigned values), we should fire off a SIGALRM here, but we
         won't, and zero would be to switch it off so we never set it to
         less than 1! */
Changes to jni/curl/lib/http.c.
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
    /* HTTP CONNECT in progress: there is no body */
    expectsend = 0;
  }
  else {
    /* figure out how much data we are expected to send */
    switch(data->set.httpreq) {
    case HTTPREQ_POST:
      if(data->state.infilesize != -1)
        expectsend = data->state.infilesize;
      break;
    case HTTPREQ_PUT:
      if(data->state.infilesize != -1)
        expectsend = data->state.infilesize;
      break;
    case HTTPREQ_POST_FORM:
    case HTTPREQ_POST_MIME:
      expectsend = http->postsize;







<
<
<







446
447
448
449
450
451
452



453
454
455
456
457
458
459
    /* HTTP CONNECT in progress: there is no body */
    expectsend = 0;
  }
  else {
    /* figure out how much data we are expected to send */
    switch(data->set.httpreq) {
    case HTTPREQ_POST:



    case HTTPREQ_PUT:
      if(data->state.infilesize != -1)
        expectsend = data->state.infilesize;
      break;
    case HTTPREQ_POST_FORM:
    case HTTPREQ_POST_MIME:
      expectsend = http->postsize;
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
  }

#if !defined(CURL_DISABLE_COOKIES)
  if(data->cookies || addcookies) {
    struct Cookie *co = NULL; /* no cookies from start */
    int count = 0;

    if(data->cookies) {
      Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
      co = Curl_cookie_getlist(data->cookies,
                               conn->allocptr.cookiehost?
                               conn->allocptr.cookiehost:host,
                               data->state.up.path,
                               (conn->handler->protocol&CURLPROTO_HTTPS)?
                               TRUE:FALSE);







|







2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
  }

#if !defined(CURL_DISABLE_COOKIES)
  if(data->cookies || addcookies) {
    struct Cookie *co = NULL; /* no cookies from start */
    int count = 0;

    if(data->cookies && data->state.cookie_engine) {
      Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
      co = Curl_cookie_getlist(data->cookies,
                               conn->allocptr.cookiehost?
                               conn->allocptr.cookiehost:host,
                               data->state.up.path,
                               (conn->handler->protocol&CURLPROTO_HTTPS)?
                               TRUE:FALSE);
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
    result = Curl_add_buffer_send(&req_buffer, conn,
                                  &data->info.request_size, 0, FIRSTSOCKET);

    if(result)
      failf(data, "Failed sending HTTP request");
    else
      /* HTTP GET/HEAD download: */
      Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE,
                          http->postdata?FIRSTSOCKET:-1);
  }
  if(result)
    return result;

  if(data->req.writebytecount) {
    /* if a request-body has been sent off, we make sure this progress is noted
       properly */







|
<







3037
3038
3039
3040
3041
3042
3043
3044

3045
3046
3047
3048
3049
3050
3051
    result = Curl_add_buffer_send(&req_buffer, conn,
                                  &data->info.request_size, 0, FIRSTSOCKET);

    if(result)
      failf(data, "Failed sending HTTP request");
    else
      /* HTTP GET/HEAD download: */
      Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE, -1);

  }
  if(result)
    return result;

  if(data->req.writebytecount) {
    /* if a request-body has been sent off, we make sure this progress is noted
       properly */
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
            k->content_range = TRUE;
        }
      }
      else
        data->state.resume_from = 0; /* get everything */
    }
#if !defined(CURL_DISABLE_COOKIES)
    else if(data->cookies &&
            checkprefix("Set-Cookie:", k->p)) {
      Curl_share_lock(data, CURL_LOCK_DATA_COOKIE,
                      CURL_LOCK_ACCESS_SINGLE);
      Curl_cookie_add(data,
                      data->cookies, TRUE, FALSE, k->p + 11,
                      /* If there is a custom-set Host: name, use it
                         here, or else use real peer host name. */







|







4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
            k->content_range = TRUE;
        }
      }
      else
        data->state.resume_from = 0; /* get everything */
    }
#if !defined(CURL_DISABLE_COOKIES)
    else if(data->cookies && data->state.cookie_engine &&
            checkprefix("Set-Cookie:", k->p)) {
      Curl_share_lock(data, CURL_LOCK_DATA_COOKIE,
                      CURL_LOCK_ACCESS_SINGLE);
      Curl_cookie_add(data,
                      data->cookies, TRUE, FALSE, k->p + 11,
                      /* If there is a custom-set Host: name, use it
                         here, or else use real peer host name. */
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069

4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
      result = Curl_http_input_auth(conn, proxy, auth);

      free(auth);

      if(result)
        return result;
    }
  #ifdef USE_SPNEGO
    else if(checkprefix("Persistent-Auth", k->p)) {
      struct negotiatedata *negdata = &conn->negotiate;
      struct auth *authp = &data->state.authhost;
      if(authp->picked == CURLAUTH_NEGOTIATE) {
        char *persistentauth = Curl_copy_header_value(k->p);
        if(!persistentauth)
          return CURLE_OUT_OF_MEMORY;
        negdata->noauthpersist = checkprefix("false", persistentauth);

        negdata->havenoauthpersist = TRUE;
        infof(data, "Negotiate: noauthpersist -> %d, header part: %s",
          negdata->noauthpersist, persistentauth);
        free(persistentauth);
      }
    }
  #endif
    else if((k->httpcode >= 300 && k->httpcode < 400) &&
            checkprefix("Location:", k->p) &&
            !data->req.location) {
      /* this is the URL that the server advises us to use instead */
      char *location = Curl_copy_header_value(k->p);
      if(!location)
        return CURLE_OUT_OF_MEMORY;







|







|
>






|







4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
      result = Curl_http_input_auth(conn, proxy, auth);

      free(auth);

      if(result)
        return result;
    }
#ifdef USE_SPNEGO
    else if(checkprefix("Persistent-Auth", k->p)) {
      struct negotiatedata *negdata = &conn->negotiate;
      struct auth *authp = &data->state.authhost;
      if(authp->picked == CURLAUTH_NEGOTIATE) {
        char *persistentauth = Curl_copy_header_value(k->p);
        if(!persistentauth)
          return CURLE_OUT_OF_MEMORY;
        negdata->noauthpersist = checkprefix("false", persistentauth)?
          TRUE:FALSE;
        negdata->havenoauthpersist = TRUE;
        infof(data, "Negotiate: noauthpersist -> %d, header part: %s",
          negdata->noauthpersist, persistentauth);
        free(persistentauth);
      }
    }
#endif
    else if((k->httpcode >= 300 && k->httpcode < 400) &&
            checkprefix("Location:", k->p) &&
            !data->req.location) {
      /* this is the URL that the server advises us to use instead */
      char *location = Curl_copy_header_value(k->p);
      if(!location)
        return CURLE_OUT_OF_MEMORY;
Changes to jni/curl/lib/http.h.
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
                                    struct Curl_easy *handle);

/* protocol-specific functions set up to be called by the main engine */
CURLcode Curl_http(struct connectdata *conn, bool *done);
CURLcode Curl_http_done(struct connectdata *, CURLcode, bool premature);
CURLcode Curl_http_connect(struct connectdata *conn, bool *done);

/* The following functions are defined in http_chunks.c */
void Curl_httpchunk_init(struct connectdata *conn);
CHUNKcode Curl_httpchunk_read(struct connectdata *conn, char *datap,
                              ssize_t length, ssize_t *wrote);

/* These functions are in http.c */
CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
                              const char *auth);
CURLcode Curl_http_auth_act(struct connectdata *conn);

/* If only the PICKNONE bit is set, there has been a round-trip and we
   selected to use no auth at all. Ie, we actively select no auth, as opposed







<
<
<
<
<







79
80
81
82
83
84
85





86
87
88
89
90
91
92
                                    struct Curl_easy *handle);

/* protocol-specific functions set up to be called by the main engine */
CURLcode Curl_http(struct connectdata *conn, bool *done);
CURLcode Curl_http_done(struct connectdata *, CURLcode, bool premature);
CURLcode Curl_http_connect(struct connectdata *conn, bool *done);






/* These functions are in http.c */
CURLcode Curl_http_input_auth(struct connectdata *conn, bool proxy,
                              const char *auth);
CURLcode Curl_http_auth_act(struct connectdata *conn);

/* If only the PICKNONE bit is set, there has been a round-trip and we
   selected to use no auth at all. Ie, we actively select no auth, as opposed
Changes to jni/curl/lib/http2.c.
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
static struct Curl_easy *duphandle(struct Curl_easy *data)
{
  struct Curl_easy *second = curl_easy_duphandle(data);
  if(second) {
    /* setup the request struct */
    struct HTTP *http = calloc(1, sizeof(struct HTTP));
    if(!http) {
      (void)Curl_close(second);
      second = NULL;
    }
    else {
      second->req.protop = http;
      http->header_recvbuf = Curl_add_buffer_init();
      if(!http->header_recvbuf) {
        free(http);
        (void)Curl_close(second);
        second = NULL;
      }
      else {
        Curl_http2_setup_req(second);
        second->state.stream_weight = data->state.stream_weight;
      }
    }
  }







|
<






|
<







492
493
494
495
496
497
498
499

500
501
502
503
504
505
506

507
508
509
510
511
512
513
static struct Curl_easy *duphandle(struct Curl_easy *data)
{
  struct Curl_easy *second = curl_easy_duphandle(data);
  if(second) {
    /* setup the request struct */
    struct HTTP *http = calloc(1, sizeof(struct HTTP));
    if(!http) {
      (void)Curl_close(&second);

    }
    else {
      second->req.protop = http;
      http->header_recvbuf = Curl_add_buffer_init();
      if(!http->header_recvbuf) {
        free(http);
        (void)Curl_close(&second);

      }
      else {
        Curl_http2_setup_req(second);
        second->state.stream_weight = data->state.stream_weight;
      }
    }
  }
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
    heads.frame = frame;
    /* ask the application */
    H2BUGF(infof(data, "Got PUSH_PROMISE, ask application!\n"));

    stream = data->req.protop;
    if(!stream) {
      failf(data, "Internal NULL stream!\n");
      (void)Curl_close(newhandle);
      rv = 1;
      goto fail;
    }

    Curl_set_in_callback(data, true);
    rv = data->multi->push_cb(data, newhandle,
                              stream->push_headers_used, &heads,







|







541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
    heads.frame = frame;
    /* ask the application */
    H2BUGF(infof(data, "Got PUSH_PROMISE, ask application!\n"));

    stream = data->req.protop;
    if(!stream) {
      failf(data, "Internal NULL stream!\n");
      (void)Curl_close(&newhandle);
      rv = 1;
      goto fail;
    }

    Curl_set_in_callback(data, true);
    rv = data->multi->push_cb(data, newhandle,
                              stream->push_headers_used, &heads,
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
    stream->push_headers = NULL;
    stream->push_headers_used = 0;

    if(rv) {
      /* denied, kill off the new handle again */
      http2_stream_free(newhandle->req.protop);
      newhandle->req.protop = NULL;
      (void)Curl_close(newhandle);
      goto fail;
    }

    newstream = newhandle->req.protop;
    newstream->stream_id = frame->promised_stream_id;
    newhandle->req.maxdownload = -1;
    newhandle->req.size = -1;

    /* approved, add to the multi handle and immediately switch to PERFORM
       state with the given connection !*/
    rc = Curl_multi_add_perform(data->multi, newhandle, conn);
    if(rc) {
      infof(data, "failed to add handle to multi\n");
      http2_stream_free(newhandle->req.protop);
      newhandle->req.protop = NULL;
      Curl_close(newhandle);
      rv = 1;
      goto fail;
    }

    httpc = &conn->proto.httpc;
    rv = nghttp2_session_set_stream_user_data(httpc->h2,
                                              frame->promised_stream_id,







|















|







563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
    stream->push_headers = NULL;
    stream->push_headers_used = 0;

    if(rv) {
      /* denied, kill off the new handle again */
      http2_stream_free(newhandle->req.protop);
      newhandle->req.protop = NULL;
      (void)Curl_close(&newhandle);
      goto fail;
    }

    newstream = newhandle->req.protop;
    newstream->stream_id = frame->promised_stream_id;
    newhandle->req.maxdownload = -1;
    newhandle->req.size = -1;

    /* approved, add to the multi handle and immediately switch to PERFORM
       state with the given connection !*/
    rc = Curl_multi_add_perform(data->multi, newhandle, conn);
    if(rc) {
      infof(data, "failed to add handle to multi\n");
      http2_stream_free(newhandle->req.protop);
      newhandle->req.protop = NULL;
      Curl_close(&newhandle);
      rv = 1;
      goto fail;
    }

    httpc = &conn->proto.httpc;
    rv = nghttp2_session_set_stream_user_data(httpc->h2,
                                              frame->promised_stream_id,
844
845
846
847
848
849
850

851
852
853
854
855
856
857
    stream = data_s->req.protop;
    if(!stream)
      return NGHTTP2_ERR_CALLBACK_FAILURE;

    stream->closed = TRUE;
    httpc = &conn->proto.httpc;
    drain_this(data_s, httpc);

    httpc->error_code = error_code;

    /* remove the entry from the hash as the stream is now gone */
    rv = nghttp2_session_set_stream_user_data(session, stream_id, 0);
    if(rv) {
      infof(data_s, "http/2: failed to clear user_data for stream %d!\n",
            stream_id);







>







842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
    stream = data_s->req.protop;
    if(!stream)
      return NGHTTP2_ERR_CALLBACK_FAILURE;

    stream->closed = TRUE;
    httpc = &conn->proto.httpc;
    drain_this(data_s, httpc);
    Curl_expire(data_s, 0, EXPIRE_RUN_NOW);
    httpc->error_code = error_code;

    /* remove the entry from the hash as the stream is now gone */
    rv = nghttp2_session_set_stream_user_data(session, stream_id, 0);
    if(rv) {
      infof(data_s, "http/2: failed to clear user_data for stream %d!\n",
            stream_id);
963
964
965
966
967
968
969
970


971
972
973
974
975
976
977
    if(!strcmp(":authority", (const char *)name)) {
      /* pseudo headers are lower case */
      int rc = 0;
      char *check = aprintf("%s:%d", conn->host.name, conn->remote_port);
      if(!check)
        /* no memory */
        return NGHTTP2_ERR_CALLBACK_FAILURE;
      if(!Curl_strcasecompare(check, (const char *)value)) {


        /* This is push is not for the same authority that was asked for in
         * the URL. RFC 7540 section 8.2 says: "A client MUST treat a
         * PUSH_PROMISE for which the server is not authoritative as a stream
         * error of type PROTOCOL_ERROR."
         */
        (void)nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
                                        stream_id, NGHTTP2_PROTOCOL_ERROR);







|
>
>







962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
    if(!strcmp(":authority", (const char *)name)) {
      /* pseudo headers are lower case */
      int rc = 0;
      char *check = aprintf("%s:%d", conn->host.name, conn->remote_port);
      if(!check)
        /* no memory */
        return NGHTTP2_ERR_CALLBACK_FAILURE;
      if(!Curl_strcasecompare(check, (const char *)value) &&
         ((conn->remote_port != conn->given->defport) ||
          !Curl_strcasecompare(conn->host.name, (const char *)value))) {
        /* This is push is not for the same authority that was asked for in
         * the URL. RFC 7540 section 8.2 says: "A client MUST treat a
         * PUSH_PROMISE for which the server is not authoritative as a stream
         * error of type PROTOCOL_ERROR."
         */
        (void)nghttp2_submit_rst_stream(session, NGHTTP2_FLAG_NONE,
                                        stream_id, NGHTTP2_PROTOCOL_ERROR);
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167

static void populate_settings(struct connectdata *conn,
                              struct http_conn *httpc)
{
  nghttp2_settings_entry *iv = httpc->local_settings;

  iv[0].settings_id = NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS;
  iv[0].value = 100;

  iv[1].settings_id = NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE;
  iv[1].value = HTTP2_HUGE_WINDOW_SIZE;

  iv[2].settings_id = NGHTTP2_SETTINGS_ENABLE_PUSH;
  iv[2].value = conn->data->multi->push_cb != NULL;








|







1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168

static void populate_settings(struct connectdata *conn,
                              struct http_conn *httpc)
{
  nghttp2_settings_entry *iv = httpc->local_settings;

  iv[0].settings_id = NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS;
  iv[0].value = (uint32_t)Curl_multi_max_concurrent_streams(conn->data->multi);

  iv[1].settings_id = NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE;
  iv[1].value = HTTP2_HUGE_WINDOW_SIZE;

  iv[2].settings_id = NGHTTP2_SETTINGS_ENABLE_PUSH;
  iv[2].value = conn->data->multi->push_cb != NULL;

1531
1532
1533
1534
1535
1536
1537

1538
1539
1540
1541
1542
1543
1544
    nghttp2_priority_spec pri_spec;
    int rv;

    h2_pri_spec(data, &pri_spec);

    H2BUGF(infof(data, "Queuing PRIORITY on stream %u (easy %p)\n",
                 stream->stream_id, data));

    rv = nghttp2_submit_priority(h2, NGHTTP2_FLAG_NONE, stream->stream_id,
                                 &pri_spec);
    if(rv)
      return rv;
  }

  return nghttp2_session_send(h2);







>







1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
    nghttp2_priority_spec pri_spec;
    int rv;

    h2_pri_spec(data, &pri_spec);

    H2BUGF(infof(data, "Queuing PRIORITY on stream %u (easy %p)\n",
                 stream->stream_id, data));
    DEBUGASSERT(stream->stream_id != -1);
    rv = nghttp2_submit_priority(h2, NGHTTP2_FLAG_NONE, stream->stream_id,
                                 &pri_spec);
    if(rv)
      return rv;
  }

  return nghttp2_session_send(h2);
1655
1656
1657
1658
1659
1660
1661



1662
1663
1664
1665
1666
1667
1668
       not processed all data, it still refers to the buffer in
       nghttp2_session.  If we call nghttp2_session_mem_recv(), we may
       overwrite that buffer.  To avoid that situation, just return
       here with CURLE_AGAIN.  This could be busy loop since data in
       socket is not read.  But it seems that usually streams are
       notified with its drain property, and socket is read again
       quickly. */



    H2BUGF(infof(data, "stream %x is paused, pause id: %x\n",
                 stream->stream_id, httpc->pause_stream_id));
    *err = CURLE_AGAIN;
    return -1;
  }
  else {
    char *inbuf;







>
>
>







1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
       not processed all data, it still refers to the buffer in
       nghttp2_session.  If we call nghttp2_session_mem_recv(), we may
       overwrite that buffer.  To avoid that situation, just return
       here with CURLE_AGAIN.  This could be busy loop since data in
       socket is not read.  But it seems that usually streams are
       notified with its drain property, and socket is read again
       quickly. */
    if(stream->closed)
      /* closed overrides paused */
      return 0;
    H2BUGF(infof(data, "stream %x is paused, pause id: %x\n",
                 stream->stream_id, httpc->pause_stream_id));
    *err = CURLE_AGAIN;
    return -1;
  }
  else {
    char *inbuf;
1769
1770
1771
1772
1773
1774
1775

1776
1777
1778
1779
1780
1781
1782
1783
1784
  return -1;
}

/* Index where :authority header field will appear in request header
   field list. */
#define AUTHORITY_DST_IDX 3


#define HEADER_OVERFLOW(x) \
  (x.namelen > (uint16_t)-1 || x.valuelen > (uint16_t)-1 - x.namelen)

/*
 * Check header memory for the token "trailers".
 * Parse the tokens as separated by comma and surrounded by whitespace.
 * Returns TRUE if found or FALSE if not.
 */
static bool contains_trailers(const char *p, size_t len)







>

|







1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
  return -1;
}

/* Index where :authority header field will appear in request header
   field list. */
#define AUTHORITY_DST_IDX 3

/* USHRT_MAX is 65535 == 0xffff */
#define HEADER_OVERFLOW(x) \
  (x.namelen > 0xffff || x.valuelen > 0xffff - x.namelen)

/*
 * Check header memory for the token "trailers".
 * Parse the tokens as separated by comma and surrounded by whitespace.
 * Returns TRUE if found or FALSE if not.
 */
static bool contains_trailers(const char *p, size_t len)
2020
2021
2022
2023
2024
2025
2026
2027
2028



2029
2030
2031
2032
2033
2034
2035

    if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
      authority_idx = i;
      nva[i].name = (unsigned char *)":authority";
      nva[i].namelen = strlen((char *)nva[i].name);
    }
    else {
      nva[i].name = (unsigned char *)hdbuf;
      nva[i].namelen = (size_t)(end - hdbuf);



    }
    hdbuf = end + 1;
    while(*hdbuf == ' ' || *hdbuf == '\t')
      ++hdbuf;
    end = line_end;

    switch(inspect_header((const char *)nva[i].name, nva[i].namelen, hdbuf,







<

>
>
>







2026
2027
2028
2029
2030
2031
2032

2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043

    if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
      authority_idx = i;
      nva[i].name = (unsigned char *)":authority";
      nva[i].namelen = strlen((char *)nva[i].name);
    }
    else {

      nva[i].namelen = (size_t)(end - hdbuf);
      /* Lower case the header name for HTTP/2 */
      Curl_strntolower((char *)hdbuf, hdbuf, nva[i].namelen);
      nva[i].name = (unsigned char *)hdbuf;
    }
    hdbuf = end + 1;
    while(*hdbuf == ' ' || *hdbuf == '\t')
      ++hdbuf;
    end = line_end;

    switch(inspect_header((const char *)nva[i].name, nva[i].namelen, hdbuf,
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155

  if(should_close_session(httpc)) {
    H2BUGF(infof(conn->data, "http2_send: nothing to do in this session\n"));
    *err = CURLE_HTTP2;
    return -1;
  }

  if(stream->stream_id != -1) {
    /* If whole HEADERS frame was sent off to the underlying socket,
       the nghttp2 library calls data_source_read_callback. But only
       it found that no data available, so it deferred the DATA
       transmission. Which means that nghttp2_session_want_write()
       returns 0 on http2_perform_getsock(), which results that no
       writable socket check is performed. To workaround this, we
       issue nghttp2_session_resume_data() here to bring back DATA
       transmission from deferred state. */
    nghttp2_session_resume_data(h2, stream->stream_id);
  }

  return len;

fail:
  free(nva);
  *err = CURLE_SEND_ERROR;
  return -1;







<
|
|
|
<
|
|
|
|
|
<







2139
2140
2141
2142
2143
2144
2145

2146
2147
2148

2149
2150
2151
2152
2153

2154
2155
2156
2157
2158
2159
2160

  if(should_close_session(httpc)) {
    H2BUGF(infof(conn->data, "http2_send: nothing to do in this session\n"));
    *err = CURLE_HTTP2;
    return -1;
  }


  /* If whole HEADERS frame was sent off to the underlying socket, the nghttp2
     library calls data_source_read_callback. But only it found that no data
     available, so it deferred the DATA transmission. Which means that

     nghttp2_session_want_write() returns 0 on http2_perform_getsock(), which
     results that no writable socket check is performed. To workaround this,
     we issue nghttp2_session_resume_data() here to bring back DATA
     transmission from deferred state. */
  nghttp2_session_resume_data(h2, stream->stream_id);


  return len;

fail:
  free(nva);
  *err = CURLE_SEND_ERROR;
  return -1;
Changes to jni/curl/lib/http_chunks.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
105
106
107
108
109
110
111
112

113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128

129

130
131
132
133
134
135
136
 *
 * This function always uses ASCII hex values to accommodate non-ASCII hosts.
 * For example, 0x0d and 0x0a are used instead of '\r' and '\n'.
 */
CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
                              char *datap,
                              ssize_t datalen,
                              ssize_t *wrotep)

{
  CURLcode result = CURLE_OK;
  struct Curl_easy *data = conn->data;
  struct Curl_chunker *ch = &conn->chunk;
  struct SingleRequest *k = &data->req;
  size_t piece;
  curl_off_t length = (curl_off_t)datalen;
  size_t *wrote = (size_t *)wrotep;

  *wrote = 0; /* nothing's written yet */

  /* the original data is written to the client, but we go on with the
     chunk read process, to properly calculate the content length*/
  if(data->set.http_te_skip && !k->ignorebody) {
    result = Curl_client_write(conn, CLIENTWRITE_BODY, datap, datalen);
    if(result)

      return CHUNKE_WRITE_ERROR;

  }

  while(length) {
    switch(ch->state) {
    case CHUNK_HEX:
      if(Curl_isxdigit_ascii(*datap)) {
        if(ch->hexindex < MAXNUM_SIZE) {







|
>















|
>
|
>







105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
 *
 * This function always uses ASCII hex values to accommodate non-ASCII hosts.
 * For example, 0x0d and 0x0a are used instead of '\r' and '\n'.
 */
CHUNKcode Curl_httpchunk_read(struct connectdata *conn,
                              char *datap,
                              ssize_t datalen,
                              ssize_t *wrotep,
                              CURLcode *extrap)
{
  CURLcode result = CURLE_OK;
  struct Curl_easy *data = conn->data;
  struct Curl_chunker *ch = &conn->chunk;
  struct SingleRequest *k = &data->req;
  size_t piece;
  curl_off_t length = (curl_off_t)datalen;
  size_t *wrote = (size_t *)wrotep;

  *wrote = 0; /* nothing's written yet */

  /* the original data is written to the client, but we go on with the
     chunk read process, to properly calculate the content length*/
  if(data->set.http_te_skip && !k->ignorebody) {
    result = Curl_client_write(conn, CLIENTWRITE_BODY, datap, datalen);
    if(result) {
      *extrap = result;
      return CHUNKE_PASSTHRU_ERROR;
    }
  }

  while(length) {
    switch(ch->state) {
    case CHUNK_HEX:
      if(Curl_isxdigit_ascii(*datap)) {
        if(ch->hexindex < MAXNUM_SIZE) {
193
194
195
196
197
198
199
200

201

202
203
204
205
206
207
208
      /* Write the data portion available */
      if(!conn->data->set.http_te_skip && !k->ignorebody) {
        if(!conn->data->set.http_ce_skip && k->writer_stack)
          result = Curl_unencode_write(conn, k->writer_stack, datap, piece);
        else
          result = Curl_client_write(conn, CLIENTWRITE_BODY, datap, piece);

        if(result)

          return CHUNKE_WRITE_ERROR;

      }

      *wrote += piece;
      ch->datasize -= piece; /* decrease amount left to expect */
      datap += piece;    /* move read pointer forward */
      length -= piece;   /* decrease space left in this round */








|
>
|
>







196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
      /* Write the data portion available */
      if(!conn->data->set.http_te_skip && !k->ignorebody) {
        if(!conn->data->set.http_ce_skip && k->writer_stack)
          result = Curl_unencode_write(conn, k->writer_stack, datap, piece);
        else
          result = Curl_client_write(conn, CLIENTWRITE_BODY, datap, piece);

        if(result) {
          *extrap = result;
          return CHUNKE_PASSTHRU_ERROR;
        }
      }

      *wrote += piece;
      ch->datasize -= piece; /* decrease amount left to expect */
      datap += piece;    /* move read pointer forward */
      length -= piece;   /* decrease space left in this round */

240
241
242
243
244
245
246
247

248

249
250
251
252
253
254
255
            /* Curl_convert_from_network calls failf if unsuccessful */
            /* Treat it as a bad chunk */
            return CHUNKE_BAD_CHUNK;

          if(!data->set.http_te_skip) {
            result = Curl_client_write(conn, CLIENTWRITE_HEADER,
                                       conn->trailer, conn->trlPos);
            if(result)

              return CHUNKE_WRITE_ERROR;

          }
          conn->trlPos = 0;
          ch->state = CHUNK_TRAILER_CR;
          if(*datap == 0x0a)
            /* already on the LF */
            break;
        }







|
>
|
>







245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
            /* Curl_convert_from_network calls failf if unsuccessful */
            /* Treat it as a bad chunk */
            return CHUNKE_BAD_CHUNK;

          if(!data->set.http_te_skip) {
            result = Curl_client_write(conn, CLIENTWRITE_HEADER,
                                       conn->trailer, conn->trlPos);
            if(result) {
              *extrap = result;
              return CHUNKE_PASSTHRU_ERROR;
            }
          }
          conn->trlPos = 0;
          ch->state = CHUNK_TRAILER_CR;
          if(*datap == 0x0a)
            /* already on the LF */
            break;
        }
335
336
337
338
339
340
341
342

343
344
345
346
347
348
349
350
351
    return "OK";
  case CHUNKE_TOO_LONG_HEX:
    return "Too long hexadecimal number";
  case CHUNKE_ILLEGAL_HEX:
    return "Illegal or missing hexadecimal sequence";
  case CHUNKE_BAD_CHUNK:
    return "Malformed encoding found";
  case CHUNKE_WRITE_ERROR:

    return "Write error";
  case CHUNKE_BAD_ENCODING:
    return "Bad content-encoding found";
  case CHUNKE_OUT_OF_MEMORY:
    return "Out of memory";
  }
}

#endif /* CURL_DISABLE_HTTP */







|
>
|








342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
    return "OK";
  case CHUNKE_TOO_LONG_HEX:
    return "Too long hexadecimal number";
  case CHUNKE_ILLEGAL_HEX:
    return "Illegal or missing hexadecimal sequence";
  case CHUNKE_BAD_CHUNK:
    return "Malformed encoding found";
  case CHUNKE_PASSTHRU_ERROR:
    DEBUGASSERT(0); /* never used */
    return "";
  case CHUNKE_BAD_ENCODING:
    return "Bad content-encoding found";
  case CHUNKE_OUT_OF_MEMORY:
    return "Out of memory";
  }
}

#endif /* CURL_DISABLE_HTTP */
Changes to jni/curl/lib/http_chunks.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23



24
25
26
27
28
29
30
#ifndef HEADER_CURL_HTTP_CHUNKS_H
#define HEADER_CURL_HTTP_CHUNKS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/



/*
 * The longest possible hexadecimal number we support in a chunked transfer.
 * Weird enough, RFC2616 doesn't set a maximum size! Since we use strtoul()
 * to convert it, we "only" support 2^32 bytes chunk data.
 */
#define MAXNUM_SIZE 16










|













>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef HEADER_CURL_HTTP_CHUNKS_H
#define HEADER_CURL_HTTP_CHUNKS_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

struct connectdata;

/*
 * The longest possible hexadecimal number we support in a chunked transfer.
 * Weird enough, RFC2616 doesn't set a maximum size! Since we use strtoul()
 * to convert it, we "only" support 2^32 bytes chunk data.
 */
#define MAXNUM_SIZE 16

67
68
69
70
71
72
73
74
75
76

77
78
79
80
81
82
83
84
85
86
87
88
89






90

typedef enum {
  CHUNKE_STOP = -1,
  CHUNKE_OK = 0,
  CHUNKE_TOO_LONG_HEX = 1,
  CHUNKE_ILLEGAL_HEX,
  CHUNKE_BAD_CHUNK,
  CHUNKE_WRITE_ERROR,
  CHUNKE_BAD_ENCODING,
  CHUNKE_OUT_OF_MEMORY,

  CHUNKE_LAST
} CHUNKcode;

const char *Curl_chunked_strerror(CHUNKcode code);

struct Curl_chunker {
  char hexbuffer[ MAXNUM_SIZE + 1];
  int hexindex;
  ChunkyState state;
  curl_off_t datasize;
  size_t dataleft; /* untouched data amount at the end of the last buffer */
};







#endif /* HEADER_CURL_HTTP_CHUNKS_H */







<


>













>
>
>
>
>
>

70
71
72
73
74
75
76

77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99

typedef enum {
  CHUNKE_STOP = -1,
  CHUNKE_OK = 0,
  CHUNKE_TOO_LONG_HEX = 1,
  CHUNKE_ILLEGAL_HEX,
  CHUNKE_BAD_CHUNK,

  CHUNKE_BAD_ENCODING,
  CHUNKE_OUT_OF_MEMORY,
  CHUNKE_PASSTHRU_ERROR, /* Curl_httpchunk_read() returns a CURLcode to use */
  CHUNKE_LAST
} CHUNKcode;

const char *Curl_chunked_strerror(CHUNKcode code);

struct Curl_chunker {
  char hexbuffer[ MAXNUM_SIZE + 1];
  int hexindex;
  ChunkyState state;
  curl_off_t datasize;
  size_t dataleft; /* untouched data amount at the end of the last buffer */
};

/* The following functions are defined in http_chunks.c */
void Curl_httpchunk_init(struct connectdata *conn);
CHUNKcode Curl_httpchunk_read(struct connectdata *conn, char *datap,
                              ssize_t length, ssize_t *wrote,
                              CURLcode *passthru);

#endif /* HEADER_CURL_HTTP_CHUNKS_H */
Changes to jni/curl/lib/http_proxy.c.
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
      return CURLE_OK;

    /* at this point, the tunnel_connecting phase is over. */

    { /* READING RESPONSE PHASE */
      int error = SELECT_OK;

      while(s->keepon && !error) {
        ssize_t gotbytes;

        /* make sure we have space to read more data */
        if(s->ptr >= &s->connect_buffer[CONNECT_BUFFER_SIZE]) {
          failf(data, "CONNECT response too large!");
          return CURLE_RECV_ERROR;
        }







|







323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
      return CURLE_OK;

    /* at this point, the tunnel_connecting phase is over. */

    { /* READING RESPONSE PHASE */
      int error = SELECT_OK;

      while(s->keepon) {
        ssize_t gotbytes;

        /* make sure we have space to read more data */
        if(s->ptr >= &s->connect_buffer[CONNECT_BUFFER_SIZE]) {
          failf(data, "CONNECT response too large!");
          return CURLE_RECV_ERROR;
        }
380
381
382
383
384
385
386

387
388
389
390
391
392
393
394
395
396
397
398
              break;
            }
          }
          else {
            /* chunked-encoded body, so we need to do the chunked dance
               properly to know when the end of the body is reached */
            CHUNKcode r;

            ssize_t tookcareof = 0;

            /* now parse the chunked piece of data so that we can
               properly tell when the stream ends */
            r = Curl_httpchunk_read(conn, s->ptr, 1, &tookcareof);
            if(r == CHUNKE_STOP) {
              /* we're done reading chunks! */
              infof(data, "chunk reading DONE\n");
              s->keepon = FALSE;
              /* we did the full CONNECT treatment, go COMPLETE */
              s->tunnel_state = TUNNEL_COMPLETE;
            }







>




|







380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
              break;
            }
          }
          else {
            /* chunked-encoded body, so we need to do the chunked dance
               properly to know when the end of the body is reached */
            CHUNKcode r;
            CURLcode extra;
            ssize_t tookcareof = 0;

            /* now parse the chunked piece of data so that we can
               properly tell when the stream ends */
            r = Curl_httpchunk_read(conn, s->ptr, 1, &tookcareof, &extra);
            if(r == CHUNKE_STOP) {
              /* we're done reading chunks! */
              infof(data, "chunk reading DONE\n");
              s->keepon = FALSE;
              /* we did the full CONNECT treatment, go COMPLETE */
              s->tunnel_state = TUNNEL_COMPLETE;
            }
451
452
453
454
455
456
457

458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475

476
477
478
479
480
481
482

            if(s->cl) {
              infof(data, "Ignore %" CURL_FORMAT_CURL_OFF_T
                    " bytes of response-body\n", s->cl);
            }
            else if(s->chunked_encoding) {
              CHUNKcode r;


              infof(data, "Ignore chunked response-body\n");

              /* We set ignorebody true here since the chunked
                 decoder function will acknowledge that. Pay
                 attention so that this is cleared again when this
                 function returns! */
              k->ignorebody = TRUE;

              if(s->line_start[1] == '\n') {
                /* this can only be a LF if the letter at index 0
                   was a CR */
                s->line_start++;
              }

              /* now parse the chunked piece of data so that we can
                 properly tell when the stream ends */
              r = Curl_httpchunk_read(conn, s->line_start + 1, 1, &gotbytes);

              if(r == CHUNKE_STOP) {
                /* we're done reading chunks! */
                infof(data, "chunk reading DONE\n");
                s->keepon = FALSE;
                /* we did the full CONNECT treatment, go to COMPLETE */
                s->tunnel_state = TUNNEL_COMPLETE;
              }







>

















|
>







452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485

            if(s->cl) {
              infof(data, "Ignore %" CURL_FORMAT_CURL_OFF_T
                    " bytes of response-body\n", s->cl);
            }
            else if(s->chunked_encoding) {
              CHUNKcode r;
              CURLcode extra;

              infof(data, "Ignore chunked response-body\n");

              /* We set ignorebody true here since the chunked
                 decoder function will acknowledge that. Pay
                 attention so that this is cleared again when this
                 function returns! */
              k->ignorebody = TRUE;

              if(s->line_start[1] == '\n') {
                /* this can only be a LF if the letter at index 0
                   was a CR */
                s->line_start++;
              }

              /* now parse the chunked piece of data so that we can
                 properly tell when the stream ends */
              r = Curl_httpchunk_read(conn, s->line_start + 1, 1, &gotbytes,
                                      &extra);
              if(r == CHUNKE_STOP) {
                /* we're done reading chunks! */
                infof(data, "chunk reading DONE\n");
                s->keepon = FALSE;
                /* we did the full CONNECT treatment, go to COMPLETE */
                s->tunnel_state = TUNNEL_COMPLETE;
              }
Changes to jni/curl/lib/imap.c.
1302
1303
1304
1305
1306
1307
1308

1309
1310
1311
1312
1313
1314
1315
      break;

    case IMAP_LOGIN:
      result = imap_state_login_resp(conn, imapcode, imapc->state);
      break;

    case IMAP_LIST:

      result = imap_state_listsearch_resp(conn, imapcode, imapc->state);
      break;

    case IMAP_SELECT:
      result = imap_state_select_resp(conn, imapcode, imapc->state);
      break;








>







1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
      break;

    case IMAP_LOGIN:
      result = imap_state_login_resp(conn, imapcode, imapc->state);
      break;

    case IMAP_LIST:
    case IMAP_SEARCH:
      result = imap_state_listsearch_resp(conn, imapcode, imapc->state);
      break;

    case IMAP_SELECT:
      result = imap_state_select_resp(conn, imapcode, imapc->state);
      break;

1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
      result = imap_state_append_resp(conn, imapcode, imapc->state);
      break;

    case IMAP_APPEND_FINAL:
      result = imap_state_append_final_resp(conn, imapcode, imapc->state);
      break;

    case IMAP_SEARCH:
      result = imap_state_listsearch_resp(conn, imapcode, imapc->state);
      break;

    case IMAP_LOGOUT:
      /* fallthrough, just stop! */
    default:
      /* internal error */
      state(conn, IMAP_STOP);
      break;
    }







<
<
<
<







1326
1327
1328
1329
1330
1331
1332




1333
1334
1335
1336
1337
1338
1339
      result = imap_state_append_resp(conn, imapcode, imapc->state);
      break;

    case IMAP_APPEND_FINAL:
      result = imap_state_append_final_resp(conn, imapcode, imapc->state);
      break;





    case IMAP_LOGOUT:
      /* fallthrough, just stop! */
    default:
      /* internal error */
      state(conn, IMAP_STOP);
      break;
    }
Changes to jni/curl/lib/ldap.c.
115
116
117
118
119
120
121






122
123
124
125
126
127
128
                          } WHILE_FALSE

  static void _ldap_trace(const char *fmt, ...);
#else
  #define LDAP_TRACE(x)   Curl_nop_stmt
#endif








static CURLcode Curl_ldap(struct connectdata *conn, bool *done);

/*
 * LDAP protocol handler.
 */








>
>
>
>
>
>







115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
                          } WHILE_FALSE

  static void _ldap_trace(const char *fmt, ...);
#else
  #define LDAP_TRACE(x)   Curl_nop_stmt
#endif

#if defined(USE_WIN32_LDAP) && defined(ldap_err2string)
/* Use ansi error strings in UNICODE builds */
#undef ldap_err2string
#define ldap_err2string ldap_err2stringA
#endif


static CURLcode Curl_ldap(struct connectdata *conn, bool *done);

/*
 * LDAP protocol handler.
 */

834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862

863
864
865
866

867
868
869
870
871
872
873
 * yields ludp->lud_dn = "".
 *
 * Defined in RFC4516 section 2.
 */
static int _ldap_url_parse2(const struct connectdata *conn, LDAPURLDesc *ludp)
{
  int rc = LDAP_SUCCESS;
  char *path;
  char *query;
  char *p;
  char *q;
  size_t i;

  if(!conn->data ||
     !conn->data->state.up.path ||
     conn->data->state.up.path[0] != '/' ||
     !strncasecompare("LDAP", conn->data->state.up.scheme, 4))
    return LDAP_INVALID_SYNTAX;

  ludp->lud_scope = LDAP_SCOPE_BASE;
  ludp->lud_port  = conn->remote_port;
  ludp->lud_host  = conn->host.name;

  /* Duplicate the path */
  p = path = strdup(conn->data->state.up.path + 1);
  if(!path)
    return LDAP_NO_MEMORY;

  /* Duplicate the query */

  q = query = strdup(conn->data->state.up.query);
  if(!query) {
    free(path);
    return LDAP_NO_MEMORY;

  }

  /* Parse the DN (Distinguished Name) */
  if(*p) {
    char *dn = p;
    char *unescaped;
    CURLcode result;







|
|
|
|

















|
>
|
|
|
|
>







840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
 * yields ludp->lud_dn = "".
 *
 * Defined in RFC4516 section 2.
 */
static int _ldap_url_parse2(const struct connectdata *conn, LDAPURLDesc *ludp)
{
  int rc = LDAP_SUCCESS;
  char *p;
  char *path;
  char *q = NULL;
  char *query = NULL;
  size_t i;

  if(!conn->data ||
     !conn->data->state.up.path ||
     conn->data->state.up.path[0] != '/' ||
     !strncasecompare("LDAP", conn->data->state.up.scheme, 4))
    return LDAP_INVALID_SYNTAX;

  ludp->lud_scope = LDAP_SCOPE_BASE;
  ludp->lud_port  = conn->remote_port;
  ludp->lud_host  = conn->host.name;

  /* Duplicate the path */
  p = path = strdup(conn->data->state.up.path + 1);
  if(!path)
    return LDAP_NO_MEMORY;

  /* Duplicate the query if present */
  if(conn->data->state.up.query) {
    q = query = strdup(conn->data->state.up.query);
    if(!query) {
      free(path);
      return LDAP_NO_MEMORY;
    }
  }

  /* Parse the DN (Distinguished Name) */
  if(*p) {
    char *dn = p;
    char *unescaped;
    CURLcode result;
Changes to jni/curl/lib/libcurl.plist.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
	<key>CFBundleExecutable</key>
	<string>curl</string>

	<key>CFBundleIdentifier</key>
	<string>se.haxx.curl.libcurl</string>

	<key>CFBundleVersion</key>
	<string>7.66.0</string>

	<key>CFBundleName</key>
	<string>libcurl</string>

	<key>CFBundlePackageType</key>
	<string>FMWK</string>

	<key>CFBundleSignature</key>
	<string>????</string>

	<key>CFBundleShortVersionString</key>
	<string>libcurl 7.66.0</string>

	<key>CFBundleGetInfoString</key>
	<string>libcurl.plist 7.66.0</string>
</dict>
</plist>







|











|


|


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
	<key>CFBundleExecutable</key>
	<string>curl</string>

	<key>CFBundleIdentifier</key>
	<string>se.haxx.curl.libcurl</string>

	<key>CFBundleVersion</key>
	<string>7.67.0</string>

	<key>CFBundleName</key>
	<string>libcurl</string>

	<key>CFBundlePackageType</key>
	<string>FMWK</string>

	<key>CFBundleSignature</key>
	<string>????</string>

	<key>CFBundleShortVersionString</key>
	<string>libcurl 7.67.0</string>

	<key>CFBundleGetInfoString</key>
	<string>libcurl.plist 7.67.0</string>
</dict>
</plist>
Changes to jni/curl/lib/mime.c.
1130
1131
1132
1133
1134
1135
1136


1137
1138
1139
1140
1141
1142
1143

CURLcode Curl_mime_duppart(curl_mimepart *dst, const curl_mimepart *src)
{
  curl_mime *mime;
  curl_mimepart *d;
  const curl_mimepart *s;
  CURLcode res = CURLE_OK;



  /* Duplicate content. */
  switch(src->kind) {
  case MIMEKIND_NONE:
    break;
  case MIMEKIND_DATA:
    res = curl_mime_data(dst, src->data, (size_t) src->datasize);







>
>







1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145

CURLcode Curl_mime_duppart(curl_mimepart *dst, const curl_mimepart *src)
{
  curl_mime *mime;
  curl_mimepart *d;
  const curl_mimepart *s;
  CURLcode res = CURLE_OK;

  DEBUGASSERT(dst);

  /* Duplicate content. */
  switch(src->kind) {
  case MIMEKIND_NONE:
    break;
  case MIMEKIND_DATA:
    res = curl_mime_data(dst, src->data, (size_t) src->datasize);
1180
1181
1182
1183
1184
1185
1186

1187
1188
1189
1190
1191
1192
1193

1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
         so always take ownership. */
      res = curl_mime_headers(dst, hdrs, TRUE);
      if(res)
        curl_slist_free_all(hdrs);
    }
  }


  /* Duplicate other fields. */
  if(dst != NULL)
    dst->encoder = src->encoder;
  else
    res = CURLE_WRITE_ERROR;
  if(!res)
    res = curl_mime_type(dst, src->mimetype);

  if(!res)
    res = curl_mime_name(dst, src->name);
  if(!res)
    res = curl_mime_filename(dst, src->filename);

  /* If an error occurred, rollback. */
  if(res && dst)
    Curl_mime_cleanpart(dst);

  return res;
}

/*
 * Mime build functions.







>
|
<

<
<
<

>






|







1182
1183
1184
1185
1186
1187
1188
1189
1190

1191



1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
         so always take ownership. */
      res = curl_mime_headers(dst, hdrs, TRUE);
      if(res)
        curl_slist_free_all(hdrs);
    }
  }

  if(!res) {
    /* Duplicate other fields. */

    dst->encoder = src->encoder;



    res = curl_mime_type(dst, src->mimetype);
  }
  if(!res)
    res = curl_mime_name(dst, src->name);
  if(!res)
    res = curl_mime_filename(dst, src->filename);

  /* If an error occurred, rollback. */
  if(res)
    Curl_mime_cleanpart(dst);

  return res;
}

/*
 * Mime build functions.
1896
1897
1898
1899
1900
1901
1902
1903







1904
                           struct curl_slist *headers, int take_ownership)
{
  (void) part;
  (void) headers;
  (void) take_ownership;
  return CURLE_NOT_BUILT_IN;
}








#endif /* if disabled */








>
>
>
>
>
>
>

1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
                           struct curl_slist *headers, int take_ownership)
{
  (void) part;
  (void) headers;
  (void) take_ownership;
  return CURLE_NOT_BUILT_IN;
}

CURLcode Curl_mime_add_header(struct curl_slist **slp, const char *fmt, ...)
{
  (void)slp;
  (void)fmt;
  return CURLE_NOT_BUILT_IN;
}

#endif /* if disabled */
Changes to jni/curl/lib/mime.h.
123
124
125
126
127
128
129


130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
  curl_off_t datasize;             /* Expected data size. */
  unsigned int flags;              /* Flags. */
  mime_state state;                /* Current readback state. */
  const mime_encoder *encoder;     /* Content data encoder. */
  mime_encoder_state encstate;     /* Data encoder state. */
};



#if (!defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_MIME)) || \
  !defined(CURL_DISABLE_SMTP) || !defined(CURL_DISABLE_IMAP)

/* Prototypes. */
void Curl_mime_initpart(curl_mimepart *part, struct Curl_easy *easy);
void Curl_mime_cleanpart(curl_mimepart *part);
CURLcode Curl_mime_duppart(curl_mimepart *dst, const curl_mimepart *src);
CURLcode Curl_mime_set_subparts(curl_mimepart *part,
                                curl_mime *subparts, int take_ownership);
CURLcode Curl_mime_prepare_headers(curl_mimepart *part,
                                   const char *contenttype,
                                   const char *disposition,
                                   enum mimestrategy strategy);
curl_off_t Curl_mime_size(curl_mimepart *part);
size_t Curl_mime_read(char *buffer, size_t size, size_t nitems,
                      void *instream);
CURLcode Curl_mime_rewind(curl_mimepart *part);
CURLcode Curl_mime_add_header(struct curl_slist **slp, const char *fmt, ...);
const char *Curl_mime_contenttype(const char *filename);

#else
/* if disabled */
#define Curl_mime_initpart(x,y)
#define Curl_mime_cleanpart(x)
#define Curl_mime_duppart(x,y) CURLE_OK /* Nothing to duplicate. Succeed */
#define Curl_mime_set_subparts(a,b,c) CURLE_NOT_BUILT_IN
#define Curl_mime_prepare_headers(a,b,c,d) CURLE_NOT_BUILT_IN
#define Curl_mime_size(x) (curl_off_t) -1
#define Curl_mime_read NULL
#define Curl_mime_rewind(x) ((void)x, CURLE_NOT_BUILT_IN)
#define Curl_mime_add_header(x,y,...) CURLE_NOT_BUILT_IN
#endif


#endif /* HEADER_CURL_MIME_H */







>
>
|
















<












<




123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148

149
150
151
152
153
154
155
156
157
158
159
160

161
162
163
164
  curl_off_t datasize;             /* Expected data size. */
  unsigned int flags;              /* Flags. */
  mime_state state;                /* Current readback state. */
  const mime_encoder *encoder;     /* Content data encoder. */
  mime_encoder_state encstate;     /* Data encoder state. */
};

CURLcode Curl_mime_add_header(struct curl_slist **slp, const char *fmt, ...);

#if (!defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_MIME)) ||     \
  !defined(CURL_DISABLE_SMTP) || !defined(CURL_DISABLE_IMAP)

/* Prototypes. */
void Curl_mime_initpart(curl_mimepart *part, struct Curl_easy *easy);
void Curl_mime_cleanpart(curl_mimepart *part);
CURLcode Curl_mime_duppart(curl_mimepart *dst, const curl_mimepart *src);
CURLcode Curl_mime_set_subparts(curl_mimepart *part,
                                curl_mime *subparts, int take_ownership);
CURLcode Curl_mime_prepare_headers(curl_mimepart *part,
                                   const char *contenttype,
                                   const char *disposition,
                                   enum mimestrategy strategy);
curl_off_t Curl_mime_size(curl_mimepart *part);
size_t Curl_mime_read(char *buffer, size_t size, size_t nitems,
                      void *instream);
CURLcode Curl_mime_rewind(curl_mimepart *part);

const char *Curl_mime_contenttype(const char *filename);

#else
/* if disabled */
#define Curl_mime_initpart(x,y)
#define Curl_mime_cleanpart(x)
#define Curl_mime_duppart(x,y) CURLE_OK /* Nothing to duplicate. Succeed */
#define Curl_mime_set_subparts(a,b,c) CURLE_NOT_BUILT_IN
#define Curl_mime_prepare_headers(a,b,c,d) CURLE_NOT_BUILT_IN
#define Curl_mime_size(x) (curl_off_t) -1
#define Curl_mime_read NULL
#define Curl_mime_rewind(x) ((void)x, CURLE_NOT_BUILT_IN)

#endif


#endif /* HEADER_CURL_MIME_H */
Changes to jni/curl/lib/multi.c.
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373

  if(Curl_conncache_init(&multi->conn_cache, chashsize))
    goto error;

  Curl_llist_init(&multi->msglist, NULL);
  Curl_llist_init(&multi->pending, NULL);

  multi->multiplexing = CURLPIPE_MULTIPLEX;

  /* -1 means it not set by user, use the default value */
  multi->maxconnects = -1;
  return multi;

  error:








|







359
360
361
362
363
364
365
366
367
368
369
370
371
372
373

  if(Curl_conncache_init(&multi->conn_cache, chashsize))
    goto error;

  Curl_llist_init(&multi->msglist, NULL);
  Curl_llist_init(&multi->pending, NULL);

  multi->multiplexing = TRUE;

  /* -1 means it not set by user, use the default value */
  multi->maxconnects = -1;
  return multi;

  error:

2767
2768
2769
2770
2771
2772
2773










2774
2775
2776
2777
2778
2779
2780
  case CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE:
    break;
  case CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE:
    break;
  case CURLMOPT_PIPELINING_SITE_BL:
    break;
  case CURLMOPT_PIPELINING_SERVER_BL:










    break;
  default:
    res = CURLM_UNKNOWN_OPTION;
    break;
  }
  va_end(param);
  return res;







>
>
>
>
>
>
>
>
>
>







2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
  case CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE:
    break;
  case CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE:
    break;
  case CURLMOPT_PIPELINING_SITE_BL:
    break;
  case CURLMOPT_PIPELINING_SERVER_BL:
    break;
  case CURLMOPT_MAX_CONCURRENT_STREAMS:
    {
      long streams = va_arg(param, long);
      if(streams < 1)
        streams = 100;
      multi->max_concurrent_streams =
          (streams > (long)INITIAL_MAX_CONCURRENT_STREAMS)?
          (long)INITIAL_MAX_CONCURRENT_STREAMS : streams;
    }
    break;
  default:
    res = CURLM_UNKNOWN_OPTION;
    break;
  }
  va_end(param);
  return res;
3206
3207
3208
3209
3210
3211
3212






      }
      if(data->numsocks)
        fprintf(stderr, "\n");
    }
  }
}
#endif













>
>
>
>
>
>
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
      }
      if(data->numsocks)
        fprintf(stderr, "\n");
    }
  }
}
#endif

size_t Curl_multi_max_concurrent_streams(struct Curl_multi *multi)
{
  return multi ? ((size_t)multi->max_concurrent_streams ?
                  (size_t)multi->max_concurrent_streams : 100) : 0;
}
Changes to jni/curl/lib/multihandle.h.
129
130
131
132
133
134
135

136
137
138

  /* timer callback and user data pointer for the *socket() API */
  curl_multi_timer_callback timer_cb;
  void *timer_userp;
  struct curltime timer_lastcall; /* the fixed time for the timeout for the
                                    previous callback */
  bool in_callback;            /* true while executing a callback */

};

#endif /* HEADER_CURL_MULTIHANDLE_H */







>



129
130
131
132
133
134
135
136
137
138
139

  /* timer callback and user data pointer for the *socket() API */
  curl_multi_timer_callback timer_cb;
  void *timer_userp;
  struct curltime timer_lastcall; /* the fixed time for the timeout for the
                                    previous callback */
  bool in_callback;            /* true while executing a callback */
  long max_concurrent_streams; /* max concurrent streams client to support */
};

#endif /* HEADER_CURL_MULTIHANDLE_H */
Changes to jni/curl/lib/multiif.h.
85
86
87
88
89
90
91






92
/*
 * Add a handle and move it into PERFORM state at once. For pushed streams.
 */
CURLMcode Curl_multi_add_perform(struct Curl_multi *multi,
                                 struct Curl_easy *data,
                                 struct connectdata *conn);







#endif /* HEADER_CURL_MULTIIF_H */







>
>
>
>
>
>

85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*
 * Add a handle and move it into PERFORM state at once. For pushed streams.
 */
CURLMcode Curl_multi_add_perform(struct Curl_multi *multi,
                                 struct Curl_easy *data,
                                 struct connectdata *conn);


/* Return the value of the CURLMOPT_MAX_CONCURRENT_STREAMS option
 * If not specified or 0, default would be 100
 */
size_t Curl_multi_max_concurrent_streams(struct Curl_multi *multi);

#endif /* HEADER_CURL_MULTIIF_H */
Changes to jni/curl/lib/netrc.c.
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
    int  netrcbuffsize = (int)sizeof(netrcbuffer);

    while(!done && fgets(netrcbuffer, netrcbuffsize, file)) {
      tok = strtok_r(netrcbuffer, " \t\n", &tok_buf);
      if(tok && *tok == '#')
        /* treat an initial hash as a comment line */
        continue;
      while(!done && tok) {

        if((login && *login) && (password && *password)) {
          done = TRUE;
          break;
        }

        switch(state) {







|







84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
    int  netrcbuffsize = (int)sizeof(netrcbuffer);

    while(!done && fgets(netrcbuffer, netrcbuffsize, file)) {
      tok = strtok_r(netrcbuffer, " \t\n", &tok_buf);
      if(tok && *tok == '#')
        /* treat an initial hash as a comment line */
        continue;
      while(tok) {

        if((login && *login) && (password && *password)) {
          done = TRUE;
          break;
        }

        switch(state) {
Changes to jni/curl/lib/non-ascii.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/lib/parsedate.c.
96
97
98
99
100
101
102

103
104
105
106
107
108
109
110
111
112






113
114
115
116
117
118
119
static int parsedate(const char *date, time_t *output);

#define PARSEDATE_OK     0
#define PARSEDATE_FAIL   -1
#define PARSEDATE_LATER  1
#define PARSEDATE_SOONER 2


#ifndef CURL_DISABLE_PARSEDATE

const char * const Curl_wkday[] =
{"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
static const char * const weekday[] =
{ "Monday", "Tuesday", "Wednesday", "Thursday",
  "Friday", "Saturday", "Sunday" };
const char * const Curl_month[]=
{ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };







struct tzinfo {
  char name[5];
  int offset; /* +/- in minutes */
};

/* Here's a bunch of frequently used time zone names. These were supported







>
|
|


<
<
<



>
>
>
>
>
>







96
97
98
99
100
101
102
103
104
105
106
107



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
static int parsedate(const char *date, time_t *output);

#define PARSEDATE_OK     0
#define PARSEDATE_FAIL   -1
#define PARSEDATE_LATER  1
#define PARSEDATE_SOONER 2

#if !defined(CURL_DISABLE_PARSEDATE) || !defined(CURL_DISABLE_FTP) || \
  !defined(CURL_DISABLE_FILE)
/* These names are also used by FTP and FILE code */
const char * const Curl_wkday[] =
{"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};



const char * const Curl_month[]=
{ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
#endif

#ifndef CURL_DISABLE_PARSEDATE
static const char * const weekday[] =
{ "Monday", "Tuesday", "Wednesday", "Thursday",
  "Friday", "Saturday", "Sunday" };

struct tzinfo {
  char name[5];
  int offset; /* +/- in minutes */
};

/* Here's a bunch of frequently used time zone names. These were supported
Changes to jni/curl/lib/security.c.
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
  size_t total_read = 0;
  curl_socket_t fd = conn->sock[sockindex];

  *err = CURLE_OK;

  /* Handle clear text response. */
  if(conn->sec_complete == 0 || conn->data_prot == PROT_CLEAR)
      return read(fd, buffer, len);

  if(conn->in_buffer.eof_flag) {
    conn->in_buffer.eof_flag = 0;
    return 0;
  }

  bytes_read = buffer_read(&conn->in_buffer, buffer, len);







|







232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
  size_t total_read = 0;
  curl_socket_t fd = conn->sock[sockindex];

  *err = CURLE_OK;

  /* Handle clear text response. */
  if(conn->sec_complete == 0 || conn->data_prot == PROT_CLEAR)
      return sread(fd, buffer, len);

  if(conn->in_buffer.eof_flag) {
    conn->in_buffer.eof_flag = 0;
    return 0;
  }

  bytes_read = buffer_read(&conn->in_buffer, buffer, len);
Changes to jni/curl/lib/setopt.c.
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
#endif
#ifndef CURL_DISABLE_NETRC
  case CURLOPT_NETRC:
    /*
     * Parse the $HOME/.netrc file
     */
    arg = va_arg(param, long);
    if((arg < CURL_NETRC_IGNORED) || (arg > CURL_NETRC_REQUIRED))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.use_netrc = (enum CURL_NETRC_OPTION)arg;
    break;
  case CURLOPT_NETRC_FILE:
    /*
     * Use this file instead of the $HOME/.netrc file
     */







|







311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
#endif
#ifndef CURL_DISABLE_NETRC
  case CURLOPT_NETRC:
    /*
     * Parse the $HOME/.netrc file
     */
    arg = va_arg(param, long);
    if((arg < CURL_NETRC_IGNORED) || (arg >= CURL_NETRC_LAST))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.use_netrc = (enum CURL_NETRC_OPTION)arg;
    break;
  case CURLOPT_NETRC_FILE:
    /*
     * Use this file instead of the $HOME/.netrc file
     */
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
    break;
  case CURLOPT_TIMECONDITION:
    /*
     * Set HTTP time condition. This must be one of the defines in the
     * curl/curl.h header file.
     */
    arg = va_arg(param, long);
    if((arg < CURL_TIMECOND_NONE) || (arg > CURL_TIMECOND_LASTMOD))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.timecondition = (curl_TimeCond)arg;
    break;
  case CURLOPT_TIMEVALUE:
    /*
     * This is the value to compare with the remote document with the
     * method set with CURLOPT_TIMECONDITION







|







338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
    break;
  case CURLOPT_TIMECONDITION:
    /*
     * Set HTTP time condition. This must be one of the defines in the
     * curl/curl.h header file.
     */
    arg = va_arg(param, long);
    if((arg < CURL_TIMECOND_NONE) || (arg >= CURL_TIMECOND_LAST))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.timecondition = (curl_TimeCond)arg;
    break;
  case CURLOPT_TIMEVALUE:
    /*
     * This is the value to compare with the remote document with the
     * method set with CURLOPT_TIMECONDITION
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
      /* clear session cookies */
      Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
      Curl_cookie_clearsess(data->cookies);
      Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
    }
    else if(strcasecompare(argptr, "FLUSH")) {
      /* flush cookies to file, takes care of the locking */
      Curl_flush_cookies(data, 0);
    }
    else if(strcasecompare(argptr, "RELOAD")) {
      /* reload cookies from file */
      Curl_cookie_loadfiles(data);
      break;
    }
    else {







|







748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
      /* clear session cookies */
      Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
      Curl_cookie_clearsess(data->cookies);
      Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
    }
    else if(strcasecompare(argptr, "FLUSH")) {
      /* flush cookies to file, takes care of the locking */
      Curl_flush_cookies(data, FALSE);
    }
    else if(strcasecompare(argptr, "RELOAD")) {
      /* reload cookies from file */
      Curl_cookie_loadfiles(data);
      break;
    }
    else {
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
      ;
    else
#endif
#ifndef USE_NGHTTP2
    if(arg >= CURL_HTTP_VERSION_2)
      return CURLE_UNSUPPORTED_PROTOCOL;
#else
    if(arg > CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE)
      return CURLE_UNSUPPORTED_PROTOCOL;
    if(arg == CURL_HTTP_VERSION_NONE)
      arg = CURL_HTTP_VERSION_2TLS;
#endif
    data->set.httpversion = arg;
    break;








|







814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
      ;
    else
#endif
#ifndef USE_NGHTTP2
    if(arg >= CURL_HTTP_VERSION_2)
      return CURLE_UNSUPPORTED_PROTOCOL;
#else
    if(arg >= CURL_HTTP_VERSION_LAST)
      return CURLE_UNSUPPORTED_PROTOCOL;
    if(arg == CURL_HTTP_VERSION_NONE)
      arg = CURL_HTTP_VERSION_2TLS;
#endif
    data->set.httpversion = arg;
    break;

1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119

#ifndef CURL_DISABLE_FTP
  case CURLOPT_FTP_FILEMETHOD:
    /*
     * How do access files over FTP.
     */
    arg = va_arg(param, long);
    if((arg < CURLFTPMETHOD_DEFAULT) || (arg > CURLFTPMETHOD_SINGLECWD))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.ftp_filemethod = (curl_ftpfile)arg;
    break;
  case CURLOPT_FTPPORT:
    /*
     * Use FTP PORT, this also specifies which IP address to use
     */







|







1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119

#ifndef CURL_DISABLE_FTP
  case CURLOPT_FTP_FILEMETHOD:
    /*
     * How do access files over FTP.
     */
    arg = va_arg(param, long);
    if((arg < CURLFTPMETHOD_DEFAULT) || (arg >= CURLFTPMETHOD_LAST))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.ftp_filemethod = (curl_ftpfile)arg;
    break;
  case CURLOPT_FTPPORT:
    /*
     * Use FTP PORT, this also specifies which IP address to use
     */
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146

  case CURLOPT_FTP_USE_PRET:
    data->set.ftp_use_pret = (0 != va_arg(param, long)) ? TRUE : FALSE;
    break;

  case CURLOPT_FTP_SSL_CCC:
    arg = va_arg(param, long);
    if((arg < CURLFTPSSL_CCC_NONE) || (arg > CURLFTPSSL_CCC_ACTIVE))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.ftp_ccc = (curl_ftpccc)arg;
    break;

  case CURLOPT_FTP_SKIP_PASV_IP:
    /*
     * Enable or disable FTP_SKIP_PASV_IP, which will disable/enable the







|







1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146

  case CURLOPT_FTP_USE_PRET:
    data->set.ftp_use_pret = (0 != va_arg(param, long)) ? TRUE : FALSE;
    break;

  case CURLOPT_FTP_SSL_CCC:
    arg = va_arg(param, long);
    if((arg < CURLFTPSSL_CCC_NONE) || (arg >= CURLFTPSSL_CCC_LAST))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.ftp_ccc = (curl_ftpccc)arg;
    break;

  case CURLOPT_FTP_SKIP_PASV_IP:
    /*
     * Enable or disable FTP_SKIP_PASV_IP, which will disable/enable the
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
    break;

  case CURLOPT_FTPSSLAUTH:
    /*
     * Set a specific auth for FTP-SSL transfers.
     */
    arg = va_arg(param, long);
    if((arg < CURLFTPAUTH_DEFAULT) || (arg > CURLFTPAUTH_TLS))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.ftpsslauth = (curl_ftpauth)arg;
    break;
  case CURLOPT_KRBLEVEL:
    /*
     * A string that defines the kerberos security level.
     */







|







1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
    break;

  case CURLOPT_FTPSSLAUTH:
    /*
     * Set a specific auth for FTP-SSL transfers.
     */
    arg = va_arg(param, long);
    if((arg < CURLFTPAUTH_DEFAULT) || (arg >= CURLFTPAUTH_LAST))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.ftpsslauth = (curl_ftpauth)arg;
    break;
  case CURLOPT_KRBLEVEL:
    /*
     * A string that defines the kerberos security level.
     */
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133

#ifdef USE_SSL
  case CURLOPT_USE_SSL:
    /*
     * Make transfers attempt to use SSL/TLS.
     */
    arg = va_arg(param, long);
    if((arg < CURLUSESSL_NONE) || (arg > CURLUSESSL_ALL))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.use_ssl = (curl_usessl)arg;
    break;

  case CURLOPT_SSL_OPTIONS:
    arg = va_arg(param, long);
    data->set.ssl.enable_beast =







|







2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133

#ifdef USE_SSL
  case CURLOPT_USE_SSL:
    /*
     * Make transfers attempt to use SSL/TLS.
     */
    arg = va_arg(param, long);
    if((arg < CURLUSESSL_NONE) || (arg >= CURLUSESSL_LAST))
      return CURLE_BAD_FUNCTION_ARGUMENT;
    data->set.use_ssl = (curl_usessl)arg;
    break;

  case CURLOPT_SSL_OPTIONS:
    arg = va_arg(param, long);
    data->set.ssl.enable_beast =
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
     * will increment from this new number henceforth.
     */
    data->state.rtsp_next_client_CSeq = va_arg(param, long);
    break;

  case CURLOPT_RTSP_SERVER_CSEQ:
    /* Same as the above, but for server-initiated requests */
    data->state.rtsp_next_client_CSeq = va_arg(param, long);
    break;

  case CURLOPT_INTERLEAVEDATA:
    data->set.rtp_out = va_arg(param, void *);
    break;
  case CURLOPT_INTERLEAVEFUNCTION:
    /* Set the user defined RTP write function */







|







2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
     * will increment from this new number henceforth.
     */
    data->state.rtsp_next_client_CSeq = va_arg(param, long);
    break;

  case CURLOPT_RTSP_SERVER_CSEQ:
    /* Same as the above, but for server-initiated requests */
    data->state.rtsp_next_server_CSeq = va_arg(param, long);
    break;

  case CURLOPT_INTERLEAVEDATA:
    data->set.rtp_out = va_arg(param, void *);
    break;
  case CURLOPT_INTERLEAVEFUNCTION:
    /* Set the user defined RTP write function */
2721
2722
2723
2724
2725
2726
2727

2728
2729
2730
2731
2732
2733
2734
2735
      if(!data->asi)
        return CURLE_OUT_OF_MEMORY;
    }
    argptr = va_arg(param, char *);
    result = Curl_setstropt(&data->set.str[STRING_ALTSVC], argptr);
    if(result)
      return result;

    (void)Curl_altsvc_load(data->asi, argptr);
    break;
  case CURLOPT_ALTSVC_CTRL:
    if(!data->asi) {
      data->asi = Curl_altsvc_init();
      if(!data->asi)
        return CURLE_OUT_OF_MEMORY;
    }







>
|







2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
      if(!data->asi)
        return CURLE_OUT_OF_MEMORY;
    }
    argptr = va_arg(param, char *);
    result = Curl_setstropt(&data->set.str[STRING_ALTSVC], argptr);
    if(result)
      return result;
    if(argptr)
      (void)Curl_altsvc_load(data->asi, argptr);
    break;
  case CURLOPT_ALTSVC_CTRL:
    if(!data->asi) {
      data->asi = Curl_altsvc_init();
      if(!data->asi)
        return CURLE_OUT_OF_MEMORY;
    }
Changes to jni/curl/lib/setup-os400.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SETUP_OS400_H
#define HEADER_CURL_SETUP_OS400_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_SETUP_OS400_H
#define HEADER_CURL_SETUP_OS400_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
202
203
204
205
206
207
208


209
210
211
212
213


214
215
216
217
218
219
220
221
222
223

extern int Curl_os400_connect(int sd, struct sockaddr * destaddr, int addrlen);
extern int Curl_os400_bind(int sd, struct sockaddr * localaddr, int addrlen);
extern int Curl_os400_sendto(int sd, char *buffer, int buflen, int flags,
                             struct sockaddr * dstaddr, int addrlen);
extern int Curl_os400_recvfrom(int sd, char *buffer, int buflen, int flags,
                               struct sockaddr *fromaddr, int *addrlen);



#define connect                 Curl_os400_connect
#define bind                    Curl_os400_bind
#define sendto                  Curl_os400_sendto
#define recvfrom                Curl_os400_recvfrom



#ifdef HAVE_LIBZ
#define zlibVersion             Curl_os400_zlibVersion
#define inflateInit_            Curl_os400_inflateInit_
#define inflateInit2_           Curl_os400_inflateInit2_
#define inflate                 Curl_os400_inflate
#define inflateEnd              Curl_os400_inflateEnd
#endif

#endif /* HEADER_CURL_SETUP_OS400_H */







>
>





>
>










202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227

extern int Curl_os400_connect(int sd, struct sockaddr * destaddr, int addrlen);
extern int Curl_os400_bind(int sd, struct sockaddr * localaddr, int addrlen);
extern int Curl_os400_sendto(int sd, char *buffer, int buflen, int flags,
                             struct sockaddr * dstaddr, int addrlen);
extern int Curl_os400_recvfrom(int sd, char *buffer, int buflen, int flags,
                               struct sockaddr *fromaddr, int *addrlen);
extern int Curl_os400_getpeername(int sd, struct sockaddr *addr, int *addrlen);
extern int Curl_os400_getsockname(int sd, struct sockaddr *addr, int *addrlen);

#define connect                 Curl_os400_connect
#define bind                    Curl_os400_bind
#define sendto                  Curl_os400_sendto
#define recvfrom                Curl_os400_recvfrom
#define getpeername             Curl_os400_getpeername
#define getsockname             Curl_os400_getsockname

#ifdef HAVE_LIBZ
#define zlibVersion             Curl_os400_zlibVersion
#define inflateInit_            Curl_os400_inflateInit_
#define inflateInit2_           Curl_os400_inflateInit2_
#define inflate                 Curl_os400_inflate
#define inflateEnd              Curl_os400_inflateEnd
#endif

#endif /* HEADER_CURL_SETUP_OS400_H */
Changes to jni/curl/lib/smb.c.
678
679
680
681
682
683
684
685

686
687
688
689
690
691
692
  if(!msg)
    return CURLE_OK;

  h = msg;

  switch(smbc->state) {
  case SMB_NEGOTIATE:
    if(h->status || smbc->got < sizeof(*nrsp) + sizeof(smbc->challenge) - 1) {

      connclose(conn, "SMB: negotiation failed");
      return CURLE_COULDNT_CONNECT;
    }
    nrsp = msg;
    memcpy(smbc->challenge, nrsp->bytes, sizeof(smbc->challenge));
    smbc->session_key = smb_swap32(nrsp->session_key);
    result = smb_send_setup(conn);







|
>







678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
  if(!msg)
    return CURLE_OK;

  h = msg;

  switch(smbc->state) {
  case SMB_NEGOTIATE:
    if((smbc->got < sizeof(*nrsp) + sizeof(smbc->challenge) - 1) ||
       h->status) {
      connclose(conn, "SMB: negotiation failed");
      return CURLE_COULDNT_CONNECT;
    }
    nrsp = msg;
    memcpy(smbc->challenge, nrsp->bytes, sizeof(smbc->challenge));
    smbc->session_key = smb_swap32(nrsp->session_key);
    result = smb_send_setup(conn);
Added jni/curl/lib/socketpair.c.












































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "curl_setup.h"
#include "socketpair.h"

#ifndef HAVE_SOCKETPAIR
#ifdef WIN32
/*
 * This is a socketpair() implementation for Windows.
 */
#include <string.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <windows.h>
#include <io.h>
#else
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h> /* IPPROTO_TCP */
#endif
#ifndef INADDR_LOOPBACK
#define INADDR_LOOPBACK 0x7f000001
#endif /* !INADDR_LOOPBACK */
#endif /* !WIN32 */

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

int Curl_socketpair(int domain, int type, int protocol,
                    curl_socket_t socks[2])
{
  union {
    struct sockaddr_in inaddr;
    struct sockaddr addr;
  } a;
  curl_socket_t listener;
  curl_socklen_t addrlen = sizeof(a.inaddr);
  int reuse = 1;
  char data[2][12];
  ssize_t dlen;
  (void)domain;
  (void)type;
  (void)protocol;

  listener = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  if(listener == CURL_SOCKET_BAD)
    return -1;

  memset(&a, 0, sizeof(a));
  a.inaddr.sin_family = AF_INET;
  a.inaddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
  a.inaddr.sin_port = 0;

  socks[0] = socks[1] = CURL_SOCKET_BAD;

  if(setsockopt(listener, SOL_SOCKET, SO_REUSEADDR,
                (char *)&reuse, (curl_socklen_t)sizeof(reuse)) == -1)
    goto error;
  if(bind(listener, &a.addr, sizeof(a.inaddr)) == -1)
    goto error;
  if(getsockname(listener, &a.addr, &addrlen) == -1)
    goto error;
  if(listen(listener, 1) == -1)
    goto error;
  socks[0] = socket(AF_INET, SOCK_STREAM, 0);
  if(socks[0] == CURL_SOCKET_BAD)
    goto error;
  if(connect(socks[0], &a.addr, sizeof(a.inaddr)) == -1)
    goto error;
  socks[1] = accept(listener, NULL, NULL);
  if(socks[1] == CURL_SOCKET_BAD)
    goto error;

  /* verify that nothing else connected */
  msnprintf(data[0], sizeof(data[0]), "%p", socks);
  dlen = strlen(data[0]);
  if(swrite(socks[0], data[0], dlen) != dlen)
    goto error;
  if(sread(socks[1], data[1], sizeof(data[1])) != dlen)
    goto error;
  if(memcmp(data[0], data[1], dlen))
    goto error;

  sclose(listener);
  return 0;

  error:
  sclose(listener);
  sclose(socks[0]);
  sclose(socks[1]);
  return -1;
}

#endif /* ! HAVE_SOCKETPAIR */
Added jni/curl/lib/socketpair.h.








































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#ifndef HEADER_CURL_SOCKETPAIR_H
#define HEADER_CURL_SOCKETPAIR_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "curl_setup.h"
#ifndef HAVE_SOCKETPAIR
int Curl_socketpair(int domain, int type, int protocol,
                    curl_socket_t socks[2]);
#else
#define Curl_socketpair(a,b,c,d) socketpair(a,b,c,d)
#endif

/* Defined here to allow specific build configs to disable it completely */
#define USE_SOCKETPAIR 1

#endif /* HEADER_CURL_SOCKETPAIR_H */
Changes to jni/curl/lib/socks.c.
34
35
36
37
38
39
40

41

42
43
44
45
46
47
48
#include "urldata.h"
#include "sendf.h"
#include "select.h"
#include "connect.h"
#include "timeval.h"
#include "socks.h"


/* The last #include file should be: */

#include "memdebug.h"

/*
 * Helper read-from-socket functions. Does the same as Curl_read() but it
 * blocks until all bytes amount of buffersize will be read. No more, no less.
 *
 * This is STUPID BLOCKING behaviour which we frown upon, but right now this







>
|
>







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "urldata.h"
#include "sendf.h"
#include "select.h"
#include "connect.h"
#include "timeval.h"
#include "socks.h"

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

/*
 * Helper read-from-socket functions. Does the same as Curl_read() but it
 * blocks until all bytes amount of buffersize will be read. No more, no less.
 *
 * This is STUPID BLOCKING behaviour which we frown upon, but right now this
368
369
370
371
372
373
374
375
376

377
378
379
380
381
382
383

    Where:

    o  VER    protocol version: X'05'
    o  REP    Reply field:
    o  X'00' succeeded
  */

  unsigned char socksreq[600]; /* room for large user/pw (255 max each) */

  int idx;
  ssize_t actualread;
  ssize_t written;
  int result;
  CURLcode code;
  curl_socket_t sock = conn->sock[sockindex];
  struct Curl_easy *data = conn->data;







|
|
>







370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386

    Where:

    o  VER    protocol version: X'05'
    o  REP    Reply field:
    o  X'00' succeeded
  */
#define REQUEST_BUFSIZE 600  /* room for large user/pw (255 max each) */
  unsigned char socksreq[REQUEST_BUFSIZE];
  char dest[REQUEST_BUFSIZE] = "unknown";  /* printable hostname:port */
  int idx;
  ssize_t actualread;
  ssize_t written;
  int result;
  CURLcode code;
  curl_socket_t sock = conn->sock[sockindex];
  struct Curl_easy *data = conn->data;
601
602
603
604
605
606
607


608
609
610
611
612
613
614
  socksreq[len++] = 0; /* must be zero */

  if(!socks5_resolve_local) {
    socksreq[len++] = 3; /* ATYP: domain name = 3 */
    socksreq[len++] = (char) hostname_len; /* address length */
    memcpy(&socksreq[len], hostname, hostname_len); /* address str w/o NULL */
    len += hostname_len;


  }
  else {
    struct Curl_dns_entry *dns;
    Curl_addrinfo *hp = NULL;
    int rc = Curl_resolv(conn, hostname, remote_port, FALSE, &dns);

    if(rc == CURLRESOLV_ERROR)







>
>







604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
  socksreq[len++] = 0; /* must be zero */

  if(!socks5_resolve_local) {
    socksreq[len++] = 3; /* ATYP: domain name = 3 */
    socksreq[len++] = (char) hostname_len; /* address length */
    memcpy(&socksreq[len], hostname, hostname_len); /* address str w/o NULL */
    len += hostname_len;
    msnprintf(dest, sizeof(dest), "%s:%d", hostname, remote_port);
    infof(data, "SOCKS5 connect to %s (remotely resolved)\n", dest);
  }
  else {
    struct Curl_dns_entry *dns;
    Curl_addrinfo *hp = NULL;
    int rc = Curl_resolv(conn, hostname, remote_port, FALSE, &dns);

    if(rc == CURLRESOLV_ERROR)
624
625
626
627
628
629
630
631
632






633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
    /*
     * We cannot use 'hostent' as a struct that Curl_resolv() returns.  It
     * returns a Curl_addrinfo pointer that may not always look the same.
     */
    if(dns)
      hp = dns->addr;
    if(hp) {
      char buf[64];
      Curl_printable_address(hp, buf, sizeof(buf));







      if(hp->ai_family == AF_INET) {
        int i;
        struct sockaddr_in *saddr_in;
        socksreq[len++] = 1; /* ATYP: IPv4 = 1 */

        saddr_in = (struct sockaddr_in *)(void *)hp->ai_addr;
        for(i = 0; i < 4; i++) {
          socksreq[len++] = ((unsigned char *)&saddr_in->sin_addr.s_addr)[i];
        }

        infof(data, "SOCKS5 connect to IPv4 %s (locally resolved)\n", buf);
      }
#ifdef ENABLE_IPV6
      else if(hp->ai_family == AF_INET6) {
        int i;
        struct sockaddr_in6 *saddr_in6;
        socksreq[len++] = 4; /* ATYP: IPv6 = 4 */

        saddr_in6 = (struct sockaddr_in6 *)(void *)hp->ai_addr;
        for(i = 0; i < 16; i++) {
          socksreq[len++] =
            ((unsigned char *)&saddr_in6->sin6_addr.s6_addr)[i];
        }

        infof(data, "SOCKS5 connect to IPv6 %s (locally resolved)\n", buf);
      }
#endif
      else {
        hp = NULL; /* fail! */

        failf(data, "SOCKS5 connection to %s not supported\n", buf);
      }

      Curl_resolv_unlock(data, dns); /* not used anymore from now on */
    }
    if(!hp) {
      failf(data, "Failed to resolve \"%s\" for SOCKS5 connect.",
            hostname);







<
|
>
>
>
>
>
>











|













|





|







629
630
631
632
633
634
635

636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
    /*
     * We cannot use 'hostent' as a struct that Curl_resolv() returns.  It
     * returns a Curl_addrinfo pointer that may not always look the same.
     */
    if(dns)
      hp = dns->addr;
    if(hp) {

      if(Curl_printable_address(hp, dest, sizeof(dest))) {
        size_t destlen = strlen(dest);
        msnprintf(dest + destlen, sizeof(dest) - destlen, ":%d", remote_port);
      }
      else {
        strcpy(dest, "unknown");
      }

      if(hp->ai_family == AF_INET) {
        int i;
        struct sockaddr_in *saddr_in;
        socksreq[len++] = 1; /* ATYP: IPv4 = 1 */

        saddr_in = (struct sockaddr_in *)(void *)hp->ai_addr;
        for(i = 0; i < 4; i++) {
          socksreq[len++] = ((unsigned char *)&saddr_in->sin_addr.s_addr)[i];
        }

        infof(data, "SOCKS5 connect to IPv4 %s (locally resolved)\n", dest);
      }
#ifdef ENABLE_IPV6
      else if(hp->ai_family == AF_INET6) {
        int i;
        struct sockaddr_in6 *saddr_in6;
        socksreq[len++] = 4; /* ATYP: IPv6 = 4 */

        saddr_in6 = (struct sockaddr_in6 *)(void *)hp->ai_addr;
        for(i = 0; i < 16; i++) {
          socksreq[len++] =
            ((unsigned char *)&saddr_in6->sin6_addr.s6_addr)[i];
        }

        infof(data, "SOCKS5 connect to IPv6 %s (locally resolved)\n", dest);
      }
#endif
      else {
        hp = NULL; /* fail! */

        failf(data, "SOCKS5 connection to %s not supported\n", dest);
      }

      Curl_resolv_unlock(data, dns); /* not used anymore from now on */
    }
    if(!hp) {
      failf(data, "Failed to resolve \"%s\" for SOCKS5 connect.",
            hostname);
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
      }
    }
#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
  }
#endif

  if(socksreq[1] != 0) { /* Anything besides 0 is an error */
    if(socksreq[3] == 1) {
      failf(data,
            "Can't complete SOCKS5 connection to %d.%d.%d.%d:%d. (%d)",
            (unsigned char)socksreq[4], (unsigned char)socksreq[5],
            (unsigned char)socksreq[6], (unsigned char)socksreq[7],
            (((unsigned char)socksreq[8] << 8) |
             (unsigned char)socksreq[9]),
            (unsigned char)socksreq[1]);
    }
    else if(socksreq[3] == 3) {
      unsigned char port_upper = (unsigned char)socksreq[len - 2];
      socksreq[len - 2] = 0;
      failf(data,
            "Can't complete SOCKS5 connection to %s:%d. (%d)",
            (char *)&socksreq[5],
            ((port_upper << 8) |
             (unsigned char)socksreq[len - 1]),
            (unsigned char)socksreq[1]);
      socksreq[len - 2] = port_upper;
    }
    else if(socksreq[3] == 4) {
      failf(data,
            "Can't complete SOCKS5 connection to %02x%02x:%02x%02x:"
            "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%d. (%d)",
            (unsigned char)socksreq[4], (unsigned char)socksreq[5],
            (unsigned char)socksreq[6], (unsigned char)socksreq[7],
            (unsigned char)socksreq[8], (unsigned char)socksreq[9],
            (unsigned char)socksreq[10], (unsigned char)socksreq[11],
            (unsigned char)socksreq[12], (unsigned char)socksreq[13],
            (unsigned char)socksreq[14], (unsigned char)socksreq[15],
            (unsigned char)socksreq[16], (unsigned char)socksreq[17],
            (unsigned char)socksreq[18], (unsigned char)socksreq[19],
            (((unsigned char)socksreq[20] << 8) |
             (unsigned char)socksreq[21]),
            (unsigned char)socksreq[1]);
    }
    return CURLE_COULDNT_CONNECT;
  }
  infof(data, "SOCKS5 request granted.\n");

  (void)curlx_nonblock(sock, TRUE);
  return CURLE_OK; /* Proxy was successful! */
}

#endif /* CURL_DISABLE_PROXY */







<
<
<
<
<
<
<
<
<
<
<
<
<
|
<
<
<
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<









762
763
764
765
766
767
768













769



770


















771
772
773
774
775
776
777
778
779
      }
    }
#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
  }
#endif

  if(socksreq[1] != 0) { /* Anything besides 0 is an error */













    failf(data, "Can't complete SOCKS5 connection to %s. (%d)",



          dest, (unsigned char)socksreq[1]);


















    return CURLE_COULDNT_CONNECT;
  }
  infof(data, "SOCKS5 request granted.\n");

  (void)curlx_nonblock(sock, TRUE);
  return CURLE_OK; /* Proxy was successful! */
}

#endif /* CURL_DISABLE_PROXY */
Changes to jni/curl/lib/strcase.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
88
89
90
91
92
93
94





































































95
96
97
98
99
100
101
  case 'z':
    return 'Z';
  }
#endif

  return in;
}






































































/*
 * Curl_strcasecompare() is for doing "raw" case insensitive strings. This is
 * meant to be locale independent and only compare strings we know are safe
 * for this.  See
 * https://daniel.haxx.se/blog/2008/10/15/strcasecmp-in-turkish/ for some
 * further explanation to why this function is necessary.







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
  case 'z':
    return 'Z';
  }
#endif

  return in;
}


/* Portable, consistent tolower (remember EBCDIC). Do not use tolower() because
   its behavior is altered by the current locale. */
char Curl_raw_tolower(char in)
{
#if !defined(CURL_DOES_CONVERSIONS)
  if(in >= 'A' && in <= 'Z')
    return (char)('a' + in - 'A');
#else
  switch(in) {
  case 'A':
    return 'a';
  case 'B':
    return 'b';
  case 'C':
    return 'c';
  case 'D':
    return 'd';
  case 'E':
    return 'e';
  case 'F':
    return 'f';
  case 'G':
    return 'g';
  case 'H':
    return 'h';
  case 'I':
    return 'i';
  case 'J':
    return 'j';
  case 'K':
    return 'k';
  case 'L':
    return 'l';
  case 'M':
    return 'm';
  case 'N':
    return 'n';
  case 'O':
    return 'o';
  case 'P':
    return 'p';
  case 'Q':
    return 'q';
  case 'R':
    return 'r';
  case 'S':
    return 's';
  case 'T':
    return 't';
  case 'U':
    return 'u';
  case 'V':
    return 'v';
  case 'W':
    return 'w';
  case 'X':
    return 'x';
  case 'Y':
    return 'y';
  case 'Z':
    return 'z';
  }
#endif

  return in;
}


/*
 * Curl_strcasecompare() is for doing "raw" case insensitive strings. This is
 * meant to be locale independent and only compare strings we know are safe
 * for this.  See
 * https://daniel.haxx.se/blog/2008/10/15/strcasecmp-in-turkish/ for some
 * further explanation to why this function is necessary.
160
161
162
163
164
165
166















167
168
169
170
171
172
173
174
175
176
177
  if(n < 1)
    return;

  do {
    *dest++ = Curl_raw_toupper(*src);
  } while(*src++ && --n);
}
















/* --- public functions --- */

int curl_strequal(const char *first, const char *second)
{
  return Curl_strcasecompare(first, second);
}
int curl_strnequal(const char *first, const char *second, size_t max)
{
  return Curl_strncasecompare(first, second, max);
}







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>











229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
  if(n < 1)
    return;

  do {
    *dest++ = Curl_raw_toupper(*src);
  } while(*src++ && --n);
}

/* Copy a lower case version of the string from src to dest.  The
 * strings may overlap.  No more than n characters of the string are copied
 * (including any NUL) and the destination string will NOT be
 * NUL-terminated if that limit is reached.
 */
void Curl_strntolower(char *dest, const char *src, size_t n)
{
  if(n < 1)
    return;

  do {
    *dest++ = Curl_raw_tolower(*src);
  } while(*src++ && --n);
}

/* --- public functions --- */

int curl_strequal(const char *first, const char *second)
{
  return Curl_strcasecompare(first, second);
}
int curl_strnequal(const char *first, const char *second, size_t max)
{
  return Curl_strncasecompare(first, second, max);
}
Changes to jni/curl/lib/strcase.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_STRCASE_H
#define HEADER_CURL_STRCASE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is









|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef HEADER_CURL_STRCASE_H
#define HEADER_CURL_STRCASE_H
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
36
37
38
39
40
41
42

43
44
45
46
47
48

49
50
#define strncasecompare(a,b,c) Curl_strncasecompare(a,b,c)

int Curl_strcasecompare(const char *first, const char *second);
int Curl_safe_strcasecompare(const char *first, const char *second);
int Curl_strncasecompare(const char *first, const char *second, size_t max);

char Curl_raw_toupper(char in);


/* checkprefix() is a shorter version of the above, used when the first
   argument is zero-byte terminated */
#define checkprefix(a,b)    curl_strnequal(a,b,strlen(a))

void Curl_strntoupper(char *dest, const char *src, size_t n);


#endif /* HEADER_CURL_STRCASE_H */







>






>


36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#define strncasecompare(a,b,c) Curl_strncasecompare(a,b,c)

int Curl_strcasecompare(const char *first, const char *second);
int Curl_safe_strcasecompare(const char *first, const char *second);
int Curl_strncasecompare(const char *first, const char *second, size_t max);

char Curl_raw_toupper(char in);
char Curl_raw_tolower(char in);

/* checkprefix() is a shorter version of the above, used when the first
   argument is zero-byte terminated */
#define checkprefix(a,b)    curl_strnequal(a,b,strlen(a))

void Curl_strntoupper(char *dest, const char *src, size_t n);
void Curl_strntolower(char *dest, const char *src, size_t n);

#endif /* HEADER_CURL_STRCASE_H */
Changes to jni/curl/lib/transfer.c.
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
      if(k->chunk) {
        /*
         * Here comes a chunked transfer flying and we need to decode this
         * properly.  While the name says read, this function both reads
         * and writes away the data. The returned 'nread' holds the number
         * of actual data it wrote to the client.
         */

        CHUNKcode res =
          Curl_httpchunk_read(conn, k->str, nread, &nread);

        if(CHUNKE_OK < res) {
          if(CHUNKE_WRITE_ERROR == res) {
            failf(data, "Failed writing data");
            return CURLE_WRITE_ERROR;
          }
          failf(data, "%s in chunked-encoding", Curl_chunked_strerror(res));
          return CURLE_RECV_ERROR;
        }
        if(CHUNKE_STOP == res) {
          size_t dataleft;
          /* we're done reading chunks! */







|

|


|
|
|







772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
      if(k->chunk) {
        /*
         * Here comes a chunked transfer flying and we need to decode this
         * properly.  While the name says read, this function both reads
         * and writes away the data. The returned 'nread' holds the number
         * of actual data it wrote to the client.
         */
        CURLcode extra;
        CHUNKcode res =
          Curl_httpchunk_read(conn, k->str, nread, &nread, &extra);

        if(CHUNKE_OK < res) {
          if(CHUNKE_PASSTHRU_ERROR == res) {
            failf(data, "Failed reading the chunked-encoded stream");
            return extra;
          }
          failf(data, "%s in chunked-encoding", Curl_chunked_strerror(res));
          return CURLE_RECV_ERROR;
        }
        if(CHUNKE_STOP == res) {
          size_t dataleft;
          /* we're done reading chunks! */
1506
1507
1508
1509
1510
1511
1512

1513
1514
1515
1516
1517
1518
1519
      if(wc->state < CURLWC_INIT) {
        result = Curl_wildcard_init(wc); /* init wildcard structures */
        if(result)
          return CURLE_OUT_OF_MEMORY;
      }
    }
#endif

  }

  return result;
}

/*
 * Curl_posttransfer() is called immediately after a transfer ends







>







1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
      if(wc->state < CURLWC_INIT) {
        result = Curl_wildcard_init(wc); /* init wildcard structures */
        if(result)
          return CURLE_OUT_OF_MEMORY;
      }
    }
#endif
    Curl_http2_init_state(&data->state);
  }

  return result;
}

/*
 * Curl_posttransfer() is called immediately after a transfer ends
1587
1588
1589
1590
1591
1592
1593
1594

1595
1596
1597
1598
1599
1600
1601

  if(Curl_is_absolute_url(newurl, NULL, MAX_SCHEME_LEN))
    /* This is an absolute URL, don't allow the custom port number */
    disallowport = TRUE;

  DEBUGASSERT(data->state.uh);
  uc = curl_url_set(data->state.uh, CURLUPART_URL, newurl,
                    (type == FOLLOW_FAKE) ? CURLU_NON_SUPPORT_SCHEME : 0);

  if(uc) {
    if(type != FOLLOW_FAKE)
      return Curl_uc_to_curlcode(uc);

    /* the URL could not be parsed for some reason, but since this is FAKE
       mode, just duplicate the field as-is */
    newurl = strdup(newurl);







|
>







1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603

  if(Curl_is_absolute_url(newurl, NULL, MAX_SCHEME_LEN))
    /* This is an absolute URL, don't allow the custom port number */
    disallowport = TRUE;

  DEBUGASSERT(data->state.uh);
  uc = curl_url_set(data->state.uh, CURLUPART_URL, newurl,
                    (type == FOLLOW_FAKE) ? CURLU_NON_SUPPORT_SCHEME :
                    ((type == FOLLOW_REDIR) ? CURLU_URLENCODE : 0) );
  if(uc) {
    if(type != FOLLOW_FAKE)
      return Curl_uc_to_curlcode(uc);

    /* the URL could not be parsed for some reason, but since this is FAKE
       mode, just duplicate the field as-is */
    newurl = strdup(newurl);
Changes to jni/curl/lib/url.c.
313
314
315
316
317
318
319
320
321
322

323
324
325



326
327
328
329
330
331
332
 * cleanup and free all resources associated with this sessionhandle.
 *
 * NOTE: if we ever add something that attempts to write to a socket or
 * similar here, we must ignore SIGPIPE first. It is currently only done
 * when curl_easy_perform() is invoked.
 */

CURLcode Curl_close(struct Curl_easy *data)
{
  struct Curl_multi *m;


  if(!data)
    return CURLE_OK;




  Curl_expire_clear(data); /* shut off timers */

  m = data->multi;
  if(m)
    /* This handle is still part of a multi handle, take care of this first
       and detach this handle from there. */







|


>

|

>
>
>







313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
 * cleanup and free all resources associated with this sessionhandle.
 *
 * NOTE: if we ever add something that attempts to write to a socket or
 * similar here, we must ignore SIGPIPE first. It is currently only done
 * when curl_easy_perform() is invoked.
 */

CURLcode Curl_close(struct Curl_easy **datap)
{
  struct Curl_multi *m;
  struct Curl_easy *data;

  if(!datap || !*datap)
    return CURLE_OK;

  data = *datap;
  *datap = NULL;

  Curl_expire_clear(data); /* shut off timers */

  m = data->multi;
  if(m)
    /* This handle is still part of a multi handle, take care of this first
       and detach this handle from there. */
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
  }
  data->change.referer = NULL;

  up_free(data);
  Curl_safefree(data->state.buffer);
  Curl_safefree(data->state.headerbuff);
  Curl_safefree(data->state.ulbuf);
  Curl_flush_cookies(data, 1);
#ifdef USE_ALTSVC
  Curl_altsvc_save(data->asi, data->set.str[STRING_ALTSVC]);
  Curl_altsvc_cleanup(data->asi);
  data->asi = NULL;
#endif
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_CRYPTO_AUTH)
  Curl_http_auth_cleanup_digest(data);







|







374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
  }
  data->change.referer = NULL;

  up_free(data);
  Curl_safefree(data->state.buffer);
  Curl_safefree(data->state.headerbuff);
  Curl_safefree(data->state.ulbuf);
  Curl_flush_cookies(data, TRUE);
#ifdef USE_ALTSVC
  Curl_altsvc_save(data->asi, data->set.str[STRING_ALTSVC]);
  Curl_altsvc_cleanup(data->asi);
  data->asi = NULL;
#endif
#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_CRYPTO_AUTH)
  Curl_http_auth_cleanup_digest(data);
394
395
396
397
398
399
400




401
402
403
404
405
406
407

  /* No longer a dirty share, if it exists */
  if(data->share) {
    Curl_share_lock(data, CURL_LOCK_DATA_SHARE, CURL_LOCK_ACCESS_SINGLE);
    data->share->dirty--;
    Curl_share_unlock(data, CURL_LOCK_DATA_SHARE);
  }





  /* destruct wildcard structures if it is needed */
  Curl_wildcard_dtor(&data->wildcard);
  Curl_freeset(data);
  free(data);
  return CURLE_OK;
}







>
>
>
>







398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415

  /* No longer a dirty share, if it exists */
  if(data->share) {
    Curl_share_lock(data, CURL_LOCK_DATA_SHARE, CURL_LOCK_ACCESS_SINGLE);
    data->share->dirty--;
    Curl_share_unlock(data, CURL_LOCK_DATA_SHARE);
  }

  free(data->req.doh.probe[0].serverdoh.memory);
  free(data->req.doh.probe[1].serverdoh.memory);
  curl_slist_free_all(data->req.doh.headers);

  /* destruct wildcard structures if it is needed */
  Curl_wildcard_dtor(&data->wildcard);
  Curl_freeset(data);
  free(data);
  return CURLE_OK;
}
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
      Curl_initinfo(data);

      /* most recent connection is not yet defined */
      data->state.lastconnect = NULL;

      data->progress.flags |= PGRS_HIDE;
      data->state.current_speed = -1; /* init to negative == impossible */

      Curl_http2_init_state(&data->state);
    }
  }

  if(result) {
    Curl_resolver_cleanup(data->state.resolver);
    free(data->state.buffer);
    free(data->state.headerbuff);







<
<







616
617
618
619
620
621
622


623
624
625
626
627
628
629
      Curl_initinfo(data);

      /* most recent connection is not yet defined */
      data->state.lastconnect = NULL;

      data->progress.flags |= PGRS_HIDE;
      data->state.current_speed = -1; /* init to negative == impossible */


    }
  }

  if(result) {
    Curl_resolver_cleanup(data->state.resolver);
    free(data->state.buffer);
    free(data->state.headerbuff);
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
    infof(data, "Found bundle for host %s: %p [%s]\n",
          hostbundle, (void *)bundle, (bundle->multiuse == BUNDLE_MULTIPLEX ?
                                       "can multiplex" : "serially"));

    /* We can't multiplex if we don't know anything about the server */
    if(canmultiplex) {
      if(bundle->multiuse == BUNDLE_UNKNOWN) {
        if((bundle->multiuse == BUNDLE_UNKNOWN) && data->set.pipewait) {
          infof(data, "Server doesn't support multiplex yet, wait\n");
          *waitpipe = TRUE;
          Curl_conncache_unlock(data);
          return FALSE; /* no re-use */
        }

        infof(data, "Server doesn't support multiplex (yet)\n");







|







1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
    infof(data, "Found bundle for host %s: %p [%s]\n",
          hostbundle, (void *)bundle, (bundle->multiuse == BUNDLE_MULTIPLEX ?
                                       "can multiplex" : "serially"));

    /* We can't multiplex if we don't know anything about the server */
    if(canmultiplex) {
      if(bundle->multiuse == BUNDLE_UNKNOWN) {
        if(data->set.pipewait) {
          infof(data, "Server doesn't support multiplex yet, wait\n");
          *waitpipe = TRUE;
          Curl_conncache_unlock(data);
          return FALSE; /* no re-use */
        }

        infof(data, "Server doesn't support multiplex (yet)\n");
1273
1274
1275
1276
1277
1278
1279
1280





1281

1282
1283
1284
1285
1286
1287
1288
        /* If we are looking for an HTTP+NTLM connection, check if this is
           already authenticating with the right credentials. If not, keep
           looking so that we can reuse NTLM connections if
           possible. (Especially we must not reuse the same connection if
           partway through a handshake!) */
        if(wantNTLMhttp) {
          if(strcmp(needle->user, check->user) ||
             strcmp(needle->passwd, check->passwd))





            continue;

        }
        else if(check->http_ntlm_state != NTLMSTATE_NONE) {
          /* Connection is using NTLM auth but we don't want NTLM */
          continue;
        }

        /* Same for Proxy NTLM authentication */







|
>
>
>
>
>

>







1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
        /* If we are looking for an HTTP+NTLM connection, check if this is
           already authenticating with the right credentials. If not, keep
           looking so that we can reuse NTLM connections if
           possible. (Especially we must not reuse the same connection if
           partway through a handshake!) */
        if(wantNTLMhttp) {
          if(strcmp(needle->user, check->user) ||
             strcmp(needle->passwd, check->passwd)) {

            /* we prefer a credential match, but this is at least a connection
               that can be reused and "upgraded" to NTLM */
            if(check->http_ntlm_state == NTLMSTATE_NONE)
              chosen = check;
            continue;
          }
        }
        else if(check->http_ntlm_state != NTLMSTATE_NONE) {
          /* Connection is using NTLM auth but we don't want NTLM */
          continue;
        }

        /* Same for Proxy NTLM authentication */
1783
1784
1785
1786
1787
1788
1789

1790
1791
1792
1793
1794
1795
1796
1797
1798
1799









1800
1801
1802
1803
1804
1805
1806
    if(!url)
      return CURLE_OUT_OF_MEMORY;
    data->change.url = url;
    data->change.url_alloc = TRUE;
  }

  if(!data->set.uh) {

    uc = curl_url_set(uh, CURLUPART_URL, data->change.url,
                    CURLU_GUESS_SCHEME |
                    CURLU_NON_SUPPORT_SCHEME |
                    (data->set.disallow_username_in_url ?
                     CURLU_DISALLOW_USER : 0) |
                    (data->set.path_as_is ? CURLU_PATH_AS_IS : 0));
    if(uc) {
      DEBUGF(infof(data, "curl_url_set rejected %s\n", data->change.url));
      return Curl_uc_to_curlcode(uc);
    }









  }

  uc = curl_url_get(uh, CURLUPART_SCHEME, &data->state.up.scheme, 0);
  if(uc)
    return Curl_uc_to_curlcode(uc);

  result = findprotocol(data, conn, data->state.up.scheme);







>










>
>
>
>
>
>
>
>
>







1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
    if(!url)
      return CURLE_OUT_OF_MEMORY;
    data->change.url = url;
    data->change.url_alloc = TRUE;
  }

  if(!data->set.uh) {
    char *newurl;
    uc = curl_url_set(uh, CURLUPART_URL, data->change.url,
                    CURLU_GUESS_SCHEME |
                    CURLU_NON_SUPPORT_SCHEME |
                    (data->set.disallow_username_in_url ?
                     CURLU_DISALLOW_USER : 0) |
                    (data->set.path_as_is ? CURLU_PATH_AS_IS : 0));
    if(uc) {
      DEBUGF(infof(data, "curl_url_set rejected %s\n", data->change.url));
      return Curl_uc_to_curlcode(uc);
    }

    /* after it was parsed, get the generated normalized version */
    uc = curl_url_get(uh, CURLUPART_URL, &newurl, 0);
    if(uc)
      return Curl_uc_to_curlcode(uc);
    if(data->change.url_alloc)
      free(data->change.url);
    data->change.url = newurl;
    data->change.url_alloc = TRUE;
  }

  uc = curl_url_get(uh, CURLUPART_SCHEME, &data->state.up.scheme, 0);
  if(uc)
    return Curl_uc_to_curlcode(uc);

  result = findprotocol(data, conn, data->state.up.scheme);
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
    unsigned long port = strtoul(data->state.up.port, NULL, 10);
    conn->port = conn->remote_port = curlx_ultous(port);
  }

  (void)curl_url_get(uh, CURLUPART_QUERY, &data->state.up.query, 0);

  hostname = data->state.up.hostname;
  if(!hostname)
    /* this is for file:// transfers, get a dummy made */
    hostname = (char *)"";

  if(hostname[0] == '[') {
    /* This looks like an IPv6 address literal. See if there is an address
       scope. */
    size_t hlen;
    conn->bits.ipv6_ip = TRUE;
    /* cut off the brackets! */
    hostname++;
    hlen = strlen(hostname);
    hostname[hlen - 1] = 0;

    zonefrom_url(uh, conn);
  }

  /* make sure the connect struct gets its own copy of the host name */
  conn->host.rawalloc = strdup(hostname);
  if(!conn->host.rawalloc)
    return CURLE_OUT_OF_MEMORY;
  conn->host.name = conn->host.rawalloc;

  if(data->set.scope_id)
    /* Override any scope that was set above.  */
    conn->scope_id = data->set.scope_id;







<
<
<
<
|













|







1881
1882
1883
1884
1885
1886
1887




1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
    unsigned long port = strtoul(data->state.up.port, NULL, 10);
    conn->port = conn->remote_port = curlx_ultous(port);
  }

  (void)curl_url_get(uh, CURLUPART_QUERY, &data->state.up.query, 0);

  hostname = data->state.up.hostname;




  if(hostname && hostname[0] == '[') {
    /* This looks like an IPv6 address literal. See if there is an address
       scope. */
    size_t hlen;
    conn->bits.ipv6_ip = TRUE;
    /* cut off the brackets! */
    hostname++;
    hlen = strlen(hostname);
    hostname[hlen - 1] = 0;

    zonefrom_url(uh, conn);
  }

  /* make sure the connect struct gets its own copy of the host name */
  conn->host.rawalloc = strdup(hostname ? hostname : "");
  if(!conn->host.rawalloc)
    return CURLE_OUT_OF_MEMORY;
  conn->host.name = conn->host.rawalloc;

  if(data->set.scope_id)
    /* Override any scope that was set above.  */
    conn->scope_id = data->set.scope_id;
1965
1966
1967
1968
1969
1970
1971


1972
1973
1974
1975
1976
1977
1978
 * Curl_easy for this single request.
 */

void Curl_free_request_state(struct Curl_easy *data)
{
  Curl_safefree(data->req.protop);
  Curl_safefree(data->req.newurl);


}


#ifndef CURL_DISABLE_PROXY
/****************************************************************
* Checks if the host is in the noproxy list. returns true if it matches
* and therefore the proxy should NOT be used.







>
>







1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
 * Curl_easy for this single request.
 */

void Curl_free_request_state(struct Curl_easy *data)
{
  Curl_safefree(data->req.protop);
  Curl_safefree(data->req.newurl);
  Curl_close(&data->req.doh.probe[0].easy);
  Curl_close(&data->req.doh.probe[1].easy);
}


#ifndef CURL_DISABLE_PROXY
/****************************************************************
* Checks if the host is in the noproxy list. returns true if it matches
* and therefore the proxy should NOT be used.
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
  /* Store the default password */
  if(!conn->passwd) {
    conn->passwd = strdup(setpasswd);
    if(!conn->passwd)
      result = CURLE_OUT_OF_MEMORY;
  }

  /* if there's a user without password, consider password blank */
  if(conn->user && !conn->passwd) {
    conn->passwd = strdup("");
    if(!conn->passwd)
      result = CURLE_OUT_OF_MEMORY;
  }

  return result;
}

/*
 * Parses a "host:port" string to connect to.
 * The hostname and the port may be empty; in this case, NULL is returned for
 * the hostname and -1 for the port.







<
<
<
<
<
<
<







2770
2771
2772
2773
2774
2775
2776







2777
2778
2779
2780
2781
2782
2783
  /* Store the default password */
  if(!conn->passwd) {
    conn->passwd = strdup(setpasswd);
    if(!conn->passwd)
      result = CURLE_OUT_OF_MEMORY;
  }








  return result;
}

/*
 * Parses a "host:port" string to connect to.
 * The hostname and the port may be empty; in this case, NULL is returned for
 * the hostname and -1 for the port.
3515
3516
3517
3518
3519
3520
3521




3522
3523
3524
3525
3526
3527
3528
    data->set.str[STRING_SSL_CIPHER_LIST_ORIG];
  data->set.proxy_ssl.primary.cipher_list =
    data->set.str[STRING_SSL_CIPHER_LIST_PROXY];
  data->set.ssl.primary.cipher_list13 =
    data->set.str[STRING_SSL_CIPHER13_LIST_ORIG];
  data->set.proxy_ssl.primary.cipher_list13 =
    data->set.str[STRING_SSL_CIPHER13_LIST_PROXY];





  data->set.ssl.CRLfile = data->set.str[STRING_SSL_CRLFILE_ORIG];
  data->set.proxy_ssl.CRLfile = data->set.str[STRING_SSL_CRLFILE_PROXY];
  data->set.ssl.issuercert = data->set.str[STRING_SSL_ISSUERCERT_ORIG];
  data->set.proxy_ssl.issuercert = data->set.str[STRING_SSL_ISSUERCERT_PROXY];
  data->set.ssl.cert = data->set.str[STRING_CERT_ORIG];
  data->set.proxy_ssl.cert = data->set.str[STRING_CERT_PROXY];







>
>
>
>







3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
    data->set.str[STRING_SSL_CIPHER_LIST_ORIG];
  data->set.proxy_ssl.primary.cipher_list =
    data->set.str[STRING_SSL_CIPHER_LIST_PROXY];
  data->set.ssl.primary.cipher_list13 =
    data->set.str[STRING_SSL_CIPHER13_LIST_ORIG];
  data->set.proxy_ssl.primary.cipher_list13 =
    data->set.str[STRING_SSL_CIPHER13_LIST_PROXY];
  data->set.ssl.primary.pinned_key =
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG];
  data->set.proxy_ssl.primary.pinned_key =
    data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY];

  data->set.ssl.CRLfile = data->set.str[STRING_SSL_CRLFILE_ORIG];
  data->set.proxy_ssl.CRLfile = data->set.str[STRING_SSL_CRLFILE_PROXY];
  data->set.ssl.issuercert = data->set.str[STRING_SSL_ISSUERCERT_ORIG];
  data->set.proxy_ssl.issuercert = data->set.str[STRING_SSL_ISSUERCERT_PROXY];
  data->set.ssl.cert = data->set.str[STRING_CERT_ORIG];
  data->set.proxy_ssl.cert = data->set.str[STRING_CERT_PROXY];
3811
3812
3813
3814
3815
3816
3817


3818
3819
3820
3821
3822
3823
3824
3825
    conn->bits.tcpconnect[FIRSTSOCKET] = FALSE;
    result = Curl_connecthost(conn, conn->dns_entry);
    if(result)
      return result;
  }
  else {
    Curl_pgrsTime(data, TIMER_CONNECT);    /* we're connected already */


    Curl_pgrsTime(data, TIMER_APPCONNECT); /* we're connected already */
    conn->bits.tcpconnect[FIRSTSOCKET] = TRUE;
    *protocol_done = TRUE;
    Curl_updateconninfo(conn, conn->sock[FIRSTSOCKET]);
    Curl_verboseconnect(conn);
  }

  conn->now = Curl_now(); /* time this *after* the connect is done, we set







>
>
|







3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
    conn->bits.tcpconnect[FIRSTSOCKET] = FALSE;
    result = Curl_connecthost(conn, conn->dns_entry);
    if(result)
      return result;
  }
  else {
    Curl_pgrsTime(data, TIMER_CONNECT);    /* we're connected already */
    if(conn->ssl[FIRSTSOCKET].use ||
       (conn->handler->protocol & PROTO_FAMILY_SSH))
      Curl_pgrsTime(data, TIMER_APPCONNECT); /* we're connected already */
    conn->bits.tcpconnect[FIRSTSOCKET] = TRUE;
    *protocol_done = TRUE;
    Curl_updateconninfo(conn, conn->sock[FIRSTSOCKET]);
    Curl_verboseconnect(conn);
  }

  conn->now = Curl_now(); /* time this *after* the connect is done, we set
Changes to jni/curl/lib/url.h.
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

CURLcode Curl_init_do(struct Curl_easy *data, struct connectdata *conn);
CURLcode Curl_open(struct Curl_easy **curl);
CURLcode Curl_init_userdefined(struct Curl_easy *data);

void Curl_freeset(struct Curl_easy * data);
CURLcode Curl_uc_to_curlcode(CURLUcode uc);
CURLcode Curl_close(struct Curl_easy *data); /* opposite of curl_open() */
CURLcode Curl_connect(struct Curl_easy *, bool *async, bool *protocol_connect);
CURLcode Curl_disconnect(struct Curl_easy *data,
                         struct connectdata *, bool dead_connection);
CURLcode Curl_setup_conn(struct connectdata *conn,
                         bool *protocol_done);
void Curl_free_request_state(struct Curl_easy *data);
CURLcode Curl_parse_login_details(const char *login, const size_t len,







|







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

CURLcode Curl_init_do(struct Curl_easy *data, struct connectdata *conn);
CURLcode Curl_open(struct Curl_easy **curl);
CURLcode Curl_init_userdefined(struct Curl_easy *data);

void Curl_freeset(struct Curl_easy * data);
CURLcode Curl_uc_to_curlcode(CURLUcode uc);
CURLcode Curl_close(struct Curl_easy **datap); /* opposite of curl_open() */
CURLcode Curl_connect(struct Curl_easy *, bool *async, bool *protocol_connect);
CURLcode Curl_disconnect(struct Curl_easy *data,
                         struct connectdata *, bool dead_connection);
CURLcode Curl_setup_conn(struct connectdata *conn,
                         bool *protocol_done);
void Curl_free_request_state(struct Curl_easy *data);
CURLcode Curl_parse_login_details(const char *login, const size_t len,
Changes to jni/curl/lib/urlapi.c.
60
61
62
63
64
65
66

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

85
86
87
88
89
90
91
  char *zoneid; /* for numerical IPv6 addresses */
  char *port;
  char *path;
  char *query;
  char *fragment;

  char *scratch; /* temporary scratch area */

  long portnum; /* the numerical version */
};

#define DEFAULT_SCHEME "https"

static void free_urlhandle(struct Curl_URL *u)
{
  free(u->scheme);
  free(u->user);
  free(u->password);
  free(u->options);
  free(u->host);
  free(u->zoneid);
  free(u->port);
  free(u->path);
  free(u->query);
  free(u->fragment);
  free(u->scratch);

}

/* move the full contents of one handle onto another and
   free the original */
static void mv_urlhandle(struct Curl_URL *from,
                         struct Curl_URL *to)
{







>


















>







60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
  char *zoneid; /* for numerical IPv6 addresses */
  char *port;
  char *path;
  char *query;
  char *fragment;

  char *scratch; /* temporary scratch area */
  char *temppath; /* temporary path pointer */
  long portnum; /* the numerical version */
};

#define DEFAULT_SCHEME "https"

static void free_urlhandle(struct Curl_URL *u)
{
  free(u->scheme);
  free(u->user);
  free(u->password);
  free(u->options);
  free(u->host);
  free(u->zoneid);
  free(u->port);
  free(u->path);
  free(u->query);
  free(u->fragment);
  free(u->scratch);
  free(u->temppath);
}

/* move the full contents of one handle onto another and
   free the original */
static void mv_urlhandle(struct Curl_URL *from,
                         struct Curl_URL *to)
{
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
        }
      }
    }
  }
  else {
    /* We got a new absolute path for this server */

    if((relurl[0] == '/') && (relurl[1] == '/')) {
      /* the new URL starts with //, just keep the protocol part from the
         original one */
      *protsep = 0;
      useurl = &relurl[2]; /* we keep the slashes from the original, so we
                              skip the new ones */
      host_changed = TRUE;
    }







|







349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
        }
      }
    }
  }
  else {
    /* We got a new absolute path for this server */

    if(relurl[1] == '/') {
      /* the new URL starts with //, just keep the protocol part from the
         original one */
      *protsep = 0;
      useurl = &relurl[2]; /* we keep the slashes from the original, so we
                              skip the new ones */
      host_changed = TRUE;
    }
592
593
594
595
596
597
598

599

600


601
602
603
604
605
606
607

static CURLUcode hostname_check(struct Curl_URL *u, char *hostname)
{
  size_t len;
  size_t hlen = strlen(hostname);

  if(hostname[0] == '[') {

    char dest[16]; /* fits a binary IPv6 address */

    const char *l = "0123456789abcdefABCDEF:.";


    hostname++;
    hlen -= 2;

    if(hostname[hlen] != ']')
      return CURLUE_MALFORMED_INPUT;

    /* only valid letters are ok */







>

>

>
>







594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613

static CURLUcode hostname_check(struct Curl_URL *u, char *hostname)
{
  size_t len;
  size_t hlen = strlen(hostname);

  if(hostname[0] == '[') {
#ifdef ENABLE_IPV6
    char dest[16]; /* fits a binary IPv6 address */
#endif
    const char *l = "0123456789abcdefABCDEF:.";
    if(hlen < 5) /* '[::1]' is the shortest possible valid string */
      return CURLUE_MALFORMED_INPUT;
    hostname++;
    hlen -= 2;

    if(hostname[hlen] != ']')
      return CURLUE_MALFORMED_INPUT;

    /* only valid letters are ok */
780
781
782
783
784
785
786

787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811





812
813
814
815
816
817
818
      schemep = schemebuf;
      if(!Curl_builtin_scheme(schemep) &&
         !(flags & CURLU_NON_SUPPORT_SCHEME))
        return CURLUE_UNSUPPORTED_SCHEME;

      if(junkscan(schemep))
        return CURLUE_MALFORMED_INPUT;

    }
    else {
      /* no scheme! */

      if(!(flags & (CURLU_DEFAULT_SCHEME|CURLU_GUESS_SCHEME)))
        return CURLUE_MALFORMED_INPUT;
      if(flags & CURLU_DEFAULT_SCHEME)
        schemep = (char *) DEFAULT_SCHEME;

      /*
       * The URL was badly formatted, let's try without scheme specified.
       */
      p = url;
    }
    hostp = p; /* host name starts here */

    while(*p && !HOSTNAME_END(*p)) /* find end of host name */
      p++;

    len = p - hostp;
    if(!len)
      return CURLUE_MALFORMED_INPUT;

    memcpy(hostname, hostp, len);
    hostname[len] = 0;






    if((flags & CURLU_GUESS_SCHEME) && !schemep) {
      /* legacy curl-style guess based on host name */
      if(checkprefix("ftp.", hostname))
        schemep = (char *)"ftp";
      else if(checkprefix("dict.", hostname))
        schemep = (char *)"dict";







>




















|
<
<
|
|
>
>
>
>
>







786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814


815
816
817
818
819
820
821
822
823
824
825
826
827
828
      schemep = schemebuf;
      if(!Curl_builtin_scheme(schemep) &&
         !(flags & CURLU_NON_SUPPORT_SCHEME))
        return CURLUE_UNSUPPORTED_SCHEME;

      if(junkscan(schemep))
        return CURLUE_MALFORMED_INPUT;

    }
    else {
      /* no scheme! */

      if(!(flags & (CURLU_DEFAULT_SCHEME|CURLU_GUESS_SCHEME)))
        return CURLUE_MALFORMED_INPUT;
      if(flags & CURLU_DEFAULT_SCHEME)
        schemep = (char *) DEFAULT_SCHEME;

      /*
       * The URL was badly formatted, let's try without scheme specified.
       */
      p = url;
    }
    hostp = p; /* host name starts here */

    while(*p && !HOSTNAME_END(*p)) /* find end of host name */
      p++;

    len = p - hostp;
    if(len) {


      memcpy(hostname, hostp, len);
      hostname[len] = 0;
    }
    else {
      if(!(flags & CURLU_NO_AUTHORITY))
        return CURLUE_MALFORMED_INPUT;
    }

    if((flags & CURLU_GUESS_SCHEME) && !schemep) {
      /* legacy curl-style guess based on host name */
      if(checkprefix("ftp.", hostname))
        schemep = (char *)"ftp";
      else if(checkprefix("dict.", hostname))
        schemep = (char *)"dict";
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861



862






























863
864


865
866
867
868
869
870
871
872
873
874

875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891




892
893
894

895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920

  /* if this is a known scheme, get some details */
  h = Curl_builtin_scheme(u->scheme);

  if(junkscan(path))
    return CURLUE_MALFORMED_INPUT;

  query = strchr(path, '?');
  if(query)
    *query++ = 0;

  fragment = strchr(query?query:path, '#');
  if(fragment)
    *fragment++ = 0;

  if(!path[0])
    /* if there's no path set, unset */
    path = NULL;
  else if(!(flags & CURLU_PATH_AS_IS)) {
    /* sanitise paths and remove ../ and ./ sequences according to RFC3986 */
    char *newp = Curl_dedotdotify(path);
    if(!newp)
      return CURLUE_OUT_OF_MEMORY;


































    if(strcmp(newp, path)) {
      /* if we got a new version */


      path = newp;
      path_alloced = TRUE;
    }
    else
      free(newp);
  }
  if(path) {
    u->path = path_alloced?path:strdup(path);
    if(!u->path)
      return CURLUE_OUT_OF_MEMORY;

  }

  if(hostname) {
    /*
     * Parse the login details and strip them out of the host name.
     */
    if(junkscan(hostname))
      return CURLUE_MALFORMED_INPUT;

    result = parse_hostname_login(u, h, &hostname, flags);
    if(result)
      return result;

    result = Curl_parse_port(u, hostname);
    if(result)
      return result;





    result = hostname_check(u, hostname);
    if(result)
      return result;


    u->host = strdup(hostname);
    if(!u->host)
      return CURLUE_OUT_OF_MEMORY;
  }

  if(query) {
    u->query = strdup(query);
    if(!u->query)
      return CURLUE_OUT_OF_MEMORY;
  }
  if(fragment && fragment[0]) {
    u->fragment = strdup(fragment);
    if(!u->fragment)
      return CURLUE_OUT_OF_MEMORY;
  }

  free(u->scratch);
  u->scratch = NULL;

  return CURLUE_OK;
}

/*
 * Parse the URL and set the relevant members of the Curl_URL struct.
 */







<
<
<
|
<
<
<
|
<
<
<
<
<
|


>
>
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
>
>
|
|
|
|
|
|
|



>

















>
>
>
>
|
|
|
>






<
<
<
<
<
<
<
<
<
<
<
|
|







849
850
851
852
853
854
855



856



857





858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940











941
942
943
944
945
946
947
948
949

  /* if this is a known scheme, get some details */
  h = Curl_builtin_scheme(u->scheme);

  if(junkscan(path))
    return CURLUE_MALFORMED_INPUT;




  if((flags & CURLU_URLENCODE) && path[0]) {



    /* worst case output length is 3x the original! */





    char *newp = malloc(strlen(path) * 3);
    if(!newp)
      return CURLUE_OUT_OF_MEMORY;
    path_alloced = TRUE;
    strcpy_url(newp, path, TRUE); /* consider it relative */
    u->temppath = path = newp;
  }

  fragment = strchr(path, '#');
  if(fragment) {
    *fragment++ = 0;
    if(fragment[0]) {
      u->fragment = strdup(fragment);
      if(!u->fragment)
        return CURLUE_OUT_OF_MEMORY;
    }
  }

  query = strchr(path, '?');
  if(query) {
    *query++ = 0;
    /* done even if the query part is a blank string */
    u->query = strdup(query);
    if(!u->query)
      return CURLUE_OUT_OF_MEMORY;
  }

  if(!path[0])
    /* if there's no path left set, unset */
    path = NULL;
  else {
    if(!(flags & CURLU_PATH_AS_IS)) {
      /* remove ../ and ./ sequences according to RFC3986 */
      char *newp = Curl_dedotdotify(path);
      if(!newp)
        return CURLUE_OUT_OF_MEMORY;

      if(strcmp(newp, path)) {
        /* if we got a new version */
        if(path_alloced)
          Curl_safefree(u->temppath);
        u->temppath = path = newp;
        path_alloced = TRUE;
      }
      else
        free(newp);
    }

    u->path = path_alloced?path:strdup(path);
    if(!u->path)
      return CURLUE_OUT_OF_MEMORY;
    u->temppath = NULL; /* used now */
  }

  if(hostname) {
    /*
     * Parse the login details and strip them out of the host name.
     */
    if(junkscan(hostname))
      return CURLUE_MALFORMED_INPUT;

    result = parse_hostname_login(u, h, &hostname, flags);
    if(result)
      return result;

    result = Curl_parse_port(u, hostname);
    if(result)
      return result;

    if(0 == strlen(hostname) && (flags & CURLU_NO_AUTHORITY)) {
      /* Skip hostname check, it's allowed to be empty. */
    }
    else {
      result = hostname_check(u, hostname);
      if(result)
        return result;
    }

    u->host = strdup(hostname);
    if(!u->host)
      return CURLUE_OUT_OF_MEMORY;
  }












  Curl_safefree(u->scratch);
  Curl_safefree(u->temppath);

  return CURLUE_OK;
}

/*
 * Parse the URL and set the relevant members of the Curl_URL struct.
 */
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
      if(u->scheme)
        scheme = u->scheme;
      else if(flags & CURLU_DEFAULT_SCHEME)
        scheme = (char *) DEFAULT_SCHEME;
      else
        return CURLUE_NO_SCHEME;

      if(scheme) {
        h = Curl_builtin_scheme(scheme);
        if(!port && (flags & CURLU_DEFAULT_PORT)) {
          /* there's no stored port number, but asked to deliver
             a default one for the scheme */
          if(h) {
            msnprintf(portbuf, sizeof(portbuf), "%ld", h->defport);
            port = portbuf;
          }
        }
        else if(port) {
          /* there is a stored port number, but asked to inhibit if it matches
             the default one for the scheme */
          if(h && (h->defport == u->portnum) &&
             (flags & CURLU_NO_DEFAULT_PORT))
            port = NULL;
        }
      }
      if(h && !(h->flags & PROTOPT_URLOPTIONS))
        options = NULL;

      if((u->host[0] == '[') && u->zoneid) {
        /* make it '[ host %25 zoneid ]' */
        size_t hostlen = strlen(u->host);
        size_t alen = hostlen + 3 + strlen(u->zoneid) + 1;







<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|







1100
1101
1102
1103
1104
1105
1106

1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
      if(u->scheme)
        scheme = u->scheme;
      else if(flags & CURLU_DEFAULT_SCHEME)
        scheme = (char *) DEFAULT_SCHEME;
      else
        return CURLUE_NO_SCHEME;


      h = Curl_builtin_scheme(scheme);
      if(!port && (flags & CURLU_DEFAULT_PORT)) {
        /* there's no stored port number, but asked to deliver
           a default one for the scheme */
        if(h) {
          msnprintf(portbuf, sizeof(portbuf), "%ld", h->defport);
          port = portbuf;
        }
      }
      else if(port) {
        /* there is a stored port number, but asked to inhibit if it matches
           the default one for the scheme */
        if(h && (h->defport == u->portnum) &&
           (flags & CURLU_NO_DEFAULT_PORT))
          port = NULL;
      }

      if(h && !(h->flags & PROTOPT_URLOPTIONS))
        options = NULL;

      if((u->host[0] == '[') && u->zoneid) {
        /* make it '[ host %25 zoneid ]' */
        size_t hostlen = strlen(u->host);
        size_t alen = hostlen + 3 + strlen(u->zoneid) + 1;
1336
1337
1338
1339
1340
1341
1342
1343

1344
1345
1346
1347
1348
1349
1350
    else
      curl_url_cleanup(handle2);
    return result;
  }
  default:
    return CURLUE_UNKNOWN_PART;
  }
  if(storep) {

    const char *newp = part;
    size_t nalloc = strlen(part);

    if(nalloc > CURL_MAX_INPUT_LENGTH)
      /* excessive input length */
      return CURLUE_MALFORMED_INPUT;








|
>







1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
    else
      curl_url_cleanup(handle2);
    return result;
  }
  default:
    return CURLUE_UNKNOWN_PART;
  }
  DEBUGASSERT(storep);
  {
    const char *newp = part;
    size_t nalloc = strlen(part);

    if(nalloc > CURL_MAX_INPUT_LENGTH)
      /* excessive input length */
      return CURLUE_MALFORMED_INPUT;

1428
1429
1430
1431
1432
1433
1434




1435
1436
1437

1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
        free(*storep);
        *storep = p;
        return CURLUE_OK;
      }
    }

    if(what == CURLUPART_HOST) {




      if(hostname_check(u, (char *)newp)) {
        free((char *)newp);
        return CURLUE_MALFORMED_INPUT;

      }
    }

    free(*storep);
    *storep = (char *)newp;
  }
  /* set after the string, to make it not assigned if the allocation above
     fails */
  if(port)
    u->portnum = port;
  return CURLUE_OK;
}







>
>
>
>
|
|
|
>












1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
        free(*storep);
        *storep = p;
        return CURLUE_OK;
      }
    }

    if(what == CURLUPART_HOST) {
      if(0 == strlen(newp) && (flags & CURLU_NO_AUTHORITY)) {
        /* Skip hostname check, it's allowed to be empty. */
      }
      else {
        if(hostname_check(u, (char *)newp)) {
          free((char *)newp);
          return CURLUE_MALFORMED_INPUT;
        }
      }
    }

    free(*storep);
    *storep = (char *)newp;
  }
  /* set after the string, to make it not assigned if the allocation above
     fails */
  if(port)
    u->portnum = port;
  return CURLUE_OK;
}
Changes to jni/curl/lib/urldata.h.
64
65
66
67
68
69
70

71
72
73
74
75
76
77
   protocol handler should only ever have a single CURLPROTO_ in its protocol
   field. */
#define PROTO_FAMILY_HTTP (CURLPROTO_HTTP|CURLPROTO_HTTPS)
#define PROTO_FAMILY_FTP  (CURLPROTO_FTP|CURLPROTO_FTPS)
#define PROTO_FAMILY_POP3 (CURLPROTO_POP3|CURLPROTO_POP3S)
#define PROTO_FAMILY_SMB  (CURLPROTO_SMB|CURLPROTO_SMBS)
#define PROTO_FAMILY_SMTP (CURLPROTO_SMTP|CURLPROTO_SMTPS)


#define DEFAULT_CONNCACHE_SIZE 5

/* length of longest IPv6 address string including the trailing null */
#define MAX_IPADR_LEN sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")

/* Default FTP/IMAP etc response timeout in milliseconds.







>







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
   protocol handler should only ever have a single CURLPROTO_ in its protocol
   field. */
#define PROTO_FAMILY_HTTP (CURLPROTO_HTTP|CURLPROTO_HTTPS)
#define PROTO_FAMILY_FTP  (CURLPROTO_FTP|CURLPROTO_FTPS)
#define PROTO_FAMILY_POP3 (CURLPROTO_POP3|CURLPROTO_POP3S)
#define PROTO_FAMILY_SMB  (CURLPROTO_SMB|CURLPROTO_SMBS)
#define PROTO_FAMILY_SMTP (CURLPROTO_SMTP|CURLPROTO_SMTPS)
#define PROTO_FAMILY_SSH  (CURLPROTO_SCP|CURLPROTO_SFTP)

#define DEFAULT_CONNCACHE_SIZE 5

/* length of longest IPv6 address string including the trailing null */
#define MAX_IPADR_LEN sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")

/* Default FTP/IMAP etc response timeout in milliseconds.
154
155
156
157
158
159
160




161


162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#define HEADERSIZE 256

#define CURLEASY_MAGIC_NUMBER 0xc0dedbadU
#define GOOD_EASY_HANDLE(x) \
  ((x) && ((x)->magic == CURLEASY_MAGIC_NUMBER))

/* the type we use for storing a single boolean bit */




typedef unsigned int bit;



#ifdef HAVE_GSSAPI
/* Types needed for krb5-ftp connections */
struct krb5buffer {
  void *data;
  size_t size;
  size_t index;
  bit eof_flag:1;
};

enum protection_level {
  PROT_NONE, /* first in list */
  PROT_CLEAR,
  PROT_SAFE,
  PROT_CONFIDENTIAL,







>
>
>
>

>
>







|







155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#define HEADERSIZE 256

#define CURLEASY_MAGIC_NUMBER 0xc0dedbadU
#define GOOD_EASY_HANDLE(x) \
  ((x) && ((x)->magic == CURLEASY_MAGIC_NUMBER))

/* the type we use for storing a single boolean bit */
#ifdef _MSC_VER
typedef bool bit;
#define BIT(x) bool x
#else
typedef unsigned int bit;
#define BIT(x) bit x:1
#endif

#ifdef HAVE_GSSAPI
/* Types needed for krb5-ftp connections */
struct krb5buffer {
  void *data;
  size_t size;
  size_t index;
  BIT(eof_flag);
};

enum protection_level {
  PROT_NONE, /* first in list */
  PROT_CLEAR,
  PROT_SAFE,
  PROT_CONFIDENTIAL,
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224

225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
     but at least asked to or meaning to use it. See 'state' for the exact
     current state of the connection. */
  ssl_connection_state state;
  ssl_connect_state connecting_state;
#if defined(USE_SSL)
  struct ssl_backend_data *backend;
#endif
  bit use:1;
};

struct ssl_primary_config {
  long version;          /* what version the client wants to use */
  long version_max;      /* max supported version the client wants to use*/
  char *CApath;          /* certificate dir (doesn't work on windows) */
  char *CAfile;          /* certificate to verify peer against */
  char *clientcert;
  char *random_file;     /* path to file containing "random" data */
  char *egdsocket;       /* path to file containing the EGD daemon socket */
  char *cipher_list;     /* list of ciphers to use */
  char *cipher_list13;   /* list of TLS 1.3 cipher suites to use */

  bit verifypeer:1;      /* set TRUE if this is desired */
  bit verifyhost:1;      /* set TRUE if CN/SAN must match hostname */
  bit verifystatus:1;    /* set TRUE if certificate status must be checked */
  bit sessionid:1;       /* cache session IDs or not */
};

struct ssl_config_data {
  struct ssl_primary_config primary;
  long certverifyresult; /* result from the certificate verification */
  char *CRLfile;   /* CRL to check certificate revocation */
  char *issuercert;/* optional issuer certificate filename */
  curl_ssl_ctx_callback fsslctx; /* function to initialize ssl ctx */
  void *fsslctxp;        /* parameter for call back */
  char *cert; /* client certificate file name */
  char *cert_type; /* format for certificate (default: PEM)*/
  char *key; /* private key file name */
  char *key_type; /* format for private key (default: PEM) */
  char *key_passwd; /* plain text private key password */
#ifdef USE_TLS_SRP
  char *username; /* TLS username (for, e.g., SRP) */
  char *password; /* TLS password (for, e.g., SRP) */
  enum CURL_TLSAUTH authtype; /* TLS authentication type (default SRP) */
#endif
  bit certinfo:1;     /* gather lots of certificate info */
  bit falsestart:1;
  bit enable_beast:1; /* allow this flaw for interoperability's sake*/
  bit no_revoke:1;    /* disable SSL certificate revocation checks */
};

struct ssl_general_config {
  size_t max_ssl_sessions; /* SSL session id cache size */
};

/* information stored about one single SSL session */







|












>
|
|
|
|



















|
|
|
|







212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
     but at least asked to or meaning to use it. See 'state' for the exact
     current state of the connection. */
  ssl_connection_state state;
  ssl_connect_state connecting_state;
#if defined(USE_SSL)
  struct ssl_backend_data *backend;
#endif
  BIT(use);
};

struct ssl_primary_config {
  long version;          /* what version the client wants to use */
  long version_max;      /* max supported version the client wants to use*/
  char *CApath;          /* certificate dir (doesn't work on windows) */
  char *CAfile;          /* certificate to verify peer against */
  char *clientcert;
  char *random_file;     /* path to file containing "random" data */
  char *egdsocket;       /* path to file containing the EGD daemon socket */
  char *cipher_list;     /* list of ciphers to use */
  char *cipher_list13;   /* list of TLS 1.3 cipher suites to use */
  char *pinned_key;
  BIT(verifypeer);       /* set TRUE if this is desired */
  BIT(verifyhost);       /* set TRUE if CN/SAN must match hostname */
  BIT(verifystatus);     /* set TRUE if certificate status must be checked */
  BIT(sessionid);        /* cache session IDs or not */
};

struct ssl_config_data {
  struct ssl_primary_config primary;
  long certverifyresult; /* result from the certificate verification */
  char *CRLfile;   /* CRL to check certificate revocation */
  char *issuercert;/* optional issuer certificate filename */
  curl_ssl_ctx_callback fsslctx; /* function to initialize ssl ctx */
  void *fsslctxp;        /* parameter for call back */
  char *cert; /* client certificate file name */
  char *cert_type; /* format for certificate (default: PEM)*/
  char *key; /* private key file name */
  char *key_type; /* format for private key (default: PEM) */
  char *key_passwd; /* plain text private key password */
#ifdef USE_TLS_SRP
  char *username; /* TLS username (for, e.g., SRP) */
  char *password; /* TLS password (for, e.g., SRP) */
  enum CURL_TLSAUTH authtype; /* TLS authentication type (default SRP) */
#endif
  BIT(certinfo);     /* gather lots of certificate info */
  BIT(falsestart);
  BIT(enable_beast); /* allow this flaw for interoperability's sake*/
  BIT(no_revoke);    /* disable SSL certificate revocation checks */
};

struct ssl_general_config {
  size_t max_ssl_sessions; /* SSL session id cache size */
};

/* information stored about one single SSL session */
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
  char *cnonce;
  char *realm;
  int algo;
  char *opaque;
  char *qop;
  char *algorithm;
  int nc; /* nounce count */
  bit stale:1; /* set true for re-negotiation */
  bit userhash:1;
#endif
};

typedef enum {
  NTLMSTATE_NONE,
  NTLMSTATE_TYPE1,
  NTLMSTATE_TYPE2,







|
|







295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
  char *cnonce;
  char *realm;
  int algo;
  char *opaque;
  char *qop;
  char *algorithm;
  int nc; /* nounce count */
  BIT(stale); /* set true for re-negotiation */
  BIT(userhash);
#endif
};

typedef enum {
  NTLMSTATE_NONE,
  NTLMSTATE_TYPE1,
  NTLMSTATE_TYPE2,
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
  SEC_WINNT_AUTH_IDENTITY *p_identity;
  TCHAR *spn;
  size_t token_max;
  BYTE *output_token;
  size_t output_token_length;
#endif
#endif
  bool noauthpersist;
  bool havenoauthpersist;
  bool havenegdata;
  bool havemultiplerequests;
};
#endif


/*
 * Boolean values that concerns this connection.
 */
struct ConnectBits {
  /* always modify bits.close with the connclose() and connkeep() macros! */
  bool proxy_ssl_connected[2]; /* TRUE when SSL initialization for HTTPS proxy
                                  is complete */
  bool tcpconnect[2]; /* the TCP layer (or similar) is connected, this is set
                         the first time on the first connect function call */
  bit close:1; /* if set, we close the connection after this request */
  bit reuse:1; /* if set, this is a re-used connection */
  bit altused:1; /* this is an alt-svc "redirect" */
  bit conn_to_host:1; /* if set, this connection has a "connect to host"
                         that overrides the host in the URL */
  bit conn_to_port:1; /* if set, this connection has a "connect to port"
                         that overrides the port in the URL (remote port) */
  bit proxy:1; /* if set, this transfer is done through a proxy - any type */
  bit httpproxy:1;  /* if set, this transfer is done through a http proxy */
  bit socksproxy:1; /* if set, this transfer is done through a socks proxy */
  bit user_passwd:1; /* do we use user+password for this connection? */
  bit proxy_user_passwd:1; /* user+password for the proxy? */
  bit ipv6_ip:1; /* we communicate with a remote site specified with pure IPv6
                    IP address */
  bit ipv6:1;    /* we communicate with a site using an IPv6 address */
  bit do_more:1; /* this is set TRUE if the ->curl_do_more() function is
                    supposed to be called, after ->curl_do() */
  bit protoconnstart:1;/* the protocol layer has STARTED its operation after
                          the TCP layer connect */
  bit retry:1;         /* this connection is about to get closed and then
                          re-attempted at another connection. */
  bit tunnel_proxy:1;  /* if CONNECT is used to "tunnel" through the proxy.
                          This is implicit when SSL-protocols are used through
                          proxies, but can also be enabled explicitly by
                          apps */
  bit authneg:1;       /* TRUE when the auth phase has started, which means
                          that we are creating a request with an auth header,
                          but it is not the final request in the auth
                          negotiation. */
  bit rewindaftersend:1;/* TRUE when the sending couldn't be stopped even
                           though it will be discarded. When the whole send
                           operation is done, we must call the data rewind
                           callback. */
#ifndef CURL_DISABLE_FTP
  bit ftp_use_epsv:1;  /* As set with CURLOPT_FTP_USE_EPSV, but if we find out
                          EPSV doesn't work we disable it for the forthcoming
                          requests */
  bit ftp_use_eprt:1;  /* As set with CURLOPT_FTP_USE_EPRT, but if we find out
                          EPRT doesn't work we disable it for the forthcoming
                          requests */
  bit ftp_use_data_ssl:1; /* Enabled SSL for the data connection */
#endif
  bit netrc:1;         /* name+password provided by netrc */
  bit userpwd_in_url:1; /* name+password found in url */
  bit stream_was_rewound:1; /* The stream was rewound after a request read
                               past the end of its response byte boundary */
  bit proxy_connect_closed:1; /* TRUE if a proxy disconnected the connection
                                 in a CONNECT request with auth, so that
                                 libcurl should reconnect and continue. */
  bit bound:1; /* set true if bind() has already been done on this socket/
                  connection */
  bit type_set:1;  /* type= was used in the URL */
  bit multiplex:1; /* connection is multiplexed */
  bit tcp_fastopen:1; /* use TCP Fast Open */
  bit tls_enable_npn:1;  /* TLS NPN extension? */
  bit tls_enable_alpn:1; /* TLS ALPN extension? */
  bit socksproxy_connecting:1; /* connecting through a socks proxy */
  bit connect_only:1;
};

struct hostname {
  char *rawalloc; /* allocated "raw" version of the name */
  char *encalloc; /* allocated IDN-encoded version of the name */
  char *name;     /* name to use internally, might be encoded, might be raw */
  const char *dispname; /* name to display, as 'name' might be encoded */







|
|
|
|













|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|







390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
  SEC_WINNT_AUTH_IDENTITY *p_identity;
  TCHAR *spn;
  size_t token_max;
  BYTE *output_token;
  size_t output_token_length;
#endif
#endif
  BIT(noauthpersist);
  BIT(havenoauthpersist);
  BIT(havenegdata);
  BIT(havemultiplerequests);
};
#endif


/*
 * Boolean values that concerns this connection.
 */
struct ConnectBits {
  /* always modify bits.close with the connclose() and connkeep() macros! */
  bool proxy_ssl_connected[2]; /* TRUE when SSL initialization for HTTPS proxy
                                  is complete */
  bool tcpconnect[2]; /* the TCP layer (or similar) is connected, this is set
                         the first time on the first connect function call */
  BIT(close); /* if set, we close the connection after this request */
  BIT(reuse); /* if set, this is a re-used connection */
  BIT(altused); /* this is an alt-svc "redirect" */
  BIT(conn_to_host); /* if set, this connection has a "connect to host"
                        that overrides the host in the URL */
  BIT(conn_to_port); /* if set, this connection has a "connect to port"
                        that overrides the port in the URL (remote port) */
  BIT(proxy); /* if set, this transfer is done through a proxy - any type */
  BIT(httpproxy);  /* if set, this transfer is done through a http proxy */
  BIT(socksproxy); /* if set, this transfer is done through a socks proxy */
  BIT(user_passwd); /* do we use user+password for this connection? */
  BIT(proxy_user_passwd); /* user+password for the proxy? */
  BIT(ipv6_ip); /* we communicate with a remote site specified with pure IPv6
                   IP address */
  BIT(ipv6);    /* we communicate with a site using an IPv6 address */
  BIT(do_more); /* this is set TRUE if the ->curl_do_more() function is
                   supposed to be called, after ->curl_do() */
  BIT(protoconnstart);/* the protocol layer has STARTED its operation after
                         the TCP layer connect */
  BIT(retry);         /* this connection is about to get closed and then
                         re-attempted at another connection. */
  BIT(tunnel_proxy);  /* if CONNECT is used to "tunnel" through the proxy.
                         This is implicit when SSL-protocols are used through
                         proxies, but can also be enabled explicitly by
                         apps */
  BIT(authneg);       /* TRUE when the auth phase has started, which means
                         that we are creating a request with an auth header,
                         but it is not the final request in the auth
                         negotiation. */
  BIT(rewindaftersend);/* TRUE when the sending couldn't be stopped even
                          though it will be discarded. When the whole send
                          operation is done, we must call the data rewind
                          callback. */
#ifndef CURL_DISABLE_FTP
  BIT(ftp_use_epsv);  /* As set with CURLOPT_FTP_USE_EPSV, but if we find out
                         EPSV doesn't work we disable it for the forthcoming
                         requests */
  BIT(ftp_use_eprt);  /* As set with CURLOPT_FTP_USE_EPRT, but if we find out
                         EPRT doesn't work we disable it for the forthcoming
                         requests */
  BIT(ftp_use_data_ssl); /* Enabled SSL for the data connection */
#endif
  BIT(netrc);         /* name+password provided by netrc */
  BIT(userpwd_in_url); /* name+password found in url */
  BIT(stream_was_rewound); /* The stream was rewound after a request read
                              past the end of its response byte boundary */
  BIT(proxy_connect_closed); /* TRUE if a proxy disconnected the connection
                                in a CONNECT request with auth, so that
                                libcurl should reconnect and continue. */
  BIT(bound); /* set true if bind() has already been done on this socket/
                 connection */
  BIT(type_set);  /* type= was used in the URL */
  BIT(multiplex); /* connection is multiplexed */
  BIT(tcp_fastopen); /* use TCP Fast Open */
  BIT(tls_enable_npn);  /* TLS NPN extension? */
  BIT(tls_enable_alpn); /* TLS ALPN extension? */
  BIT(socksproxy_connecting); /* connecting through a socks proxy */
  BIT(connect_only);
};

struct hostname {
  char *rawalloc; /* allocated "raw" version of the name */
  char *encalloc; /* allocated IDN-encoded version of the name */
  char *name;     /* name to use internally, might be encoded, might be raw */
  const char *dispname; /* name to display, as 'name' might be encoded */
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503

struct Curl_async {
  char *hostname;
  int port;
  struct Curl_dns_entry *dns;
  int status; /* if done is TRUE, this is the status from the callback */
  void *os_specific;  /* 'struct thread_data' for Windows */
  bit done:1;  /* set TRUE when the lookup is complete */
};

#define FIRSTSOCKET     0
#define SECONDARYSOCKET 1

/* These function pointer types are here only to allow easier typecasting
   within the source when we need to cast between data pointers (such as NULL)







|







497
498
499
500
501
502
503
504
505
506
507
508
509
510
511

struct Curl_async {
  char *hostname;
  int port;
  struct Curl_dns_entry *dns;
  int status; /* if done is TRUE, this is the status from the callback */
  void *os_specific;  /* 'struct thread_data' for Windows */
  BIT(done);  /* set TRUE when the lookup is complete */
};

#define FIRSTSOCKET     0
#define SECONDARYSOCKET 1

/* These function pointer types are here only to allow easier typecasting
   within the source when we need to cast between data pointers (such as NULL)
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
     position */
  char *upload_fromhere;
  void *protop;       /* Allocated protocol-specific data. Each protocol
                         handler makes sure this points to data it needs. */
#ifndef CURL_DISABLE_DOH
  struct dohdata doh; /* DoH specific data for this request */
#endif
  bit header:1;       /* incoming data has HTTP header */
  bit content_range:1; /* set TRUE if Content-Range: was found */
  bit upload_done:1;  /* set to TRUE when doing chunked transfer-encoding
                         upload and we're uploading the last chunk */
  bit ignorebody:1;   /* we read a response-body but we ignore it! */
  bit http_bodyless:1; /* HTTP response status code is between 100 and 199,
                          204 or 304 */
  bit chunk:1; /* if set, this is a chunked transfer-encoding */
  bit upload_chunky:1; /* set TRUE if we are doing chunked transfer-encoding
                          on upload */
  bit getheader:1;    /* TRUE if header parsing is wanted */
  bit forbidchunk:1;  /* used only to explicitly forbid chunk-upload for
                         specific upload buffers. See readmoredata() in http.c
                         for details. */
};

/*
 * Specific protocol handler.
 */

struct Curl_handler {







|
|
|
|
|
|
|
|
|
|
|
|
|
|







618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
     position */
  char *upload_fromhere;
  void *protop;       /* Allocated protocol-specific data. Each protocol
                         handler makes sure this points to data it needs. */
#ifndef CURL_DISABLE_DOH
  struct dohdata doh; /* DoH specific data for this request */
#endif
  BIT(header);       /* incoming data has HTTP header */
  BIT(content_range); /* set TRUE if Content-Range: was found */
  BIT(upload_done);  /* set to TRUE when doing chunked transfer-encoding
                        upload and we're uploading the last chunk */
  BIT(ignorebody);   /* we read a response-body but we ignore it! */
  BIT(http_bodyless); /* HTTP response status code is between 100 and 199,
                         204 or 304 */
  BIT(chunk); /* if set, this is a chunked transfer-encoding */
  BIT(upload_chunky); /* set TRUE if we are doing chunked transfer-encoding
                         on upload */
  BIT(getheader);    /* TRUE if header parsing is wanted */
  BIT(forbidchunk);  /* used only to explicitly forbid chunk-upload for
                        specific upload buffers. See readmoredata() in http.c
                        for details. */
};

/*
 * Specific protocol handler.
 */

struct Curl_handler {
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
  char *ptr; /* where to store more data */
  curl_off_t cl; /* size of content to read and ignore */
  enum {
    TUNNEL_INIT,    /* init/default/no tunnel state */
    TUNNEL_CONNECT, /* CONNECT has been sent off */
    TUNNEL_COMPLETE /* CONNECT response received completely */
  } tunnel_state;
  bit chunked_encoding:1;
  bit close_connection:1;
};

struct ldapconninfo;

/*
 * The connectdata struct contains all fields and variables that should be
 * unique for an entire connection.







|
|







780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
  char *ptr; /* where to store more data */
  curl_off_t cl; /* size of content to read and ignore */
  enum {
    TUNNEL_INIT,    /* init/default/no tunnel state */
    TUNNEL_CONNECT, /* CONNECT has been sent off */
    TUNNEL_COMPLETE /* CONNECT response received completely */
  } tunnel_state;
  BIT(chunked_encoding);
  BIT(close_connection);
};

struct ldapconninfo;

/*
 * The connectdata struct contains all fields and variables that should be
 * unique for an entire connection.
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
    char *host;
    char *cookiehost;
    char *rtsp_transport;
    char *te; /* TE: request header */
  } allocptr;

#ifdef HAVE_GSSAPI
  bit sec_complete:1; /* if Kerberos is enabled for this connection */
  enum protection_level command_prot;
  enum protection_level data_prot;
  enum protection_level request_data_prot;
  size_t buffer_size;
  struct krb5buffer in_buffer;
  void *app_data;
  const struct Curl_sec_client_mech *mech;







|







956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
    char *host;
    char *cookiehost;
    char *rtsp_transport;
    char *te; /* TE: request header */
  } allocptr;

#ifdef HAVE_GSSAPI
  BIT(sec_complete); /* if Kerberos is enabled for this connection */
  enum protection_level command_prot;
  enum protection_level data_prot;
  enum protection_level request_data_prot;
  size_t buffer_size;
  struct krb5buffer in_buffer;
  void *app_data;
  const struct Curl_sec_client_mech *mech;
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
  int localportrange;
  struct http_connect_state *connect_state; /* for HTTP CONNECT */
  struct connectbundle *bundle; /* The bundle we are member of */
  int negnpn; /* APLN or NPN TLS negotiated protocol, CURL_HTTP_VERSION* */

#ifdef USE_UNIX_SOCKETS
  char *unix_domain_socket;
  bit abstract_unix_socket:1;
#endif
  bit tls_upgraded:1;
  /* the two following *_inuse fields are only flags, not counters in any way.
     If TRUE it means the channel is in use, and if FALSE it means the channel
     is up for grabs by one. */
  bit readchannel_inuse:1;  /* whether the read channel is in use by an easy
                               handle */
  bit writechannel_inuse:1; /* whether the write channel is in use by an easy
                               handle */
};

/* The end of connectdata. */

/*
 * Struct to keep statistical and informational data.
 * All variables in this struct must be initialized/reset in Curl_initinfo().







|

|



|
|
|
|







1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
  int localportrange;
  struct http_connect_state *connect_state; /* for HTTP CONNECT */
  struct connectbundle *bundle; /* The bundle we are member of */
  int negnpn; /* APLN or NPN TLS negotiated protocol, CURL_HTTP_VERSION* */

#ifdef USE_UNIX_SOCKETS
  char *unix_domain_socket;
  BIT(abstract_unix_socket);
#endif
  BIT(tls_upgraded);
  /* the two following *_inuse fields are only flags, not counters in any way.
     If TRUE it means the channel is in use, and if FALSE it means the channel
     is up for grabs by one. */
  BIT(readchannel_inuse);  /* whether the read channel is in use by an easy
                              handle */
  BIT(writechannel_inuse); /* whether the write channel is in use by an easy
                              handle */
};

/* The end of connectdata. */

/*
 * Struct to keep statistical and informational data.
 * All variables in this struct must be initialized/reset in Curl_initinfo().
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
  long conn_local_port;
  const char *conn_scheme;
  unsigned int conn_protocol;
  struct curl_certinfo certs; /* info about the certs, only populated in
                                 OpenSSL, GnuTLS, Schannel, NSS and GSKit
                                 builds. Asked for with CURLOPT_CERTINFO
                                 / CURLINFO_CERTINFO */
  bit timecond:1;  /* set to TRUE if the time condition didn't match, which
                      thus made the document NOT get fetched */
};


struct Progress {
  time_t lastshow; /* time() of the last displayed progress meter or NULL to
                      force redraw at next call */
  curl_off_t size_dl; /* total expected size */







|
|







1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
  long conn_local_port;
  const char *conn_scheme;
  unsigned int conn_protocol;
  struct curl_certinfo certs; /* info about the certs, only populated in
                                 OpenSSL, GnuTLS, Schannel, NSS and GSKit
                                 builds. Asked for with CURLOPT_CERTINFO
                                 / CURLINFO_CERTINFO */
  BIT(timecond);  /* set to TRUE if the time condition didn't match, which
                     thus made the document NOT get fetched */
};


struct Progress {
  time_t lastshow; /* time() of the last displayed progress meter or NULL to
                      force redraw at next call */
  curl_off_t size_dl; /* total expected size */
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
  curl_off_t dl_limit_size;

#define CURR_TIME (5 + 1) /* 6 entries for 5 seconds */

  curl_off_t speeder[ CURR_TIME ];
  struct curltime speeder_time[ CURR_TIME ];
  int speeder_c;
  bit callback:1;  /* set when progress callback is used */
  bit is_t_startransfer_set:1;
};

typedef enum {
  HTTPREQ_NONE, /* first in list */
  HTTPREQ_GET,
  HTTPREQ_POST,
  HTTPREQ_POST_FORM, /* we make a difference internally */







|
|







1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
  curl_off_t dl_limit_size;

#define CURR_TIME (5 + 1) /* 6 entries for 5 seconds */

  curl_off_t speeder[ CURR_TIME ];
  struct curltime speeder_time[ CURR_TIME ];
  int speeder_c;
  BIT(callback);  /* set when progress callback is used */
  BIT(is_t_startransfer_set);
};

typedef enum {
  HTTPREQ_NONE, /* first in list */
  HTTPREQ_GET,
  HTTPREQ_POST,
  HTTPREQ_POST_FORM, /* we make a difference internally */
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208

struct auth {
  unsigned long want;  /* Bitmask set to the authentication methods wanted by
                          app (with CURLOPT_HTTPAUTH or CURLOPT_PROXYAUTH). */
  unsigned long picked;
  unsigned long avail; /* Bitmask for what the server reports to support for
                          this resource */
  bit done:1;  /* TRUE when the auth phase is done and ready to do the
                 *actual* request */
  bit multipass:1; /* TRUE if this is not yet authenticated but within the
                       auth multipass negotiation */
  bit iestyle:1; /* TRUE if digest should be done IE-style or FALSE if it
                     should be RFC compliant */
};

struct Curl_http2_dep {
  struct Curl_http2_dep *next;
  struct Curl_easy *data;
};








|
|
|
|
|
|







1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216

struct auth {
  unsigned long want;  /* Bitmask set to the authentication methods wanted by
                          app (with CURLOPT_HTTPAUTH or CURLOPT_PROXYAUTH). */
  unsigned long picked;
  unsigned long avail; /* Bitmask for what the server reports to support for
                          this resource */
  BIT(done);  /* TRUE when the auth phase is done and ready to do the
                 actual request */
  BIT(multipass); /* TRUE if this is not yet authenticated but within the
                     auth multipass negotiation */
  BIT(iestyle); /* TRUE if digest should be done IE-style or FALSE if it
                   should be RFC compliant */
};

struct Curl_http2_dep {
  struct Curl_http2_dep *next;
  struct Curl_easy *data;
};

1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
                            involved in this request */

#if !defined(WIN32) && !defined(MSDOS) && !defined(__EMX__) && \
    !defined(__SYMBIAN32__)
/* do FTP line-end conversions on most platforms */
#define CURL_DO_LINEEND_CONV
  /* for FTP downloads: track CRLF sequences that span blocks */
  bit prev_block_had_trailing_cr:1;
  /* for FTP downloads: how many CRLFs did we converted to LFs? */
  curl_off_t crlf_conversions;
#endif
  char *range; /* range, if used. See README for detailed specification on
                  this syntax. */
  curl_off_t resume_from; /* continue [ftp] transfer from here */








|







1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
                            involved in this request */

#if !defined(WIN32) && !defined(MSDOS) && !defined(__EMX__) && \
    !defined(__SYMBIAN32__)
/* do FTP line-end conversions on most platforms */
#define CURL_DO_LINEEND_CONV
  /* for FTP downloads: track CRLF sequences that span blocks */
  BIT(prev_block_had_trailing_cr);
  /* for FTP downloads: how many CRLFs did we converted to LFs? */
  curl_off_t crlf_conversions;
#endif
  char *range; /* range, if used. See README for detailed specification on
                  this syntax. */
  curl_off_t resume_from; /* continue [ftp] transfer from here */

1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391

1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
  size_t trailers_bytes_sent;
  Curl_send_buffer *trailers_buf; /* a buffer containing the compiled trailing
                                  headers */
#endif
  trailers_state trailers_state; /* whether we are sending trailers
                                       and what stage are we at */
#ifdef CURLDEBUG
  bit conncache_lock:1;
#endif
  /* when curl_easy_perform() is called, the multi handle is "owned" by
     the easy handle so curl_easy_cleanup() on such an easy handle will
     also close the multi handle! */
  bit multi_owned_by_easy:1;

  bit this_is_a_follow:1; /* this is a followed Location: request */
  bit refused_stream:1; /* this was refused, try again */
  bit errorbuf:1; /* Set to TRUE if the error buffer is already filled in.
                    This must be set to FALSE every time _easy_perform() is
                    called. */
  bit allow_port:1; /* Is set.use_port allowed to take effect or not. This
                      is always set TRUE when curl_easy_perform() is called. */
  bit authproblem:1; /* TRUE if there's some problem authenticating */
  /* set after initial USER failure, to prevent an authentication loop */
  bit ftp_trying_alternative:1;
  bit wildcardmatch:1; /* enable wildcard matching */
  bit expect100header:1;  /* TRUE if we added Expect: 100-continue */
  bit use_range:1;
  bit rangestringalloc:1; /* the range string is malloc()'ed */
  bit done:1; /* set to FALSE when Curl_init_do() is called and set to TRUE
                  when multi_done() is called, to prevent multi_done() to get
                  invoked twice when the multi interface is used. */
  bit stream_depends_e:1; /* set or don't set the Exclusive bit */
  bit previouslypending:1; /* this transfer WAS in the multi->pending queue */

};


/*
 * This 'DynamicStatic' struct defines dynamic states that actually change
 * values in the 'UserDefined' area, which MUST be taken into consideration
 * if the UserDefined struct is cloned or similar. You can probably just
 * copy these, but each one indicate a special action on other data.
 */

struct DynamicStatic {
  char *url;        /* work URL, copied from UserDefined */
  char *referer;    /* referer string */
  struct curl_slist *cookielist; /* list of cookie files set by
                                    curl_easy_setopt(COOKIEFILE) calls */
  struct curl_slist *resolve; /* set to point to the set.resolve list when
                                 this should be dealt with in pretransfer */
  bit url_alloc:1;   /* URL string is malloc()'ed */
  bit referer_alloc:1; /* referer string is malloc()ed */
  bit wildcard_resolve:1; /* Set to true if any resolve change is a
                              wildcard */
};

/*
 * This 'UserDefined' struct must only contain data that is set once to go
 * for many (perhaps) independent connections. Values that are generated or
 * calculated internally for the "session handle" MUST be defined within the







|




|

|
|
|


|

|

|
|
|
|
|
|


|
|
>

















|
|
|







1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
  size_t trailers_bytes_sent;
  Curl_send_buffer *trailers_buf; /* a buffer containing the compiled trailing
                                  headers */
#endif
  trailers_state trailers_state; /* whether we are sending trailers
                                       and what stage are we at */
#ifdef CURLDEBUG
  BIT(conncache_lock);
#endif
  /* when curl_easy_perform() is called, the multi handle is "owned" by
     the easy handle so curl_easy_cleanup() on such an easy handle will
     also close the multi handle! */
  BIT(multi_owned_by_easy);

  BIT(this_is_a_follow); /* this is a followed Location: request */
  BIT(refused_stream); /* this was refused, try again */
  BIT(errorbuf); /* Set to TRUE if the error buffer is already filled in.
                    This must be set to FALSE every time _easy_perform() is
                    called. */
  BIT(allow_port); /* Is set.use_port allowed to take effect or not. This
                      is always set TRUE when curl_easy_perform() is called. */
  BIT(authproblem); /* TRUE if there's some problem authenticating */
  /* set after initial USER failure, to prevent an authentication loop */
  BIT(ftp_trying_alternative);
  BIT(wildcardmatch); /* enable wildcard matching */
  BIT(expect100header);  /* TRUE if we added Expect: 100-continue */
  BIT(use_range);
  BIT(rangestringalloc); /* the range string is malloc()'ed */
  BIT(done); /* set to FALSE when Curl_init_do() is called and set to TRUE
                  when multi_done() is called, to prevent multi_done() to get
                  invoked twice when the multi interface is used. */
  BIT(stream_depends_e); /* set or don't set the Exclusive bit */
  BIT(previouslypending); /* this transfer WAS in the multi->pending queue */
  BIT(cookie_engine);
};


/*
 * This 'DynamicStatic' struct defines dynamic states that actually change
 * values in the 'UserDefined' area, which MUST be taken into consideration
 * if the UserDefined struct is cloned or similar. You can probably just
 * copy these, but each one indicate a special action on other data.
 */

struct DynamicStatic {
  char *url;        /* work URL, copied from UserDefined */
  char *referer;    /* referer string */
  struct curl_slist *cookielist; /* list of cookie files set by
                                    curl_easy_setopt(COOKIEFILE) calls */
  struct curl_slist *resolve; /* set to point to the set.resolve list when
                                 this should be dealt with in pretransfer */
  BIT(url_alloc);   /* URL string is malloc()'ed */
  BIT(referer_alloc); /* referer string is malloc()ed */
  BIT(wildcard_resolve); /* Set to true if any resolve change is a
                              wildcard */
};

/*
 * This 'UserDefined' struct must only contain data that is set once to go
 * for many (perhaps) independent connections. Values that are generated or
 * calculated internally for the "session handle" MUST be defined within the
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
  void *resolver_start_client; /* pointer to pass to resolver start callback */
  long upkeep_interval_ms;      /* Time between calls for connection upkeep. */
  multidone_func fmultidone;
  struct Curl_easy *dohfor; /* this is a DoH request for that transfer */
  CURLU *uh; /* URL handle for the current parsed URL */
  void *trailer_data; /* pointer to pass to trailer data callback */
  curl_trailer_callback trailer_callback; /* trailing data callback */
  bit is_fread_set:1; /* has read callback been set to non-NULL? */
  bit is_fwrite_set:1; /* has write callback been set to non-NULL? */
  bit free_referer:1; /* set TRUE if 'referer' points to a string we
                        allocated */
  bit tftp_no_options:1; /* do not send TFTP options requests */
  bit sep_headers:1;     /* handle host and proxy headers separately */
  bit cookiesession:1;   /* new cookie session? */
  bit crlf:1;            /* convert crlf on ftp upload(?) */
  bit strip_path_slash:1; /* strip off initial slash from path */
  bit ssh_compression:1;            /* enable SSH compression */

/* Here follows boolean settings that define how to behave during
   this session. They are STATIC, set by libcurl users or at least initially
   and they don't change during operations. */
  bit get_filetime:1;     /* get the time and get of the remote file */
  bit tunnel_thru_httpproxy:1; /* use CONNECT through a HTTP proxy */
  bit prefer_ascii:1;     /* ASCII rather than binary */
  bit ftp_append:1;       /* append, not overwrite, on upload */
  bit ftp_list_only:1;    /* switch FTP command for listing directories */
#ifndef CURL_DISABLE_FTP
  bit ftp_use_port:1;     /* use the FTP PORT command */
  bit ftp_use_epsv:1;   /* if EPSV is to be attempted or not */
  bit ftp_use_eprt:1;   /* if EPRT is to be attempted or not */
  bit ftp_use_pret:1;   /* if PRET is to be used before PASV or not */
  bit ftp_skip_ip:1;    /* skip the IP address the FTP server passes on to
                            us */
#endif
  bit hide_progress:1;    /* don't use the progress meter */
  bit http_fail_on_error:1;  /* fail on HTTP error codes >= 400 */
  bit http_keep_sending_on_error:1; /* for HTTP status codes >= 300 */
  bit http_follow_location:1; /* follow HTTP redirects */
  bit http_transfer_encoding:1; /* request compressed HTTP
                                    transfer-encoding */
  bit allow_auth_to_other_hosts:1;
  bit include_header:1; /* include received protocol headers in data output */
  bit http_set_referer:1; /* is a custom referer used */
  bit http_auto_referer:1; /* set "correct" referer when following
                               location: */
  bit opt_no_body:1;    /* as set with CURLOPT_NOBODY */
  bit upload:1;         /* upload request */
  bit verbose:1;        /* output verbosity */
  bit krb:1;            /* Kerberos connection requested */
  bit reuse_forbid:1;   /* forbidden to be reused, close after use */
  bit reuse_fresh:1;    /* do not re-use an existing connection  */

  bit no_signal:1;      /* do not use any signal/alarm handler */
  bit tcp_nodelay:1;    /* whether to enable TCP_NODELAY or not */
  bit ignorecl:1;       /* ignore content length */
  bit connect_only:1;   /* make connection, let application use the socket */
  bit http_te_skip:1;   /* pass the raw body data to the user, even when
                            transfer-encoded (chunked, compressed) */
  bit http_ce_skip:1;   /* pass the raw body data to the user, even when
                            content-encoded (chunked, compressed) */
  bit proxy_transfer_mode:1; /* set transfer mode (;type=<a|i>) when doing
                                 FTP via an HTTP proxy */
#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
  bit socks5_gssapi_nec:1; /* Flag to support NEC SOCKS5 server */
#endif
  bit sasl_ir:1;         /* Enable/disable SASL initial response */
  bit wildcard_enabled:1; /* enable wildcard matching */
  bit tcp_keepalive:1;  /* use TCP keepalives */
  bit tcp_fastopen:1;   /* use TCP Fast Open */
  bit ssl_enable_npn:1; /* TLS NPN extension? */
  bit ssl_enable_alpn:1;/* TLS ALPN extension? */
  bit path_as_is:1;     /* allow dotdots? */
  bit pipewait:1;       /* wait for multiplex status before starting a new
                           connection */
  bit suppress_connect_headers:1; /* suppress proxy CONNECT response headers
                                      from user callbacks */
  bit dns_shuffle_addresses:1; /* whether to shuffle addresses before use */
  bit stream_depends_e:1; /* set or don't set the Exclusive bit */
  bit haproxyprotocol:1; /* whether to send HAProxy PROXY protocol v1
                             header */
  bit abstract_unix_socket:1;
  bit disallow_username_in_url:1; /* disallow username in url */
  bit doh:1; /* DNS-over-HTTPS enabled */
  bit doh_get:1; /* use GET for DoH requests, instead of POST */
  bit http09_allowed:1; /* allow HTTP/0.9 responses */
};

struct Names {
  struct curl_hash *hostcache;
  enum {
    HCACHE_NONE,    /* not pointing to anything */
    HCACHE_MULTI,   /* points to a shared one in the multi handle */







|
|
|

|
|
|
|
|
|




|
|
|
|
|

|
|
|
|
|


|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|

|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|







1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731

1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742

1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
  void *resolver_start_client; /* pointer to pass to resolver start callback */
  long upkeep_interval_ms;      /* Time between calls for connection upkeep. */
  multidone_func fmultidone;
  struct Curl_easy *dohfor; /* this is a DoH request for that transfer */
  CURLU *uh; /* URL handle for the current parsed URL */
  void *trailer_data; /* pointer to pass to trailer data callback */
  curl_trailer_callback trailer_callback; /* trailing data callback */
  BIT(is_fread_set); /* has read callback been set to non-NULL? */
  BIT(is_fwrite_set); /* has write callback been set to non-NULL? */
  BIT(free_referer); /* set TRUE if 'referer' points to a string we
                        allocated */
  BIT(tftp_no_options); /* do not send TFTP options requests */
  BIT(sep_headers);     /* handle host and proxy headers separately */
  BIT(cookiesession);   /* new cookie session? */
  BIT(crlf);            /* convert crlf on ftp upload(?) */
  BIT(strip_path_slash); /* strip off initial slash from path */
  BIT(ssh_compression);            /* enable SSH compression */

/* Here follows boolean settings that define how to behave during
   this session. They are STATIC, set by libcurl users or at least initially
   and they don't change during operations. */
  BIT(get_filetime);     /* get the time and get of the remote file */
  BIT(tunnel_thru_httpproxy); /* use CONNECT through a HTTP proxy */
  BIT(prefer_ascii);     /* ASCII rather than binary */
  BIT(ftp_append);       /* append, not overwrite, on upload */
  BIT(ftp_list_only);    /* switch FTP command for listing directories */
#ifndef CURL_DISABLE_FTP
  BIT(ftp_use_port);     /* use the FTP PORT command */
  BIT(ftp_use_epsv);     /* if EPSV is to be attempted or not */
  BIT(ftp_use_eprt);     /* if EPRT is to be attempted or not */
  BIT(ftp_use_pret);     /* if PRET is to be used before PASV or not */
  BIT(ftp_skip_ip);      /* skip the IP address the FTP server passes on to
                            us */
#endif
  BIT(hide_progress);    /* don't use the progress meter */
  BIT(http_fail_on_error);  /* fail on HTTP error codes >= 400 */
  BIT(http_keep_sending_on_error); /* for HTTP status codes >= 300 */
  BIT(http_follow_location); /* follow HTTP redirects */
  BIT(http_transfer_encoding); /* request compressed HTTP transfer-encoding */

  BIT(allow_auth_to_other_hosts);
  BIT(include_header); /* include received protocol headers in data output */
  BIT(http_set_referer); /* is a custom referer used */
  BIT(http_auto_referer); /* set "correct" referer when following
                             location: */
  BIT(opt_no_body);    /* as set with CURLOPT_NOBODY */
  BIT(upload);         /* upload request */
  BIT(verbose);        /* output verbosity */
  BIT(krb);            /* Kerberos connection requested */
  BIT(reuse_forbid);   /* forbidden to be reused, close after use */
  BIT(reuse_fresh);    /* do not re-use an existing connection  */

  BIT(no_signal);      /* do not use any signal/alarm handler */
  BIT(tcp_nodelay);    /* whether to enable TCP_NODELAY or not */
  BIT(ignorecl);       /* ignore content length */
  BIT(connect_only);   /* make connection, let application use the socket */
  BIT(http_te_skip);   /* pass the raw body data to the user, even when
                          transfer-encoded (chunked, compressed) */
  BIT(http_ce_skip);   /* pass the raw body data to the user, even when
                          content-encoded (chunked, compressed) */
  BIT(proxy_transfer_mode); /* set transfer mode (;type=<a|i>) when doing
                               FTP via an HTTP proxy */
#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
  BIT(socks5_gssapi_nec); /* Flag to support NEC SOCKS5 server */
#endif
  BIT(sasl_ir);         /* Enable/disable SASL initial response */
  BIT(wildcard_enabled); /* enable wildcard matching */
  BIT(tcp_keepalive);  /* use TCP keepalives */
  BIT(tcp_fastopen);   /* use TCP Fast Open */
  BIT(ssl_enable_npn); /* TLS NPN extension? */
  BIT(ssl_enable_alpn);/* TLS ALPN extension? */
  BIT(path_as_is);     /* allow dotdots? */
  BIT(pipewait);       /* wait for multiplex status before starting a new
                          connection */
  BIT(suppress_connect_headers); /* suppress proxy CONNECT response headers
                                    from user callbacks */
  BIT(dns_shuffle_addresses); /* whether to shuffle addresses before use */
  BIT(stream_depends_e); /* set or don't set the Exclusive bit */
  BIT(haproxyprotocol); /* whether to send HAProxy PROXY protocol v1
                           header */
  BIT(abstract_unix_socket);
  BIT(disallow_username_in_url); /* disallow username in url */
  BIT(doh); /* DNS-over-HTTPS enabled */
  BIT(doh_get); /* use GET for DoH requests, instead of POST */
  BIT(http09_allowed); /* allow HTTP/0.9 responses */
};

struct Names {
  struct curl_hash *hostcache;
  enum {
    HCACHE_NONE,    /* not pointing to anything */
    HCACHE_MULTI,   /* points to a shared one in the multi handle */
Changes to jni/curl/lib/vauth/vauth.h.
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#endif

#if (defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)) && defined(USE_SPNEGO)
struct negotiatedata;
#endif

#if defined(USE_WINDOWS_SSPI)
#define GSS_ERROR(status) (status & 0x80000000)
#endif

/* This is used to build a SPN string */
#if !defined(USE_WINDOWS_SSPI)
char *Curl_auth_build_spn(const char *service, const char *host,
                          const char *realm);
#else







|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#endif

#if (defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)) && defined(USE_SPNEGO)
struct negotiatedata;
#endif

#if defined(USE_WINDOWS_SSPI)
#define GSS_ERROR(status) ((status) & 0x80000000)
#endif

/* This is used to build a SPN string */
#if !defined(USE_WINDOWS_SSPI)
char *Curl_auth_build_spn(const char *service, const char *host,
                          const char *realm);
#else
Changes to jni/curl/lib/version.c.
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
    return version;

  strcpy(ptr, LIBCURL_NAME "/" LIBCURL_VERSION);
  len = strlen(ptr);
  left -= len;
  ptr += len;

  if(left > 1) {
    len = Curl_ssl_version(ptr + 1, left - 1);

    if(len > 0) {
      *ptr = ' ';
      left -= ++len;
      ptr += len;
    }
  }

#ifdef HAVE_LIBZ
  len = msnprintf(ptr, left, " zlib/%s", zlibVersion());
  left -= len;
  ptr += len;
#endif







<
|

|
|
|
|
<







100
101
102
103
104
105
106

107
108
109
110
111
112

113
114
115
116
117
118
119
    return version;

  strcpy(ptr, LIBCURL_NAME "/" LIBCURL_VERSION);
  len = strlen(ptr);
  left -= len;
  ptr += len;


  len = Curl_ssl_version(ptr + 1, left - 1);

  if(len > 0) {
    *ptr = ' ';
    left -= ++len;
    ptr += len;

  }

#ifdef HAVE_LIBZ
  len = msnprintf(ptr, left, " zlib/%s", zlibVersion());
  left -= len;
  ptr += len;
#endif
365
366
367
368
369
370
371



372
373
374
375
376
377
378
#endif
#if defined(HAVE_BROTLI)
  | CURL_VERSION_BROTLI
#endif
#if defined(USE_ALTSVC)
  | CURL_VERSION_ALTSVC
#endif



  ,
  NULL, /* ssl_version */
  0,    /* ssl_version_num, this is kept at zero */
  NULL, /* zlib_version */
  protocols,
  NULL, /* c-ares version */
  0,    /* c-ares version numerical */







>
>
>







363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
#endif
#if defined(HAVE_BROTLI)
  | CURL_VERSION_BROTLI
#endif
#if defined(USE_ALTSVC)
  | CURL_VERSION_ALTSVC
#endif
#ifdef USE_ESNI
  | CURL_VERSION_ESNI
#endif
  ,
  NULL, /* ssl_version */
  0,    /* ssl_version_num, this is kept at zero */
  NULL, /* zlib_version */
  protocols,
  NULL, /* c-ares version */
  0,    /* c-ares version numerical */
Changes to jni/curl/lib/vquic/ngtcp2.c.
39
40
41
42
43
44
45

46

47
48
49
50
51
52
53

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

/* #define DEBUG_NGTCP2 */

#define DEBUG_HTTP3

#ifdef DEBUG_HTTP3
#define H3BUGF(x) x
#else
#define H3BUGF(x) do { } WHILE_FALSE
#endif

/*







>

>







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

/* The last 3 #include files should be in this order */
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"

/* #define DEBUG_NGTCP2 */
#ifdef CURLDEBUG
#define DEBUG_HTTP3
#endif
#ifdef DEBUG_HTTP3
#define H3BUGF(x) x
#else
#define H3BUGF(x) do { } WHILE_FALSE
#endif

/*
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
  ngtcp2_settings_default(s);
#ifdef DEBUG_NGTCP2
  s->log_printf = quic_printf;
#else
  s->log_printf = NULL;
#endif
  s->initial_ts = timestamp();
  s->max_stream_data_bidi_local = stream_buffer_size;
  s->max_stream_data_bidi_remote = QUIC_MAX_STREAMS;
  s->max_stream_data_uni = QUIC_MAX_STREAMS;
  s->max_data = QUIC_MAX_DATA;
  s->max_streams_bidi = 1;
  s->max_streams_uni = 3;
  s->idle_timeout = QUIC_IDLE_TIMEOUT;
}

static FILE *keylog_file; /* not thread-safe */
static void keylog_callback(const SSL *ssl, const char *line)
{
  (void)ssl;
  fputs(line, keylog_file);







|
|
|
|
|
|
|







136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
  ngtcp2_settings_default(s);
#ifdef DEBUG_NGTCP2
  s->log_printf = quic_printf;
#else
  s->log_printf = NULL;
#endif
  s->initial_ts = timestamp();
  s->transport_params.initial_max_stream_data_bidi_local = stream_buffer_size;
  s->transport_params.initial_max_stream_data_bidi_remote = QUIC_MAX_STREAMS;
  s->transport_params.initial_max_stream_data_uni = QUIC_MAX_STREAMS;
  s->transport_params.initial_max_data = QUIC_MAX_DATA;
  s->transport_params.initial_max_streams_bidi = 1;
  s->transport_params.initial_max_streams_uni = 3;
  s->transport_params.idle_timeout = QUIC_IDLE_TIMEOUT;
}

static FILE *keylog_file; /* not thread-safe */
static void keylog_callback(const SSL *ssl, const char *line)
{
  (void)ssl;
  fputs(line, keylog_file);
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
  memcpy(&crypto_data->buf[crypto_data->len], data, len);
  crypto_data->len += len;

  rv = ngtcp2_conn_submit_crypto_data(
      qs->qconn, level, (uint8_t *)(&crypto_data->buf[crypto_data->len] - len),
      len);
  if(rv) {
    fprintf(stderr, "write_client_handshake failed\n");
  }
  assert(0 == rv);

  return 1;
}

static int quic_flush_flight(SSL *ssl)







|







202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
  memcpy(&crypto_data->buf[crypto_data->len], data, len);
  crypto_data->len += len;

  rv = ngtcp2_conn_submit_crypto_data(
      qs->qconn, level, (uint8_t *)(&crypto_data->buf[crypto_data->len] - len),
      len);
  if(rv) {
    H3BUGF(fprintf(stderr, "write_client_handshake failed\n"));
  }
  assert(0 == rv);

  return 1;
}

static int quic_flush_flight(SSL *ssl)
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558

  qs->conn = conn;

  /* extract the used address as a string */
  if(!Curl_addr2string((struct sockaddr*)addr, addrlen, ipbuf, &port)) {
    char buffer[STRERROR_LEN];
    failf(data, "ssrem inet_ntop() failed with errno %d: %s",
          errno, Curl_strerror(errno, buffer, sizeof(buffer)));
    return CURLE_BAD_FUNCTION_ARGUMENT;
  }

  infof(data, "Connect socket %d over QUIC to %s:%ld\n",
        sockfd, ipbuf, port);

  qs->version = NGTCP2_PROTO_VER;







|







546
547
548
549
550
551
552
553
554
555
556
557
558
559
560

  qs->conn = conn;

  /* extract the used address as a string */
  if(!Curl_addr2string((struct sockaddr*)addr, addrlen, ipbuf, &port)) {
    char buffer[STRERROR_LEN];
    failf(data, "ssrem inet_ntop() failed with errno %d: %s",
          SOCKERRNO, Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
    return CURLE_BAD_FUNCTION_ARGUMENT;
  }

  infof(data, "Connect socket %d over QUIC to %s:%ld\n",
        sockfd, ipbuf, port);

  qs->version = NGTCP2_PROTO_VER;
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
  rc = ngtcp2_conn_client_new(&qs->qconn, &qs->dcid, &qs->scid, &path, QUICVER,
                              &ng_callbacks, &qs->settings, NULL, qs);
  if(rc)
    return CURLE_FAILED_INIT; /* TODO: create a QUIC error code */

  ngtcp2_conn_get_local_transport_params(qs->qconn, &params);
  nwrite = ngtcp2_encode_transport_params(
      paramsbuf, sizeof(paramsbuf), NGTCP2_TRANSPORT_PARAMS_TYPE_CLIENT_HELLO,
      &params);
  if(nwrite < 0) {
    fprintf(stderr, "ngtcp2_encode_transport_params: %s\n",
            ngtcp2_strerror((int)nwrite));

    return CURLE_FAILED_INIT;
  }

  if(!SSL_set_quic_transport_params(qs->ssl, paramsbuf, nwrite))
    return CURLE_FAILED_INIT;

  rc = setup_initial_crypto_context(qs);







|
|

|
|
<







595
596
597
598
599
600
601
602
603
604
605
606

607
608
609
610
611
612
613
  rc = ngtcp2_conn_client_new(&qs->qconn, &qs->dcid, &qs->scid, &path, QUICVER,
                              &ng_callbacks, &qs->settings, NULL, qs);
  if(rc)
    return CURLE_FAILED_INIT; /* TODO: create a QUIC error code */

  ngtcp2_conn_get_local_transport_params(qs->qconn, &params);
  nwrite = ngtcp2_encode_transport_params(
    paramsbuf, sizeof(paramsbuf), NGTCP2_TRANSPORT_PARAMS_TYPE_CLIENT_HELLO,
    &params);
  if(nwrite < 0) {
    failf(data, "ngtcp2_encode_transport_params: %s\n",
          ngtcp2_strerror((int)nwrite));

    return CURLE_FAILED_INIT;
  }

  if(!SSL_set_quic_transport_params(qs->ssl, paramsbuf, nwrite))
    return CURLE_FAILED_INIT;

  rc = setup_initial_crypto_context(qs);
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
{
  struct Curl_easy *data = stream_user_data;
  struct HTTP *stream = data->req.protop;
  (void)conn;
  (void)stream_id;
  (void)app_error_code;
  (void)user_data;
  fprintf(stderr, "cb_h3_stream_close CALLED\n");

  stream->closed = TRUE;
  Curl_expire(data, 0, EXPIRE_QUIC);
  return 0;
}

static int cb_h3_recv_data(nghttp3_conn *conn, int64_t stream_id,
                           const uint8_t *buf, size_t buflen,
                           void *user_data, void *stream_user_data)
{
  struct quicsocket *qs = user_data;
  size_t ncopy;
  struct Curl_easy *data = stream_user_data;
  struct HTTP *stream = data->req.protop;
  (void)conn;
  fprintf(stderr, "cb_h3_recv_data CALLED with %d bytes\n", buflen);

  /* TODO: this needs to be handled properly */
  DEBUGASSERT(buflen <= stream->len);

  ncopy = CURLMIN(stream->len, buflen);
  memcpy(stream->mem, buf, ncopy);
  stream->len -= ncopy;







|















|







696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
{
  struct Curl_easy *data = stream_user_data;
  struct HTTP *stream = data->req.protop;
  (void)conn;
  (void)stream_id;
  (void)app_error_code;
  (void)user_data;
  H3BUGF(infof(data, "cb_h3_stream_close CALLED\n"));

  stream->closed = TRUE;
  Curl_expire(data, 0, EXPIRE_QUIC);
  return 0;
}

static int cb_h3_recv_data(nghttp3_conn *conn, int64_t stream_id,
                           const uint8_t *buf, size_t buflen,
                           void *user_data, void *stream_user_data)
{
  struct quicsocket *qs = user_data;
  size_t ncopy;
  struct Curl_easy *data = stream_user_data;
  struct HTTP *stream = data->req.protop;
  (void)conn;
  H3BUGF(infof(data, "cb_h3_recv_data CALLED with %d bytes\n", buflen));

  /* TODO: this needs to be handled properly */
  DEBUGASSERT(buflen <= stream->len);

  ncopy = CURLMIN(stream->len, buflen);
  memcpy(stream->mem, buf, ncopy);
  stream->len -= ncopy;
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
static int cb_h3_deferred_consume(nghttp3_conn *conn, int64_t stream_id,
                                  size_t consumed, void *user_data,
                                  void *stream_user_data)
{
  struct quicsocket *qs = user_data;
  (void)conn;
  (void)stream_user_data;
  fprintf(stderr, "cb_h3_deferred_consume CALLED\n");

  ngtcp2_conn_extend_max_stream_offset(qs->qconn, stream_id, consumed);
  ngtcp2_conn_extend_max_offset(qs->qconn, consumed);

  return 0;
}








<







746
747
748
749
750
751
752

753
754
755
756
757
758
759
static int cb_h3_deferred_consume(nghttp3_conn *conn, int64_t stream_id,
                                  size_t consumed, void *user_data,
                                  void *stream_user_data)
{
  struct quicsocket *qs = user_data;
  (void)conn;
  (void)stream_user_data;


  ngtcp2_conn_extend_max_stream_offset(qs->qconn, stream_id, consumed);
  ngtcp2_conn_extend_max_offset(qs->qconn, consumed);

  return 0;
}

814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
  size_t ncopy;
  (void)conn;
  (void)stream_id;
  (void)token;
  (void)flags;
  (void)user_data;

  fprintf(stderr, "cb_h3_recv_header called!\n");

  if(h3name.len == sizeof(":status") - 1 &&
     !memcmp(":status", h3name.base, h3name.len)) {
    int status = decode_status_code(h3val.base, h3val.len);
    DEBUGASSERT(status != -1);
    msnprintf(stream->mem, stream->len, "HTTP/3 %03d \r\n", status);
  }
  else {







<
<







814
815
816
817
818
819
820


821
822
823
824
825
826
827
  size_t ncopy;
  (void)conn;
  (void)stream_id;
  (void)token;
  (void)flags;
  (void)user_data;



  if(h3name.len == sizeof(":status") - 1 &&
     !memcmp(":status", h3name.base, h3name.len)) {
    int status = decode_status_code(h3val.base, h3val.len);
    DEBUGASSERT(status != -1);
    msnprintf(stream->mem, stream->len, "HTTP/3 %03d \r\n", status);
  }
  else {
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
                                   void *stream_user_data)
{
  (void)conn;
  (void)stream_id;
  (void)app_error_code;
  (void)user_data;
  (void)stream_user_data;
  fprintf(stderr, "cb_h3_send_stop_sending CALLED\n");
  return 0;
}

static nghttp3_conn_callbacks ngh3_callbacks = {
  cb_h3_acked_stream_data, /* acked_stream_data */
  cb_h3_stream_close,
  cb_h3_recv_data,







<







843
844
845
846
847
848
849

850
851
852
853
854
855
856
                                   void *stream_user_data)
{
  (void)conn;
  (void)stream_id;
  (void)app_error_code;
  (void)user_data;
  (void)stream_user_data;

  return 0;
}

static nghttp3_conn_callbacks ngh3_callbacks = {
  cb_h3_acked_stream_data, /* acked_stream_data */
  cb_h3_stream_close,
  cb_h3_recv_data,
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
                                size_t buffersize,
                                CURLcode *curlcode)
{
  curl_socket_t sockfd = conn->sock[sockindex];
  struct HTTP *stream = conn->data->req.protop;
  struct quicsocket *qs = conn->quic;

  fprintf(stderr, "ngh3_stream_recv CALLED (easy %p, socket %d)\n",
          conn->data, sockfd);

  if(!stream->memlen) {
    /* remember where to store incoming data for this stream and how big the
       buffer is */
    stream->mem = buf;
    stream->len = buffersize;
  }
  /* else, there's data in the buffer already */







<
<
<







940
941
942
943
944
945
946



947
948
949
950
951
952
953
                                size_t buffersize,
                                CURLcode *curlcode)
{
  curl_socket_t sockfd = conn->sock[sockindex];
  struct HTTP *stream = conn->data->req.protop;
  struct quicsocket *qs = conn->quic;




  if(!stream->memlen) {
    /* remember where to store incoming data for this stream and how big the
       buffer is */
    stream->mem = buf;
    stream->len = buffersize;
  }
  /* else, there's data in the buffer already */
999
1000
1001
1002
1003
1004
1005

1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023

1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068

1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
  struct HTTP *stream = data->req.protop;
  (void)conn;
  (void)stream_id;
  (void)user_data;

  if(!data->set.postfields) {
    stream->h3out->used -= datalen;

    fprintf(stderr, "cb_h3_acked_stream_data, %zd bytes, %zd left unacked\n",
            datalen, stream->h3out->used);
    DEBUGASSERT(stream->h3out->used < H3_SEND_SIZE);
  }
  return 0;
}

static int cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id,
                              const uint8_t **pdata,
                              size_t *pdatalen, uint32_t *pflags,
                              void *user_data, void *stream_user_data)
{
  struct Curl_easy *data = stream_user_data;
  size_t nread;
  struct HTTP *stream = data->req.protop;
  (void)conn;
  (void)stream_id;
  (void)user_data;


  if(data->set.postfields) {
    *pdata = data->set.postfields;
    *pdatalen = data->state.infilesize;
    *pflags = NGHTTP3_DATA_FLAG_EOF;
    return 0;
  }

  nread = CURLMIN(stream->upload_len, H3_SEND_SIZE - stream->h3out->used);
  if(nread > 0) {
    /* nghttp3 wants us to hold on to the data until it tells us it is okay to
       delete it. Append the data at the end of the h3out buffer. Since we can
       only return consecutive data, copy the amount that fits and the next
       part comes in next invoke. */
    struct h3out *out = stream->h3out;
    if(nread + out->windex > H3_SEND_SIZE)
      nread = H3_SEND_SIZE - out->windex;

    memcpy(&out->buf[out->windex], stream->upload_mem, nread);
    out->windex += nread;
    out->used += nread;

    /* that's the chunk we return to nghttp3 */
    *pdata = &out->buf[out->windex];
    *pdatalen = nread;

    if(out->windex == H3_SEND_SIZE)
      out->windex = 0; /* wrap */
    stream->upload_mem += nread;
    stream->upload_len -= nread;
    if(data->state.infilesize != -1) {
      stream->upload_left -= nread;
      if(!stream->upload_left)
        *pflags = NGHTTP3_DATA_FLAG_EOF;
    }
    fprintf(stderr, "cb_h3_readfunction %zd bytes%s (at %zd unacked)\n",
            nread, *pflags == NGHTTP3_DATA_FLAG_EOF?" EOF":"",
            out->used);
  }
  if(stream->upload_done && !stream->upload_len &&
     (stream->upload_left <= 0)) {
    H3BUGF(infof(data, "!!!!!!!!! cb_h3_readfunction sets EOF\n"));
    *pdata = NULL;
    *pdatalen = 0;
    *pflags = NGHTTP3_DATA_FLAG_EOF;

  }
  else if(!nread) {
    *pdatalen = 0;
    return NGHTTP3_ERR_WOULDBLOCK;
  }
  return 0;
}

/* Index where :authority header field will appear in request header
   field list. */
#define AUTHORITY_DST_IDX 3

static CURLcode http_request(struct connectdata *conn, const void *mem,







>
|
|





|
|
|
|







>


|
|

|

















|
|










|
|
|




<
<

>


<


|







993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061


1062
1063
1064
1065

1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
  struct HTTP *stream = data->req.protop;
  (void)conn;
  (void)stream_id;
  (void)user_data;

  if(!data->set.postfields) {
    stream->h3out->used -= datalen;
    H3BUGF(infof(data,
                 "cb_h3_acked_stream_data, %zd bytes, %zd left unacked\n",
                 datalen, stream->h3out->used));
    DEBUGASSERT(stream->h3out->used < H3_SEND_SIZE);
  }
  return 0;
}

static ssize_t cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id,
                                  nghttp3_vec *vec, size_t veccnt,
                                  uint32_t *pflags, void *user_data,
                                  void *stream_user_data)
{
  struct Curl_easy *data = stream_user_data;
  size_t nread;
  struct HTTP *stream = data->req.protop;
  (void)conn;
  (void)stream_id;
  (void)user_data;
  (void)veccnt;

  if(data->set.postfields) {
    vec[0].base = data->set.postfields;
    vec[0].len = data->state.infilesize;
    *pflags = NGHTTP3_DATA_FLAG_EOF;
    return 1;
  }

  nread = CURLMIN(stream->upload_len, H3_SEND_SIZE - stream->h3out->used);
  if(nread > 0) {
    /* nghttp3 wants us to hold on to the data until it tells us it is okay to
       delete it. Append the data at the end of the h3out buffer. Since we can
       only return consecutive data, copy the amount that fits and the next
       part comes in next invoke. */
    struct h3out *out = stream->h3out;
    if(nread + out->windex > H3_SEND_SIZE)
      nread = H3_SEND_SIZE - out->windex;

    memcpy(&out->buf[out->windex], stream->upload_mem, nread);
    out->windex += nread;
    out->used += nread;

    /* that's the chunk we return to nghttp3 */
    vec[0].base = &out->buf[out->windex];
    vec[0].len = nread;

    if(out->windex == H3_SEND_SIZE)
      out->windex = 0; /* wrap */
    stream->upload_mem += nread;
    stream->upload_len -= nread;
    if(data->state.infilesize != -1) {
      stream->upload_left -= nread;
      if(!stream->upload_left)
        *pflags = NGHTTP3_DATA_FLAG_EOF;
    }
    H3BUGF(infof(data, "cb_h3_readfunction %zd bytes%s (at %zd unacked)\n",
                 nread, *pflags == NGHTTP3_DATA_FLAG_EOF?" EOF":"",
                 out->used));
  }
  if(stream->upload_done && !stream->upload_len &&
     (stream->upload_left <= 0)) {
    H3BUGF(infof(data, "!!!!!!!!! cb_h3_readfunction sets EOF\n"));


    *pflags = NGHTTP3_DATA_FLAG_EOF;
    return 0;
  }
  else if(!nread) {

    return NGHTTP3_ERR_WOULDBLOCK;
  }
  return 1;
}

/* Index where :authority header field will appear in request header
   field list. */
#define AUTHORITY_DST_IDX 3

static CURLcode http_request(struct connectdata *conn, const void *mem,
1198
1199
1200
1201
1202
1203
1204
1205
1206



1207
1208
1209
1210
1211
1212
1213

    if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
      authority_idx = i;
      nva[i].name = (unsigned char *)":authority";
      nva[i].namelen = strlen((char *)nva[i].name);
    }
    else {
      nva[i].name = (unsigned char *)hdbuf;
      nva[i].namelen = (size_t)(end - hdbuf);



    }
    nva[i].flags = NGHTTP3_NV_FLAG_NONE;
    hdbuf = end + 1;
    while(*hdbuf == ' ' || *hdbuf == '\t')
      ++hdbuf;
    end = line_end;








<

>
>
>







1192
1193
1194
1195
1196
1197
1198

1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209

    if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
      authority_idx = i;
      nva[i].name = (unsigned char *)":authority";
      nva[i].namelen = strlen((char *)nva[i].name);
    }
    else {

      nva[i].namelen = (size_t)(end - hdbuf);
      /* Lower case the header name for HTTP/3 */
      Curl_strntolower((char *)hdbuf, hdbuf, nva[i].namelen);
      nva[i].name = (unsigned char *)hdbuf;
    }
    nva[i].flags = NGHTTP3_NV_FLAG_NONE;
    hdbuf = end + 1;
    while(*hdbuf == ' ' || *hdbuf == '\t')
      ++hdbuf;
    end = line_end;

1328
1329
1330
1331
1332
1333
1334
1335

1336
1337
1338
1339
1340
1341
1342
    if(result) {
      *curlcode = CURLE_SEND_ERROR;
      return -1;
    }
    sent = len;
  }
  else {
    fprintf(stderr, "ngh3_stream_send() wants to send %zd bytes\n", len);

    if(!stream->upload_len) {
      stream->upload_mem = mem;
      stream->upload_len = len;
      (void)nghttp3_conn_resume_stream(qs->h3conn, stream->stream3_id);
      sent = len;
    }
    else {







|
>







1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
    if(result) {
      *curlcode = CURLE_SEND_ERROR;
      return -1;
    }
    sent = len;
  }
  else {
    H3BUGF(infof(conn->data, "ngh3_stream_send() wants to send %zd bytes\n",
                 len));
    if(!stream->upload_len) {
      stream->upload_mem = mem;
      stream->upload_len = len;
      (void)nghttp3_conn_resume_stream(qs->h3conn, stream->stream3_id);
      sent = len;
    }
    else {
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
  struct sockaddr_storage remote_addr;
  socklen_t remote_addrlen;
  ngtcp2_path path;
  ngtcp2_tstamp ts = timestamp();

  for(;;) {
    remote_addrlen = sizeof(remote_addr);
    while((recvd = recvfrom(sockfd, buf, bufsize, MSG_DONTWAIT,
                            (struct sockaddr *)&remote_addr,
                            &remote_addrlen)) == -1 &&
          errno == EINTR)
      ;
    if(recvd == -1) {
      if(errno == EAGAIN || errno == EWOULDBLOCK)
        break;

      failf(conn->data, "ngtcp2: recvfrom() unexpectedly returned %d", recvd);
      return CURLE_RECV_ERROR;
    }

    ngtcp2_addr_init(&path.local, (uint8_t *)&qs->local_addr,







|


|


|







1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
  struct sockaddr_storage remote_addr;
  socklen_t remote_addrlen;
  ngtcp2_path path;
  ngtcp2_tstamp ts = timestamp();

  for(;;) {
    remote_addrlen = sizeof(remote_addr);
    while((recvd = recvfrom(sockfd, buf, bufsize, 0,
                            (struct sockaddr *)&remote_addr,
                            &remote_addrlen)) == -1 &&
          SOCKERRNO == EINTR)
      ;
    if(recvd == -1) {
      if(SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK)
        break;

      failf(conn->data, "ngtcp2: recvfrom() unexpectedly returned %d", recvd);
      return CURLE_RECV_ERROR;
    }

    ngtcp2_addr_init(&path.local, (uint8_t *)&qs->local_addr,
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
          }
          else {
            failf(conn->data, "ngtcp2_conn_writev_stream returned error: %s\n",
                  ngtcp2_strerror((int)outlen));
            return CURLE_SEND_ERROR;
          }
        }
        else if(ndatalen > 0) {
          rv = nghttp3_conn_add_write_offset(qs->h3conn, stream_id, ndatalen);
          if(rv != 0) {
            failf(conn->data,
                  "nghttp3_conn_add_write_offset returned error: %s\n",
                  nghttp3_strerror(rv));
            return CURLE_SEND_ERROR;
          }







|







1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
          }
          else {
            failf(conn->data, "ngtcp2_conn_writev_stream returned error: %s\n",
                  ngtcp2_strerror((int)outlen));
            return CURLE_SEND_ERROR;
          }
        }
        else if(ndatalen >= 0) {
          rv = nghttp3_conn_add_write_offset(qs->h3conn, stream_id, ndatalen);
          if(rv != 0) {
            failf(conn->data,
                  "nghttp3_conn_add_write_offset returned error: %s\n",
                  nghttp3_strerror(rv));
            return CURLE_SEND_ERROR;
          }
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
        return CURLE_SEND_ERROR;
      }
      if(outlen == 0)
        break;
    }

    memcpy(&remote_addr, ps.path.remote.addr, ps.path.remote.addrlen);
    while((sent = sendto(sockfd, out, outlen, MSG_DONTWAIT,
                         (struct sockaddr *)&remote_addr,
                         (socklen_t)ps.path.remote.addrlen)) == -1 &&
          errno == EINTR)
      ;

    if(sent == -1) {
      if(errno == EAGAIN || errno == EWOULDBLOCK) {
        /* TODO Cache packet */
        break;
      }
      else {
        failf(conn->data, "sendto() returned %zd (errno %d)\n", sent,
              SOCKERRNO);
        return CURLE_SEND_ERROR;
      }
    }
  }

  expiry = ngtcp2_conn_get_expiry(qs->qconn);







|
<
<
|



|




|







1540
1541
1542
1543
1544
1545
1546
1547


1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
        return CURLE_SEND_ERROR;
      }
      if(outlen == 0)
        break;
    }

    memcpy(&remote_addr, ps.path.remote.addr, ps.path.remote.addrlen);
    while((sent = send(sockfd, out, outlen, 0)) == -1 &&


          SOCKERRNO == EINTR)
      ;

    if(sent == -1) {
      if(SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK) {
        /* TODO Cache packet */
        break;
      }
      else {
        failf(conn->data, "send() returned %zd (errno %d)\n", sent,
              SOCKERRNO);
        return CURLE_SEND_ERROR;
      }
    }
  }

  expiry = ngtcp2_conn_get_expiry(qs->qconn);
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
 */
CURLcode Curl_quic_done_sending(struct connectdata *conn)
{
  if(conn->handler == &Curl_handler_http3) {
    /* only for HTTP/3 transfers */
    struct HTTP *stream = conn->data->req.protop;
    struct quicsocket *qs = conn->quic;
    fprintf(stderr, "!!! Curl_quic_done_sending stream %zu\n",
            stream->stream3_id);
    stream->upload_done = TRUE;
    (void)nghttp3_conn_resume_stream(qs->h3conn, stream->stream3_id);
  }

  return CURLE_OK;
}
#endif







<
<







1580
1581
1582
1583
1584
1585
1586


1587
1588
1589
1590
1591
1592
1593
 */
CURLcode Curl_quic_done_sending(struct connectdata *conn)
{
  if(conn->handler == &Curl_handler_http3) {
    /* only for HTTP/3 transfers */
    struct HTTP *stream = conn->data->req.protop;
    struct quicsocket *qs = conn->quic;


    stream->upload_done = TRUE;
    (void)nghttp3_conn_resume_stream(qs->h3conn, stream->stream3_id);
  }

  return CURLE_OK;
}
#endif
Changes to jni/curl/lib/vquic/quiche.c.
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#define H3BUGF(x) x
#else
#define H3BUGF(x) do { } WHILE_FALSE
#endif

#define QUIC_MAX_STREAMS (256*1024)
#define QUIC_MAX_DATA (1*1024*1024)
#define QUIC_IDLE_TIMEOUT 60 * 1000 /* milliseconds */

static CURLcode process_ingress(struct connectdata *conn,
                                curl_socket_t sockfd,
                                struct quicsocket *qs);

static CURLcode flush_egress(struct connectdata *conn, curl_socket_t sockfd,
                             struct quicsocket *qs);







|







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#define H3BUGF(x) x
#else
#define H3BUGF(x) do { } WHILE_FALSE
#endif

#define QUIC_MAX_STREAMS (256*1024)
#define QUIC_MAX_DATA (1*1024*1024)
#define QUIC_IDLE_TIMEOUT (60 * 1000) /* milliseconds */

static CURLcode process_ingress(struct connectdata *conn,
                                curl_socket_t sockfd,
                                struct quicsocket *qs);

static CURLcode flush_egress(struct connectdata *conn, curl_socket_t sockfd,
                             struct quicsocket *qs);
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215

216
217
218
219
220
221
222
223
    return CURLE_OUT_OF_MEMORY;
  }

  result = flush_egress(conn, sockfd, qs);
  if(result)
    return result;

#if 0
  /* store the used address as a string */
  if(!Curl_addr2string((struct sockaddr*)addr,
                       conn->primary_ip, &conn->primary_port)) {
    char buffer[STRERROR_LEN];
    failf(data, "ssrem inet_ntop() failed with errno %d: %s",
          errno, Curl_strerror(errno, buffer, sizeof(buffer)));
    return CURLE_BAD_FUNCTION_ARGUMENT;
  }
  memcpy(conn->ip_addr_str, conn->primary_ip, MAX_IPADR_LEN);

#endif
  /* for connection reuse purposes: */
  conn->ssl[FIRSTSOCKET].state = ssl_connection_complete;

  infof(data, "Sent QUIC client Initial, ALPN: %s\n",
        QUICHE_H3_APPLICATION_PROTOCOL + 1);

  return CURLE_OK;







<

|



|



>
|







199
200
201
202
203
204
205

206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
    return CURLE_OUT_OF_MEMORY;
  }

  result = flush_egress(conn, sockfd, qs);
  if(result)
    return result;


  /* store the used address as a string */
  if(!Curl_addr2string((struct sockaddr*)addr, addrlen,
                       conn->primary_ip, &conn->primary_port)) {
    char buffer[STRERROR_LEN];
    failf(data, "ssrem inet_ntop() failed with errno %d: %s",
          SOCKERRNO, Curl_strerror(SOCKERRNO, buffer, sizeof(buffer)));
    return CURLE_BAD_FUNCTION_ARGUMENT;
  }
  memcpy(conn->ip_addr_str, conn->primary_ip, MAX_IPADR_LEN);
  Curl_persistconninfo(conn);

  /* for connection reuse purposes: */
  conn->ssl[FIRSTSOCKET].state = ssl_connection_complete;

  infof(data, "Sent QUIC client Initial, ALPN: %s\n",
        QUICHE_H3_APPLICATION_PROTOCOL + 1);

  return CURLE_OK;
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
  conn->recv[sockindex] = h3_stream_recv;
  conn->send[sockindex] = h3_stream_send;
  conn->handler = &Curl_handler_http3;
  conn->bits.multiplex = TRUE; /* at least potentially multiplexed */
  conn->httpversion = 30;
  conn->bundle->multiuse = BUNDLE_MULTIPLEX;

  qs->h3config = quiche_h3_config_new(0, 1024, 0, 0);
  if(!qs->h3config)
    return CURLE_OUT_OF_MEMORY;

  /* Create a new HTTP/3 connection on the QUIC connection. */
  qs->h3c = quiche_h3_conn_new_with_transport(qs->conn, qs->h3config);
  if(!qs->h3c) {
    result = CURLE_OUT_OF_MEMORY;







|







233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
  conn->recv[sockindex] = h3_stream_recv;
  conn->send[sockindex] = h3_stream_send;
  conn->handler = &Curl_handler_http3;
  conn->bits.multiplex = TRUE; /* at least potentially multiplexed */
  conn->httpversion = 30;
  conn->bundle->multiuse = BUNDLE_MULTIPLEX;

  qs->h3config = quiche_h3_config_new();
  if(!qs->h3config)
    return CURLE_OUT_OF_MEMORY;

  /* Create a new HTTP/3 connection on the QUIC connection. */
  qs->h3c = quiche_h3_conn_new_with_transport(qs->conn, qs->h3config);
  if(!qs->h3c) {
    result = CURLE_OUT_OF_MEMORY;
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
  size_t bufsize = data->set.buffer_size;

  /* in case the timeout expired */
  quiche_conn_on_timeout(qs->conn);

  do {
    recvd = recv(sockfd, buf, bufsize, 0);
    if((recvd < 0) && ((errno == EAGAIN) || (errno == EWOULDBLOCK)))
      break;

    if(recvd < 0) {
      failf(conn->data, "quiche: recv() unexpectedly returned %d "
            "(errno: %d, socket %d)", recvd, SOCKERRNO, sockfd);
      return CURLE_RECV_ERROR;
    }







|







297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
  size_t bufsize = data->set.buffer_size;

  /* in case the timeout expired */
  quiche_conn_on_timeout(qs->conn);

  do {
    recvd = recv(sockfd, buf, bufsize, 0);
    if((recvd < 0) && ((SOCKERRNO == EAGAIN) || (SOCKERRNO == EWOULDBLOCK)))
      break;

    if(recvd < 0) {
      failf(conn->data, "quiche: recv() unexpectedly returned %d "
            "(errno: %d, socket %d)", recvd, SOCKERRNO, sockfd);
      return CURLE_RECV_ERROR;
    }
400
401
402
403
404
405
406

407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
  ssize_t recvd = -1;
  ssize_t rcode;
  struct quicsocket *qs = conn->quic;
  curl_socket_t sockfd = conn->sock[sockindex];
  quiche_h3_event *ev;
  int rc;
  struct h3h1header headers;

  struct HTTP *stream = conn->data->req.protop;
  headers.dest = buf;
  headers.destlen = buffersize;
  headers.nlen = 0;

  if(process_ingress(conn, sockfd, qs)) {
    infof(conn->data, "h3_stream_recv returns on ingress\n");
    *curlcode = CURLE_RECV_ERROR;
    return -1;
  }

  while(recvd < 0) {
    int64_t s = quiche_h3_conn_poll(qs->h3c, qs->conn, &ev);
    if(s < 0)
      /* nothing more to do */
      break;

    if(s != stream->stream3_id) {
      /* another transfer, ignore for now */
      infof(conn->data, "Got h3 for stream %u, expects %u\n",
            s, stream->stream3_id);
      continue;
    }

    switch(quiche_h3_event_type(ev)) {
    case QUICHE_H3_EVENT_HEADERS:
      rc = quiche_h3_event_for_each_header(ev, cb_each_header, &headers);







>
|





|












|







400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
  ssize_t recvd = -1;
  ssize_t rcode;
  struct quicsocket *qs = conn->quic;
  curl_socket_t sockfd = conn->sock[sockindex];
  quiche_h3_event *ev;
  int rc;
  struct h3h1header headers;
  struct Curl_easy *data = conn->data;
  struct HTTP *stream = data->req.protop;
  headers.dest = buf;
  headers.destlen = buffersize;
  headers.nlen = 0;

  if(process_ingress(conn, sockfd, qs)) {
    infof(data, "h3_stream_recv returns on ingress\n");
    *curlcode = CURLE_RECV_ERROR;
    return -1;
  }

  while(recvd < 0) {
    int64_t s = quiche_h3_conn_poll(qs->h3c, qs->conn, &ev);
    if(s < 0)
      /* nothing more to do */
      break;

    if(s != stream->stream3_id) {
      /* another transfer, ignore for now */
      infof(data, "Got h3 for stream %u, expects %u\n",
            s, stream->stream3_id);
      continue;
    }

    switch(quiche_h3_event_type(ev)) {
    case QUICHE_H3_EVENT_HEADERS:
      rc = quiche_h3_event_for_each_header(ev, cb_each_header, &headers);
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480


481
482
483
484
485
486
487
        recvd = -1;
        break;
      }
      recvd += rcode;
      break;

    case QUICHE_H3_EVENT_FINISHED:
      if(quiche_conn_close(qs->conn, true, 0, NULL, 0) < 0) {
        ;
      }
      recvd = 0; /* end of stream */
      break;
    default:
      break;
    }

    quiche_h3_event_free(ev);
  }
  if(flush_egress(conn, sockfd, qs)) {
    *curlcode = CURLE_SEND_ERROR;
    return -1;
  }

  *curlcode = (-1 == recvd)? CURLE_AGAIN : CURLE_OK;
  if(recvd >= 0)
    /* Get this called again to drain the event queue */
    Curl_expire(conn->data, 0, EXPIRE_QUIC);


  return recvd;
}

static ssize_t h3_stream_send(struct connectdata *conn,
                              int sockindex,
                              const void *mem,
                              size_t len,







|
<
<
















|
>
>







455
456
457
458
459
460
461
462


463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
        recvd = -1;
        break;
      }
      recvd += rcode;
      break;

    case QUICHE_H3_EVENT_FINISHED:
      streamclose(conn, "End of stream");


      recvd = 0; /* end of stream */
      break;
    default:
      break;
    }

    quiche_h3_event_free(ev);
  }
  if(flush_egress(conn, sockfd, qs)) {
    *curlcode = CURLE_SEND_ERROR;
    return -1;
  }

  *curlcode = (-1 == recvd)? CURLE_AGAIN : CURLE_OK;
  if(recvd >= 0)
    /* Get this called again to drain the event queue */
    Curl_expire(data, 0, EXPIRE_QUIC);

  data->state.drain = (recvd >= 0) ? 1 : 0;
  return recvd;
}

static ssize_t h3_stream_send(struct connectdata *conn,
                              int sockindex,
                              const void *mem,
                              size_t len,
642
643
644
645
646
647
648
649
650



651
652
653
654
655
656
657

    if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
      authority_idx = i;
      nva[i].name = (unsigned char *)":authority";
      nva[i].name_len = strlen((char *)nva[i].name);
    }
    else {
      nva[i].name = (unsigned char *)hdbuf;
      nva[i].name_len = (size_t)(end - hdbuf);



    }
    hdbuf = end + 1;
    while(*hdbuf == ' ' || *hdbuf == '\t')
      ++hdbuf;
    end = line_end;

#if 0 /* This should probably go in more or less like this */







<

>
>
>







643
644
645
646
647
648
649

650
651
652
653
654
655
656
657
658
659
660

    if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
      authority_idx = i;
      nva[i].name = (unsigned char *)":authority";
      nva[i].name_len = strlen((char *)nva[i].name);
    }
    else {

      nva[i].name_len = (size_t)(end - hdbuf);
      /* Lower case the header name for HTTP/3 */
      Curl_strntolower((char *)hdbuf, hdbuf, nva[i].name_len);
      nva[i].name = (unsigned char *)hdbuf;
    }
    hdbuf = end + 1;
    while(*hdbuf == ' ' || *hdbuf == '\t')
      ++hdbuf;
    end = line_end;

#if 0 /* This should probably go in more or less like this */
Changes to jni/curl/lib/vssh/libssh.c.
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
      if(rc == SSH_AUTH_AGAIN)
        return SSH_AGAIN;

      if(rc != SSH_AUTH_INFO)
        return SSH_ERROR;

      nprompts = ssh_userauth_kbdint_getnprompts(sshc->ssh_session);
      if(nprompts == SSH_ERROR || nprompts != 1)
        return SSH_ERROR;

      rc = ssh_userauth_kbdint_setanswer(sshc->ssh_session, 0, conn->passwd);
      if(rc < 0)
        return SSH_ERROR;

    /* FALLTHROUGH */







|







489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
      if(rc == SSH_AUTH_AGAIN)
        return SSH_AGAIN;

      if(rc != SSH_AUTH_INFO)
        return SSH_ERROR;

      nprompts = ssh_userauth_kbdint_getnprompts(sshc->ssh_session);
      if(nprompts != 1)
        return SSH_ERROR;

      rc = ssh_userauth_kbdint_setanswer(sshc->ssh_session, 0, conn->passwd);
      if(rc < 0)
        return SSH_ERROR;

    /* FALLTHROUGH */
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
            state(conn, SSH_SFTP_READDIR_LINK);
            break;
          }
          state(conn, SSH_SFTP_READDIR_BOTTOM);
          break;
        }
      }
      else if(sshc->readdir_attrs == NULL && sftp_dir_eof(sshc->sftp_dir)) {
        state(conn, SSH_SFTP_READDIR_DONE);
        break;
      }
      else {
        failf(data, "Could not open remote file for reading: %s",
              ssh_get_error(sshc->ssh_session));
        MOVE_TO_SFTP_CLOSE_STATE();







|







1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
            state(conn, SSH_SFTP_READDIR_LINK);
            break;
          }
          state(conn, SSH_SFTP_READDIR_BOTTOM);
          break;
        }
      }
      else if(sftp_dir_eof(sshc->sftp_dir)) {
        state(conn, SSH_SFTP_READDIR_DONE);
        break;
      }
      else {
        failf(data, "Could not open remote file for reading: %s",
              ssh_get_error(sshc->ssh_session));
        MOVE_TO_SFTP_CLOSE_STATE();
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
      left = Curl_timeleft(data, NULL, FALSE);
      if(left < 0) {
        failf(data, "Operation timed out");
        return CURLE_OPERATION_TIMEDOUT;
      }
    }

    if(!result && block) {
      curl_socket_t fd_read = conn->sock[FIRSTSOCKET];
      /* wait for the socket to become ready */
      (void) Curl_socket_check(fd_read, CURL_SOCKET_BAD,
                               CURL_SOCKET_BAD, left > 1000 ? 1000 : left);
    }

  }







|







1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
      left = Curl_timeleft(data, NULL, FALSE);
      if(left < 0) {
        failf(data, "Operation timed out");
        return CURLE_OPERATION_TIMEDOUT;
      }
    }

    if(block) {
      curl_socket_t fd_read = conn->sock[FIRSTSOCKET];
      /* wait for the socket to become ready */
      (void) Curl_socket_check(fd_read, CURL_SOCKET_BAD,
                               CURL_SOCKET_BAD, left > 1000 ? 1000 : left);
    }

  }
Changes to jni/curl/lib/vssh/libssh2.c.
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
      if(left < 0) {
        failf(data, "Operation timed out");
        return CURLE_OPERATION_TIMEDOUT;
      }
    }

#ifdef HAVE_LIBSSH2_SESSION_BLOCK_DIRECTION
    if(!result && block) {
      int dir = libssh2_session_block_directions(sshc->ssh_session);
      curl_socket_t sock = conn->sock[FIRSTSOCKET];
      curl_socket_t fd_read = CURL_SOCKET_BAD;
      curl_socket_t fd_write = CURL_SOCKET_BAD;
      if(LIBSSH2_SESSION_BLOCK_INBOUND & dir)
        fd_read = sock;
      if(LIBSSH2_SESSION_BLOCK_OUTBOUND & dir)
        fd_write = sock;
      /* wait for the socket to become ready */
      (void)Curl_socket_check(fd_read, CURL_SOCKET_BAD, fd_write,
                              left>1000?1000:left); /* ignore result */
    }
#endif

  }

  return result;
}







|










|







2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
      if(left < 0) {
        failf(data, "Operation timed out");
        return CURLE_OPERATION_TIMEDOUT;
      }
    }

#ifdef HAVE_LIBSSH2_SESSION_BLOCK_DIRECTION
    if(block) {
      int dir = libssh2_session_block_directions(sshc->ssh_session);
      curl_socket_t sock = conn->sock[FIRSTSOCKET];
      curl_socket_t fd_read = CURL_SOCKET_BAD;
      curl_socket_t fd_write = CURL_SOCKET_BAD;
      if(LIBSSH2_SESSION_BLOCK_INBOUND & dir)
        fd_read = sock;
      if(LIBSSH2_SESSION_BLOCK_OUTBOUND & dir)
        fd_write = sock;
      /* wait for the socket to become ready */
      (void)Curl_socket_check(fd_read, CURL_SOCKET_BAD, fd_write,
                              left>1000?1000:(time_t)left);
    }
#endif

  }

  return result;
}
Changes to jni/curl/lib/vtls/gskit.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28


29
30
31
32
33
34
35
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "curl_setup.h"

#ifdef USE_GSKIT

#include <gskssl.h>
#include <qsoasync.h>



/* Some symbols are undefined/unsupported on OS400 versions < V7R1. */
#ifndef GSK_SSL_EXTN_SERVERNAME_REQUEST
#define GSK_SSL_EXTN_SERVERNAME_REQUEST         230
#endif

#ifndef GSK_TLSV10_CIPHER_SPECS







|




















>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "curl_setup.h"

#ifdef USE_GSKIT

#include <gskssl.h>
#include <qsoasync.h>
#undef HAVE_SOCKETPAIR /* because the native one isn't good enough */
#include "socketpair.h"

/* Some symbols are undefined/unsupported on OS400 versions < V7R1. */
#ifndef GSK_SSL_EXTN_SERVERNAME_REQUEST
#define GSK_SSL_EXTN_SERVERNAME_REQUEST         230
#endif

#ifndef GSK_TLSV10_CIPHER_SPECS
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614

static void close_async_handshake(struct ssl_connect_data *connssl)
{
  QsoDestroyIOCompletionPort(BACKEND->iocport);
  BACKEND->iocport = -1;
}

/* SSL over SSL
 * Problems:
 * 1) GSKit can only perform SSL on an AF_INET or AF_INET6 stream socket. To
 *    pipe an SSL stream into another, it is therefore needed to have a pair
 *    of such communicating sockets and handle the pipelining explicitly.
 * 2) OS/400 socketpair() is only implemented for domain AF_UNIX, thus cannot
 *    be used to produce the pipeline.
 * The solution is to simulate socketpair() for AF_INET with low-level API
 *    listen(), bind() and connect().
 */

static int
inetsocketpair(int sv[2])
{
  int lfd;      /* Listening socket. */
  int sfd;      /* Server socket. */
  int cfd;      /* Client socket. */
  int len;
  struct sockaddr_in addr1;
  struct sockaddr_in addr2;

  /* Create listening socket on a local dynamic port. */
  lfd = socket(AF_INET, SOCK_STREAM, 0);
  if(lfd < 0)
    return -1;
  memset((char *) &addr1, 0, sizeof(addr1));
  addr1.sin_family = AF_INET;
  addr1.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
  addr1.sin_port = 0;
  if(bind(lfd, (struct sockaddr *) &addr1, sizeof(addr1)) ||
     listen(lfd, 2) < 0) {
    close(lfd);
    return -1;
  }

  /* Get the allocated port. */
  len = sizeof(addr1);
  if(getsockname(lfd, (struct sockaddr *) &addr1, &len) < 0) {
    close(lfd);
    return -1;
  }

  /* Create the client socket. */
  cfd = socket(AF_INET, SOCK_STREAM, 0);
  if(cfd < 0) {
    close(lfd);
    return -1;
  }

  /* Request unblocking connection to the listening socket. */
  curlx_nonblock(cfd, TRUE);
  if(connect(cfd, (struct sockaddr *) &addr1, sizeof(addr1)) < 0 &&
     errno != EINPROGRESS) {
    close(lfd);
    close(cfd);
    return -1;
  }

  /* Get the client dynamic port for intrusion check below. */
  len = sizeof(addr2);
  if(getsockname(cfd, (struct sockaddr *) &addr2, &len) < 0) {
    close(lfd);
    close(cfd);
    return -1;
  }

  /* Accept the incoming connection and get the server socket. */
  curlx_nonblock(lfd, TRUE);
  for(;;) {
    len = sizeof(addr1);
    sfd = accept(lfd, (struct sockaddr *) &addr1, &len);
    if(sfd < 0) {
      close(lfd);
      close(cfd);
      return -1;
    }

    /* Check for possible intrusion from an external process. */
    if(addr1.sin_addr.s_addr == addr2.sin_addr.s_addr &&
       addr1.sin_port == addr2.sin_port)
      break;

    /* Intrusion: reject incoming connection. */
    close(sfd);
  }

  /* Done, return sockets and succeed. */
  close(lfd);
  curlx_nonblock(cfd, FALSE);
  sv[0] = cfd;
  sv[1] = sfd;
  return 0;
}

static int pipe_ssloverssl(struct connectdata *conn, int sockindex,
                           int directions)
{
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  struct ssl_connect_data *connproxyssl = &conn->proxy_ssl[sockindex];
  fd_set fds_read;
  fd_set fds_write;







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







509
510
511
512
513
514
515






























































































516
517
518
519
520
521
522

static void close_async_handshake(struct ssl_connect_data *connssl)
{
  QsoDestroyIOCompletionPort(BACKEND->iocport);
  BACKEND->iocport = -1;
}































































































static int pipe_ssloverssl(struct connectdata *conn, int sockindex,
                           int directions)
{
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  struct ssl_connect_data *connproxyssl = &conn->proxy_ssl[sockindex];
  fd_set fds_read;
  fd_set fds_write;
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
                        "gsk_secure_soc_open()", CURLE_SSL_CONNECT_ERROR);
  gsk_environment_close(&envir);
  if(result)
    return result;

  /* Establish a pipelining socket pair for SSL over SSL. */
  if(conn->proxy_ssl[sockindex].use) {
    if(inetsocketpair(sockpair))
      return CURLE_SSL_CONNECT_ERROR;
    BACKEND->localfd = sockpair[0];
    BACKEND->remotefd = sockpair[1];
    setsockopt(BACKEND->localfd, SOL_SOCKET, SO_RCVBUF,
               (void *) sobufsize, sizeof(sobufsize));
    setsockopt(BACKEND->remotefd, SOL_SOCKET, SO_RCVBUF,
               (void *) sobufsize, sizeof(sobufsize));







|







759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
                        "gsk_secure_soc_open()", CURLE_SSL_CONNECT_ERROR);
  gsk_environment_close(&envir);
  if(result)
    return result;

  /* Establish a pipelining socket pair for SSL over SSL. */
  if(conn->proxy_ssl[sockindex].use) {
    if(Curl_socketpair(0, 0, 0, sockpair))
      return CURLE_SSL_CONNECT_ERROR;
    BACKEND->localfd = sockpair[0];
    BACKEND->remotefd = sockpair[1];
    setsockopt(BACKEND->localfd, SOL_SOCKET, SO_RCVBUF,
               (void *) sobufsize, sizeof(sobufsize));
    setsockopt(BACKEND->remotefd, SOL_SOCKET, SO_RCVBUF,
               (void *) sobufsize, sizeof(sobufsize));
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167


static CURLcode gskit_connect_common(struct connectdata *conn, int sockindex,
                                     bool nonblocking, bool *done)
{
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  long timeout_ms;
  CURLcode result = CURLE_OK;

  *done = connssl->state == ssl_connection_complete;
  if(*done)
    return CURLE_OK;

  /* Step 1: create session, start handshake. */







|







1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075


static CURLcode gskit_connect_common(struct connectdata *conn, int sockindex,
                                     bool nonblocking, bool *done)
{
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  timediff_t timeout_ms;
  CURLcode result = CURLE_OK;

  *done = connssl->state == ssl_connection_complete;
  if(*done)
    return CURLE_OK;

  /* Step 1: create session, start handshake. */
Changes to jni/curl/lib/vtls/gtls.c.
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
{
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  gnutls_session_t session = BACKEND->session;
  curl_socket_t sockfd = conn->sock[sockindex];

  for(;;) {
    time_t timeout_ms;
    int rc;

    /* check allowed time left */
    timeout_ms = Curl_timeleft(data, NULL, duringconnect);

    if(timeout_ms < 0) {
      /* no need to continue if time already is up */







|







284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
{
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  gnutls_session_t session = BACKEND->session;
  curl_socket_t sockfd = conn->sock[sockindex];

  for(;;) {
    timediff_t timeout_ms;
    int rc;

    /* check allowed time left */
    timeout_ms = Curl_timeleft(data, NULL, duringconnect);

    if(timeout_ms < 0) {
      /* no need to continue if time already is up */
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
      curl_socket_t writefd = ssl_connect_2_writing ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;

      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
                               nonblocking?0:
                               timeout_ms?timeout_ms:1000);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      else if(0 == what) {
        if(nonblocking)







|







307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
      curl_socket_t writefd = ssl_connect_2_writing ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;

      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
                               nonblocking?0:
                               timeout_ms?(time_t)timeout_ms:1000);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      else if(0 == what) {
        if(nonblocking)
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618

  return rc;
}

static void close_one(struct ssl_connect_data *connssl)
{
  if(BACKEND->session) {
    gnutls_bye(BACKEND->session, GNUTLS_SHUT_RDWR);
    gnutls_deinit(BACKEND->session);
    BACKEND->session = NULL;
  }
  if(BACKEND->cred) {
    gnutls_certificate_free_credentials(BACKEND->cred);
    BACKEND->cred = NULL;
  }







|







1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618

  return rc;
}

static void close_one(struct ssl_connect_data *connssl)
{
  if(BACKEND->session) {
    gnutls_bye(BACKEND->session, GNUTLS_SHUT_WR);
    gnutls_deinit(BACKEND->session);
    BACKEND->session = NULL;
  }
  if(BACKEND->cred) {
    gnutls_certificate_free_credentials(BACKEND->cred);
    BACKEND->cred = NULL;
  }
Changes to jni/curl/lib/vtls/mbedtls.c.
584
585
586
587
588
589
590



591
592
593
594
595
596
597

    else if(ret & MBEDTLS_X509_BADCERT_CN_MISMATCH)
      failf(data, "Cert verify failed: BADCERT_CN_MISMATCH");

    else if(ret & MBEDTLS_X509_BADCERT_NOT_TRUSTED)
      failf(data, "Cert verify failed: BADCERT_NOT_TRUSTED");




    return CURLE_PEER_FAILED_VERIFICATION;
  }

  peercert = mbedtls_ssl_get_peer_cert(&BACKEND->ssl);

  if(peercert && data->set.verbose) {
    const size_t bufsize = 16384;







>
>
>







584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600

    else if(ret & MBEDTLS_X509_BADCERT_CN_MISMATCH)
      failf(data, "Cert verify failed: BADCERT_CN_MISMATCH");

    else if(ret & MBEDTLS_X509_BADCERT_NOT_TRUSTED)
      failf(data, "Cert verify failed: BADCERT_NOT_TRUSTED");

    else if(ret & MBEDTLS_X509_BADCERT_FUTURE)
      failf(data, "Cert verify failed: BADCERT_FUTURE");

    return CURLE_PEER_FAILED_VERIFICATION;
  }

  peercert = mbedtls_ssl_get_peer_cert(&BACKEND->ssl);

  if(peercert && data->set.verbose) {
    const size_t bufsize = 16384;
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
                    bool nonblocking,
                    bool *done)
{
  CURLcode retcode;
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  long timeout_ms;
  int what;

  /* check if the connection has already been established */
  if(ssl_connection_complete == connssl->state) {
    *done = TRUE;
    return CURLE_OK;
  }







|







883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
                    bool nonblocking,
                    bool *done)
{
  CURLcode retcode;
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  timediff_t timeout_ms;
  int what;

  /* check if the connection has already been established */
  if(ssl_connection_complete == connssl->state) {
    *done = TRUE;
    return CURLE_OK;
  }
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940

      curl_socket_t writefd = ssl_connect_2_writing ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;

      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
                               nonblocking ? 0 : timeout_ms);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      else if(0 == what) {
        if(nonblocking) {







|







929
930
931
932
933
934
935
936
937
938
939
940
941
942
943

      curl_socket_t writefd = ssl_connect_2_writing ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;

      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
                               nonblocking ? 0 : (time_t)timeout_ms);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      else if(0 == what) {
        if(nonblocking) {
Changes to jni/curl/lib/vtls/mesalink.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2017 - 2018, Yiming Jing, <jingyiming@baidu.com>
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2017 - 2018, Yiming Jing, <jingyiming@baidu.com>
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
mesalink_connect_common(struct connectdata *conn, int sockindex,
                        bool nonblocking, bool *done)
{
  CURLcode result;
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  time_t timeout_ms;
  int what;

  /* check if the connection has already been established */
  if(ssl_connection_complete == connssl->state) {
    *done = TRUE;
    return CURLE_OK;
  }







|







490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
mesalink_connect_common(struct connectdata *conn, int sockindex,
                        bool nonblocking, bool *done)
{
  CURLcode result;
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  timediff_t timeout_ms;
  int what;

  /* check if the connection has already been established */
  if(ssl_connection_complete == connssl->state) {
    *done = TRUE;
    return CURLE_OK;
  }
539
540
541
542
543
544
545
546

547
548
549
550
551
552
553
        ssl_connect_2_writing == connssl->connecting_state ? sockfd
                                                           : CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading == connssl->connecting_state
                               ? sockfd
                               : CURL_SOCKET_BAD;

      what = Curl_socket_check(
        readfd, CURL_SOCKET_BAD, writefd, nonblocking ? 0 : timeout_ms);

      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      else if(0 == what) {
        if(nonblocking) {







|
>







539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
        ssl_connect_2_writing == connssl->connecting_state ? sockfd
                                                           : CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading == connssl->connecting_state
                               ? sockfd
                               : CURL_SOCKET_BAD;

      what = Curl_socket_check(
        readfd, CURL_SOCKET_BAD, writefd,
        nonblocking ? 0 : (time_t)timeout_ms);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      else if(0 == what) {
        if(nonblocking) {
Changes to jni/curl/lib/vtls/nss.c.
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
    &data->set.proxy_ssl.certverifyresult : &data->set.ssl.certverifyresult;
  const char * const pinnedpubkey = SSL_IS_PROXY() ?
              data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
              data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG];


  /* check timeout situation */
  const time_t time_left = Curl_timeleft(data, NULL, TRUE);
  if(time_left < 0) {
    failf(data, "timed out before SSL handshake");
    result = CURLE_OPERATION_TIMEDOUT;
    goto error;
  }

  /* Force the handshake now */







|







2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
    &data->set.proxy_ssl.certverifyresult : &data->set.ssl.certverifyresult;
  const char * const pinnedpubkey = SSL_IS_PROXY() ?
              data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
              data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG];


  /* check timeout situation */
  const timediff_t time_left = Curl_timeleft(data, NULL, TRUE);
  if(time_left < 0) {
    failf(data, "timed out before SSL handshake");
    result = CURLE_OPERATION_TIMEDOUT;
    goto error;
  }

  /* Force the handshake now */
Changes to jni/curl/lib/vtls/openssl.c.
40
41
42
43
44
45
46

47
48
49
50
51
52
53
#include "connect.h"
#include "slist.h"
#include "select.h"
#include "vtls.h"
#include "strcase.h"
#include "hostcheck.h"
#include "multiif.h"

#include "curl_printf.h"
#include <openssl/ssl.h>
#include <openssl/rand.h>
#include <openssl/x509v3.h>
#ifndef OPENSSL_NO_DSA
#include <openssl/dsa.h>
#endif







>







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "connect.h"
#include "slist.h"
#include "select.h"
#include "vtls.h"
#include "strcase.h"
#include "hostcheck.h"
#include "multiif.h"
#include "strerror.h"
#include "curl_printf.h"
#include <openssl/ssl.h>
#include <openssl/rand.h>
#include <openssl/x509v3.h>
#ifndef OPENSSL_NO_DSA
#include <openssl/dsa.h>
#endif
2161
2162
2163
2164
2165
2166
2167




2168
2169

2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
set_ssl_version_min_max(SSL_CTX *ctx, struct connectdata *conn)
{
  /* first, TLS min version... */
  long curl_ssl_version_min = SSL_CONN_CONFIG(version);
  long curl_ssl_version_max;

  /* convert cURL min SSL version option to OpenSSL constant */




  long ossl_ssl_version_min = 0;
  long ossl_ssl_version_max = 0;

  switch(curl_ssl_version_min) {
    case CURL_SSLVERSION_TLSv1: /* TLS 1.x */
    case CURL_SSLVERSION_TLSv1_0:
      ossl_ssl_version_min = TLS1_VERSION;
      break;
    case CURL_SSLVERSION_TLSv1_1:
      ossl_ssl_version_min = TLS1_1_VERSION;
      break;
    case CURL_SSLVERSION_TLSv1_2:
      ossl_ssl_version_min = TLS1_2_VERSION;
      break;
#ifdef TLS1_3_VERSION
    case CURL_SSLVERSION_TLSv1_3:
      ossl_ssl_version_min = TLS1_3_VERSION;
      break;
#endif
  }

  /* CURL_SSLVERSION_DEFAULT means that no option was selected.
    We don't want to pass 0 to SSL_CTX_set_min_proto_version as
    it would enable all versions down to the lowest supported by
    the library.
    So we skip this, and stay with the OS default
  */
  if(curl_ssl_version_min != CURL_SSLVERSION_DEFAULT) {
    if(!SSL_CTX_set_min_proto_version(ctx, ossl_ssl_version_min)) {
      return CURLE_SSL_CONNECT_ERROR;
    }
  }








>
>
>
>


>



















|
|
|
|







2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
set_ssl_version_min_max(SSL_CTX *ctx, struct connectdata *conn)
{
  /* first, TLS min version... */
  long curl_ssl_version_min = SSL_CONN_CONFIG(version);
  long curl_ssl_version_max;

  /* convert cURL min SSL version option to OpenSSL constant */
#if defined(OPENSSL_IS_BORINGSSL) || defined(LIBRESSL_VERSION_NUMBER)
  uint16_t ossl_ssl_version_min = 0;
  uint16_t ossl_ssl_version_max = 0;
#else
  long ossl_ssl_version_min = 0;
  long ossl_ssl_version_max = 0;
#endif
  switch(curl_ssl_version_min) {
    case CURL_SSLVERSION_TLSv1: /* TLS 1.x */
    case CURL_SSLVERSION_TLSv1_0:
      ossl_ssl_version_min = TLS1_VERSION;
      break;
    case CURL_SSLVERSION_TLSv1_1:
      ossl_ssl_version_min = TLS1_1_VERSION;
      break;
    case CURL_SSLVERSION_TLSv1_2:
      ossl_ssl_version_min = TLS1_2_VERSION;
      break;
#ifdef TLS1_3_VERSION
    case CURL_SSLVERSION_TLSv1_3:
      ossl_ssl_version_min = TLS1_3_VERSION;
      break;
#endif
  }

  /* CURL_SSLVERSION_DEFAULT means that no option was selected.
     We don't want to pass 0 to SSL_CTX_set_min_proto_version as
     it would enable all versions down to the lowest supported by
     the library.
     So we skip this, and stay with the OS default
  */
  if(curl_ssl_version_min != CURL_SSLVERSION_DEFAULT) {
    if(!SSL_CTX_set_min_proto_version(ctx, ossl_ssl_version_min)) {
      return CURLE_SSL_CONNECT_ERROR;
    }
  }

3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
                                    bool nonblocking,
                                    bool *done)
{
  CURLcode result;
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  time_t timeout_ms;
  int what;

  /* check if the connection has already been established */
  if(ssl_connection_complete == connssl->state) {
    *done = TRUE;
    return CURLE_OK;
  }







|







3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
                                    bool nonblocking,
                                    bool *done)
{
  CURLcode result;
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  timediff_t timeout_ms;
  int what;

  /* check if the connection has already been established */
  if(ssl_connection_complete == connssl->state) {
    *done = TRUE;
    return CURLE_OK;
  }
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706

      curl_socket_t writefd = ssl_connect_2_writing ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;

      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
                               nonblocking?0:timeout_ms);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      if(0 == what) {
        if(nonblocking) {







|







3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712

      curl_socket_t writefd = ssl_connect_2_writing ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;

      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
                               nonblocking?0:(time_t)timeout_ms);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      if(0 == what) {
        if(nonblocking) {
3816
3817
3818
3819
3820
3821
3822

3823
3824
3825
3826
3827
3828
3829
3830
3831
    case SSL_ERROR_WANT_WRITE:
      /* The operation did not complete; the same TLS/SSL I/O function
         should be called again later. This is basically an EWOULDBLOCK
         equivalent. */
      *curlcode = CURLE_AGAIN;
      return -1;
    case SSL_ERROR_SYSCALL:

      failf(conn->data, "SSL_write() returned SYSCALL, errno = %d",
            SOCKERRNO);
      *curlcode = CURLE_SEND_ERROR;
      return -1;
    case SSL_ERROR_SSL:
      /*  A failure in the SSL library occurred, usually a protocol error.
          The OpenSSL error queue contains more information on the error. */
      sslerror = ERR_get_error();
      if(ERR_GET_LIB(sslerror) == ERR_LIB_SSL &&







>
|
<







3822
3823
3824
3825
3826
3827
3828
3829
3830

3831
3832
3833
3834
3835
3836
3837
    case SSL_ERROR_WANT_WRITE:
      /* The operation did not complete; the same TLS/SSL I/O function
         should be called again later. This is basically an EWOULDBLOCK
         equivalent. */
      *curlcode = CURLE_AGAIN;
      return -1;
    case SSL_ERROR_SYSCALL:
      Curl_strerror(SOCKERRNO, error_buffer, sizeof(error_buffer));
      failf(conn->data, OSSL_PACKAGE " SSL_write: %s", error_buffer);

      *curlcode = CURLE_SEND_ERROR;
      return -1;
    case SSL_ERROR_SSL:
      /*  A failure in the SSL library occurred, usually a protocol error.
          The OpenSSL error queue contains more information on the error. */
      sslerror = ERR_get_error();
      if(ERR_GET_LIB(sslerror) == ERR_LIB_SSL &&
3874
3875
3876
3877
3878
3879
3880



3881
3882
3883
3884
3885
3886
3887





3888
3889
3890
3891
3892
3893
3894
    int err = SSL_get_error(BACKEND->handle, (int)nread);

    switch(err) {
    case SSL_ERROR_NONE: /* this is not an error */
      break;
    case SSL_ERROR_ZERO_RETURN: /* no more data */
      /* close_notify alert */



      connclose(conn, "TLS close_notify");
      break;
    case SSL_ERROR_WANT_READ:
    case SSL_ERROR_WANT_WRITE:
      /* there's data pending, re-invoke SSL_read() */
      *curlcode = CURLE_AGAIN;
      return -1;





    default:
      /* openssl/ssl.h for SSL_ERROR_SYSCALL says "look at error stack/return
         value/errno" */
      /* https://www.openssl.org/docs/crypto/ERR_get_error.html */
      sslerror = ERR_get_error();
      if((nread < 0) || sslerror) {
        /* If the return code was negative or there actually is an error in the







>
>
>
|






>
>
>
>
>







3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
    int err = SSL_get_error(BACKEND->handle, (int)nread);

    switch(err) {
    case SSL_ERROR_NONE: /* this is not an error */
      break;
    case SSL_ERROR_ZERO_RETURN: /* no more data */
      /* close_notify alert */
      if(num == FIRSTSOCKET)
        /* mark the connection for close if it is indeed the control
           connection */
        connclose(conn, "TLS close_notify");
      break;
    case SSL_ERROR_WANT_READ:
    case SSL_ERROR_WANT_WRITE:
      /* there's data pending, re-invoke SSL_read() */
      *curlcode = CURLE_AGAIN;
      return -1;
    case SSL_ERROR_SYSCALL:
      Curl_strerror(SOCKERRNO, error_buffer, sizeof(error_buffer));
      failf(conn->data, OSSL_PACKAGE " SSL_read: %s", error_buffer);
      *curlcode = CURLE_RECV_ERROR;
      return -1;
    default:
      /* openssl/ssl.h for SSL_ERROR_SYSCALL says "look at error stack/return
         value/errno" */
      /* https://www.openssl.org/docs/crypto/ERR_get_error.html */
      sslerror = ERR_get_error();
      if((nread < 0) || sslerror) {
        /* If the return code was negative or there actually is an error in the
Changes to jni/curl/lib/vtls/polarssl.c.
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
                        bool nonblocking,
                        bool *done)
{
  CURLcode result;
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  long timeout_ms;
  int what;

  /* check if the connection has already been established */
  if(ssl_connection_complete == connssl->state) {
    *done = TRUE;
    return CURLE_OK;
  }







|







730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
                        bool nonblocking,
                        bool *done)
{
  CURLcode result;
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  timediff_t timeout_ms;
  int what;

  /* check if the connection has already been established */
  if(ssl_connection_complete == connssl->state) {
    *done = TRUE;
    return CURLE_OK;
  }
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791

      curl_socket_t writefd = ssl_connect_2_writing ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;

      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
                               nonblocking?0:timeout_ms);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      else if(0 == what) {
        if(nonblocking) {







|







777
778
779
780
781
782
783
784
785
786
787
788
789
790
791

      curl_socket_t writefd = ssl_connect_2_writing ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading ==
        connssl->connecting_state?sockfd:CURL_SOCKET_BAD;

      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
                               nonblocking?0:(time_t)timeout_ms);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      else if(0 == what) {
        if(nonblocking) {
Changes to jni/curl/lib/vtls/schannel.c.
1177
1178
1179
1180
1181
1182
1183

1184
1185
1186
1187
1188
1189
1190
1191
1192
1193

1194

1195
1196
1197
1198
1199
1200
1201
}

struct Adder_args
{
  struct connectdata *conn;
  CURLcode result;
  int idx;

};

static bool
add_cert_to_certinfo(const CERT_CONTEXT *ccert_context, void *raw_arg)
{
  struct Adder_args *args = (struct Adder_args*)raw_arg;
  args->result = CURLE_OK;
  if(valid_cert_encoding(ccert_context)) {
    const char *beg = (const char *) ccert_context->pbCertEncoded;
    const char *end = beg + ccert_context->cbCertEncoded;

    args->result = Curl_extract_certinfo(args->conn, (args->idx)++, beg, end);

  }
  return args->result == CURLE_OK;
}

static CURLcode
schannel_connect_step3(struct connectdata *conn, int sockindex)
{







>










>
|
>







1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
}

struct Adder_args
{
  struct connectdata *conn;
  CURLcode result;
  int idx;
  int certs_count;
};

static bool
add_cert_to_certinfo(const CERT_CONTEXT *ccert_context, void *raw_arg)
{
  struct Adder_args *args = (struct Adder_args*)raw_arg;
  args->result = CURLE_OK;
  if(valid_cert_encoding(ccert_context)) {
    const char *beg = (const char *) ccert_context->pbCertEncoded;
    const char *end = beg + ccert_context->cbCertEncoded;
    int insert_index = (args->certs_count - 1) - args->idx;
    args->result = Curl_extract_certinfo(args->conn, insert_index, beg, end);
    args->idx++;
  }
  return args->result == CURLE_OK;
}

static CURLcode
schannel_connect_step3(struct connectdata *conn, int sockindex)
{
1322
1323
1324
1325
1326
1327
1328

1329
1330
1331
1332
1333
1334
1335
    traverse_cert_store(ccert_context, cert_counter_callback, &certs_count);

    result = Curl_ssl_init_certinfo(data, certs_count);
    if(!result) {
      struct Adder_args args;
      args.conn = conn;
      args.idx = 0;

      traverse_cert_store(ccert_context, add_cert_to_certinfo, &args);
      result = args.result;
    }
    CertFreeCertificateContext(ccert_context);
    if(result)
      return result;
  }







>







1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
    traverse_cert_store(ccert_context, cert_counter_callback, &certs_count);

    result = Curl_ssl_init_certinfo(data, certs_count);
    if(!result) {
      struct Adder_args args;
      args.conn = conn;
      args.idx = 0;
      args.certs_count = certs_count;
      traverse_cert_store(ccert_context, add_cert_to_certinfo, &args);
      result = args.result;
    }
    CertFreeCertificateContext(ccert_context);
    if(result)
      return result;
  }
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
schannel_connect_common(struct connectdata *conn, int sockindex,
                        bool nonblocking, bool *done)
{
  CURLcode result;
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  time_t timeout_ms;
  int what;

  /* check if the connection has already been established */
  if(ssl_connection_complete == connssl->state) {
    *done = TRUE;
    return CURLE_OK;
  }







|







1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
schannel_connect_common(struct connectdata *conn, int sockindex,
                        bool nonblocking, bool *done)
{
  CURLcode result;
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  timediff_t timeout_ms;
  int what;

  /* check if the connection has already been established */
  if(ssl_connection_complete == connssl->state) {
    *done = TRUE;
    return CURLE_OK;
  }
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404

      curl_socket_t writefd = ssl_connect_2_writing ==
        connssl->connecting_state ? sockfd : CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading ==
        connssl->connecting_state ? sockfd : CURL_SOCKET_BAD;

      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
                               nonblocking ? 0 : timeout_ms);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL/TLS socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      else if(0 == what) {
        if(nonblocking) {







|







1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408

      curl_socket_t writefd = ssl_connect_2_writing ==
        connssl->connecting_state ? sockfd : CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading ==
        connssl->connecting_state ? sockfd : CURL_SOCKET_BAD;

      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
                               nonblocking ? 0 : (time_t)timeout_ms);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL/TLS socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      else if(0 == what) {
        if(nonblocking) {
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
      send the buffered data?  Looking at who calls this function, it
      seems the answer is NO.
    */

    /* send entire message or fail */
    while(len > (size_t)written) {
      ssize_t this_write;
      time_t timeleft;
      int what;

      this_write = 0;

      timeleft = Curl_timeleft(conn->data, NULL, FALSE);
      if(timeleft < 0) {
        /* we already got the timeout */







|







1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
      send the buffered data?  Looking at who calls this function, it
      seems the answer is NO.
    */

    /* send entire message or fail */
    while(len > (size_t)written) {
      ssize_t this_write;
      timediff_t timeleft;
      int what;

      this_write = 0;

      timeleft = Curl_timeleft(conn->data, NULL, FALSE);
      if(timeleft < 0) {
        /* we already got the timeout */
Changes to jni/curl/lib/vtls/schannel_verify.c.
107
108
109
110
111
112
113
114

115
116
117
118
119
120
121
  /*
   * Read the CA file completely into memory before parsing it. This
   * optimizes for the common case where the CA file will be relatively
   * small ( < 1 MiB ).
   */
  ca_file_handle = CreateFile(ca_file_tstr,
                              GENERIC_READ,
                              0,

                              NULL,
                              OPEN_EXISTING,
                              FILE_ATTRIBUTE_NORMAL,
                              NULL);
  if(ca_file_handle == INVALID_HANDLE_VALUE) {
    char buffer[STRERROR_LEN];
    failf(data,







<
>







107
108
109
110
111
112
113

114
115
116
117
118
119
120
121
  /*
   * Read the CA file completely into memory before parsing it. This
   * optimizes for the common case where the CA file will be relatively
   * small ( < 1 MiB ).
   */
  ca_file_handle = CreateFile(ca_file_tstr,
                              GENERIC_READ,

                              FILE_SHARE_READ,
                              NULL,
                              OPEN_EXISTING,
                              FILE_ATTRIBUTE_NORMAL,
                              NULL);
  if(ca_file_handle == INVALID_HANDLE_VALUE) {
    char buffer[STRERROR_LEN];
    failf(data,
Changes to jni/curl/lib/vtls/sectransp.c.
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#define CURL_BUILD_MAC_10_8 MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
#define CURL_BUILD_MAC_10_9 MAC_OS_X_VERSION_MAX_ALLOWED >= 1090
#define CURL_BUILD_MAC_10_11 MAC_OS_X_VERSION_MAX_ALLOWED >= 101100
#define CURL_BUILD_MAC_10_13 MAC_OS_X_VERSION_MAX_ALLOWED >= 101300
/* These macros mean "the following code is present to allow runtime backward
   compatibility with at least this cat or earlier":
   (You set this at build-time using the compiler command line option
   "-mmacos-version-min.") */
#define CURL_SUPPORT_MAC_10_5 MAC_OS_X_VERSION_MIN_REQUIRED <= 1050
#define CURL_SUPPORT_MAC_10_6 MAC_OS_X_VERSION_MIN_REQUIRED <= 1060
#define CURL_SUPPORT_MAC_10_7 MAC_OS_X_VERSION_MIN_REQUIRED <= 1070
#define CURL_SUPPORT_MAC_10_8 MAC_OS_X_VERSION_MIN_REQUIRED <= 1080
#define CURL_SUPPORT_MAC_10_9 MAC_OS_X_VERSION_MIN_REQUIRED <= 1090

#elif TARGET_OS_EMBEDDED || TARGET_OS_IPHONE







|







75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#define CURL_BUILD_MAC_10_8 MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
#define CURL_BUILD_MAC_10_9 MAC_OS_X_VERSION_MAX_ALLOWED >= 1090
#define CURL_BUILD_MAC_10_11 MAC_OS_X_VERSION_MAX_ALLOWED >= 101100
#define CURL_BUILD_MAC_10_13 MAC_OS_X_VERSION_MAX_ALLOWED >= 101300
/* These macros mean "the following code is present to allow runtime backward
   compatibility with at least this cat or earlier":
   (You set this at build-time using the compiler command line option
   "-mmacosx-version-min.") */
#define CURL_SUPPORT_MAC_10_5 MAC_OS_X_VERSION_MIN_REQUIRED <= 1050
#define CURL_SUPPORT_MAC_10_6 MAC_OS_X_VERSION_MIN_REQUIRED <= 1060
#define CURL_SUPPORT_MAC_10_7 MAC_OS_X_VERSION_MIN_REQUIRED <= 1070
#define CURL_SUPPORT_MAC_10_8 MAC_OS_X_VERSION_MIN_REQUIRED <= 1080
#define CURL_SUPPORT_MAC_10_9 MAC_OS_X_VERSION_MIN_REQUIRED <= 1090

#elif TARGET_OS_EMBEDDED || TARGET_OS_IPHONE
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
                         bool nonblocking,
                         bool *done)
{
  CURLcode result;
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  long timeout_ms;
  int what;

  /* check if the connection has already been established */
  if(ssl_connection_complete == connssl->state) {
    *done = TRUE;
    return CURLE_OK;
  }







|







2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
                         bool nonblocking,
                         bool *done)
{
  CURLcode result;
  struct Curl_easy *data = conn->data;
  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
  curl_socket_t sockfd = conn->sock[sockindex];
  timediff_t timeout_ms;
  int what;

  /* check if the connection has already been established */
  if(ssl_connection_complete == connssl->state) {
    *done = TRUE;
    return CURLE_OK;
  }
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862

      curl_socket_t writefd = ssl_connect_2_writing ==
      connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading ==
      connssl->connecting_state?sockfd:CURL_SOCKET_BAD;

      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
                               nonblocking?0:timeout_ms);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      else if(0 == what) {
        if(nonblocking) {







|







2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862

      curl_socket_t writefd = ssl_connect_2_writing ==
      connssl->connecting_state?sockfd:CURL_SOCKET_BAD;
      curl_socket_t readfd = ssl_connect_2_reading ==
      connssl->connecting_state?sockfd:CURL_SOCKET_BAD;

      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
                               nonblocking?0:(time_t)timeout_ms);
      if(what < 0) {
        /* fatal error */
        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
        return CURLE_SSL_CONNECT_ERROR;
      }
      else if(0 == what) {
        if(nonblocking) {
Changes to jni/curl/lib/vtls/vtls.c.
93
94
95
96
97
98
99
100

101
102
103
104
105
106
107
     (data->verifystatus == needle->verifystatus) &&
     Curl_safe_strcasecompare(data->CApath, needle->CApath) &&
     Curl_safe_strcasecompare(data->CAfile, needle->CAfile) &&
     Curl_safe_strcasecompare(data->clientcert, needle->clientcert) &&
     Curl_safe_strcasecompare(data->random_file, needle->random_file) &&
     Curl_safe_strcasecompare(data->egdsocket, needle->egdsocket) &&
     Curl_safe_strcasecompare(data->cipher_list, needle->cipher_list) &&
     Curl_safe_strcasecompare(data->cipher_list13, needle->cipher_list13))

    return TRUE;

  return FALSE;
}

bool
Curl_clone_primary_ssl_config(struct ssl_primary_config *source,







|
>







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
     (data->verifystatus == needle->verifystatus) &&
     Curl_safe_strcasecompare(data->CApath, needle->CApath) &&
     Curl_safe_strcasecompare(data->CAfile, needle->CAfile) &&
     Curl_safe_strcasecompare(data->clientcert, needle->clientcert) &&
     Curl_safe_strcasecompare(data->random_file, needle->random_file) &&
     Curl_safe_strcasecompare(data->egdsocket, needle->egdsocket) &&
     Curl_safe_strcasecompare(data->cipher_list, needle->cipher_list) &&
     Curl_safe_strcasecompare(data->cipher_list13, needle->cipher_list13) &&
     Curl_safe_strcasecompare(data->pinned_key, needle->pinned_key))
    return TRUE;

  return FALSE;
}

bool
Curl_clone_primary_ssl_config(struct ssl_primary_config *source,
117
118
119
120
121
122
123

124
125
126
127
128
129
130
131
132
133
134
135
136

137
138
139
140
141
142
143
  CLONE_STRING(CApath);
  CLONE_STRING(CAfile);
  CLONE_STRING(clientcert);
  CLONE_STRING(random_file);
  CLONE_STRING(egdsocket);
  CLONE_STRING(cipher_list);
  CLONE_STRING(cipher_list13);


  return TRUE;
}

void Curl_free_primary_ssl_config(struct ssl_primary_config* sslc)
{
  Curl_safefree(sslc->CApath);
  Curl_safefree(sslc->CAfile);
  Curl_safefree(sslc->clientcert);
  Curl_safefree(sslc->random_file);
  Curl_safefree(sslc->egdsocket);
  Curl_safefree(sslc->cipher_list);
  Curl_safefree(sslc->cipher_list13);

}

#ifdef USE_SSL
static int multissl_init(const struct Curl_ssl *backend);
#endif

int Curl_ssl_backend(void)







>













>







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
  CLONE_STRING(CApath);
  CLONE_STRING(CAfile);
  CLONE_STRING(clientcert);
  CLONE_STRING(random_file);
  CLONE_STRING(egdsocket);
  CLONE_STRING(cipher_list);
  CLONE_STRING(cipher_list13);
  CLONE_STRING(pinned_key);

  return TRUE;
}

void Curl_free_primary_ssl_config(struct ssl_primary_config* sslc)
{
  Curl_safefree(sslc->CApath);
  Curl_safefree(sslc->CAfile);
  Curl_safefree(sslc->clientcert);
  Curl_safefree(sslc->random_file);
  Curl_safefree(sslc->egdsocket);
  Curl_safefree(sslc->cipher_list);
  Curl_safefree(sslc->cipher_list13);
  Curl_safefree(sslc->pinned_key);
}

#ifdef USE_SSL
static int multissl_init(const struct Curl_ssl *backend);
#endif

int Curl_ssl_backend(void)
Changes to jni/curl/ltmain.sh.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.


PROGRAM=libtool
PACKAGE=libtool
VERSION="2.4.6 Debian-2.4.6-10"
package_revision=2.4.6


## ------ ##
## Usage. ##
## ------ ##








|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.


PROGRAM=libtool
PACKAGE=libtool
VERSION="2.4.6 Debian-2.4.6-11"
package_revision=2.4.6


## ------ ##
## Usage. ##
## ------ ##

2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
include the following information:

       host-triplet:   $host
       shell:          $SHELL
       compiler:       $LTCC
       compiler flags: $LTCFLAGS
       linker:         $LD (gnu? $with_gnu_ld)
       version:        $progname $scriptversion Debian-2.4.6-10
       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`

Report bugs to <bug-libtool@gnu.org>.
GNU libtool home page: <http://www.gnu.org/s/libtool/>.
General help using GNU software: <http://www.gnu.org/gethelp/>."
    exit 0







|







2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
include the following information:

       host-triplet:   $host
       shell:          $SHELL
       compiler:       $LTCC
       compiler flags: $LTCFLAGS
       linker:         $LD (gnu? $with_gnu_ld)
       version:        $progname $scriptversion Debian-2.4.6-11
       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`

Report bugs to <bug-libtool@gnu.org>.
GNU libtool home page: <http://www.gnu.org/s/libtool/>.
General help using GNU software: <http://www.gnu.org/gethelp/>."
    exit 0
Changes to jni/curl/m4/curl-confopts.m4.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
644
645
646
647
648
649
650




































    AC_DEFINE(NTLM_WB_ENABLED, 1,
      [Define to enable NTLM delegation to winbind's ntlm_auth helper.])
    AC_DEFINE_UNQUOTED(NTLM_WB_FILE, "$want_ntlm_wb_file",
      [Define absolute filename for winbind's ntlm_auth helper.])
    NTLM_WB_ENABLED=1
  fi
])











































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
    AC_DEFINE(NTLM_WB_ENABLED, 1,
      [Define to enable NTLM delegation to winbind's ntlm_auth helper.])
    AC_DEFINE_UNQUOTED(NTLM_WB_FILE, "$want_ntlm_wb_file",
      [Define absolute filename for winbind's ntlm_auth helper.])
    NTLM_WB_ENABLED=1
  fi
])

dnl CURL_CHECK_OPTION_ESNI
dnl -----------------------------------------------------
dnl Verify whether configure has been invoked with option
dnl --enable-esni or --disable-esni, and set
dnl shell variable want_esni as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_ESNI], [
  AC_MSG_CHECKING([whether to enable ESNI support])
  OPT_ESNI="default"
  AC_ARG_ENABLE(esni,
AC_HELP_STRING([--enable-esni],[Enable ESNI support])
AC_HELP_STRING([--disable-esni],[Disable ESNI support]),
  OPT_ESNI=$enableval)
  case "$OPT_ESNI" in
    no)
      dnl --disable-esni option used
      want_esni="no"
      curl_esni_msg="no      (--enable-esni)"
      AC_MSG_RESULT([no])
      ;;
    default)
      dnl configure option not specified
      want_esni="no"
      curl_esni_msg="no      (--enable-esni)"
      AC_MSG_RESULT([no])
      ;;
    *)
      dnl --enable-esni option used
      want_esni="yes"
      curl_esni_msg="enabled (--disable-esni)"
      experimental="esni"
      AC_MSG_RESULT([yes])
      ;;
  esac
])
Changes to jni/curl/packages/OS400/curl.inc.in.
1837
1838
1839
1840
1841
1842
1843


1844
1845
1846
1847
1848
1849
1850
     d                 c                   10012
     d  CURLMOPT_MAX_TOTAL_CONNECTIONS...
     d                 c                   00013
     d  CURLMOPT_PUSHFUNCTION...
     d                 c                   20014
     d  CURLMOPT_PUSHDATA...
     d                 c                   10015


      *
      * Bitmask bits for CURLMOPT_PIPELING.
      *
     d CURLPIPE_NOTHING...
     d                 c                   x'00000000'
     d CURLPIPE_HTTP1  c                   x'00000001'
     d CURLPIPE_MULTIPLEX...







>
>







1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
     d                 c                   10012
     d  CURLMOPT_MAX_TOTAL_CONNECTIONS...
     d                 c                   00013
     d  CURLMOPT_PUSHFUNCTION...
     d                 c                   20014
     d  CURLMOPT_PUSHDATA...
     d                 c                   10015
     d  CURLMOPT_MAX_CONCURRENT_STREAMS...
     d                 c                   10016
      *
      * Bitmask bits for CURLMOPT_PIPELING.
      *
     d CURLPIPE_NOTHING...
     d                 c                   x'00000000'
     d CURLPIPE_HTTP1  c                   x'00000001'
     d CURLPIPE_MULTIPLEX...
Changes to jni/curl/packages/OS400/os400sys.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205

  if(!bufs) {
    if(size < 0)
      return (char *) NULL;             /* No buffer yet. */

    /* Allocate buffer descriptors for the current thread. */

    bufs = calloc((size_t) LK_LAST, sizeof *bufs);
    if(!bufs)
      return (char *) NULL;

    if(pthread_setspecific(thdkey, (void *) bufs)) {
      free(bufs);
      return (char *) NULL;
    }







|







191
192
193
194
195
196
197
198
199
200
201
202
203
204
205

  if(!bufs) {
    if(size < 0)
      return (char *) NULL;             /* No buffer yet. */

    /* Allocate buffer descriptors for the current thread. */

    bufs = calloc((size_t) LK_LAST, sizeof(*bufs));
    if(!bufs)
      return (char *) NULL;

    if(pthread_setspecific(thdkey, (void *) bufs)) {
      free(bufs);
      return (char *) NULL;
    }
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
  pthread_mutex_lock(&mutex);

  /* Determine if we can use pthread-specific data. */

  if(Curl_thread_buffer == buffer_undef) {      /* If unchanged during lock. */
    if(!pthread_key_create(&thdkey, thdbufdestroy))
      Curl_thread_buffer = buffer_threaded;
    else if(!(locbufs = calloc((size_t) LK_LAST, sizeof *locbufs))) {
      pthread_mutex_unlock(&mutex);
      return (char *) NULL;
      }
    else
        Curl_thread_buffer = buffer_unthreaded;

    atexit(terminate);







|







220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
  pthread_mutex_lock(&mutex);

  /* Determine if we can use pthread-specific data. */

  if(Curl_thread_buffer == buffer_undef) {      /* If unchanged during lock. */
    if(!pthread_key_create(&thdkey, thdbufdestroy))
      Curl_thread_buffer = buffer_threaded;
    else if(!(locbufs = calloc((size_t) LK_LAST, sizeof(*locbufs)))) {
      pthread_mutex_unlock(&mutex);
      return (char *) NULL;
      }
    else
        Curl_thread_buffer = buffer_unthreaded;

    atexit(terminate);
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400

{
  struct Curl_gsk_descriptor * p;
  int rc;

  if(!my_env_handle)
    return GSK_OS400_ERROR_INVALID_POINTER;
  p = (struct Curl_gsk_descriptor *) malloc(sizeof *p);
  if(!p)
    return GSK_INSUFFICIENT_STORAGE;
  p->strlist = (struct gskstrlist *) NULL;
  rc = gsk_environment_open(&p->h);
  if(rc != GSK_OK)
    free(p);
  else







|







386
387
388
389
390
391
392
393
394
395
396
397
398
399
400

{
  struct Curl_gsk_descriptor * p;
  int rc;

  if(!my_env_handle)
    return GSK_OS400_ERROR_INVALID_POINTER;
  p = (struct Curl_gsk_descriptor *) malloc(sizeof(*p));
  if(!p)
    return GSK_INSUFFICIENT_STORAGE;
  p->strlist = (struct gskstrlist *) NULL;
  rc = gsk_environment_open(&p->h);
  if(rc != GSK_OK)
    free(p);
  else
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
  int rc;

  if(!my_env_handle)
    return GSK_INVALID_HANDLE;
  if(!my_session_handle)
    return GSK_OS400_ERROR_INVALID_POINTER;
  h = ((struct Curl_gsk_descriptor *) my_env_handle)->h;
  p = (struct Curl_gsk_descriptor *) malloc(sizeof *p);
  if(!p)
    return GSK_INSUFFICIENT_STORAGE;
  p->strlist = (struct gskstrlist *) NULL;
  rc = gsk_secure_soc_open(h, &p->h);
  if(rc != GSK_OK)
    free(p);
  else







|







413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
  int rc;

  if(!my_env_handle)
    return GSK_INVALID_HANDLE;
  if(!my_session_handle)
    return GSK_OS400_ERROR_INVALID_POINTER;
  h = ((struct Curl_gsk_descriptor *) my_env_handle)->h;
  p = (struct Curl_gsk_descriptor *) malloc(sizeof(*p));
  if(!p)
    return GSK_INSUFFICIENT_STORAGE;
  p->strlist = (struct gskstrlist *) NULL;
  rc = gsk_secure_soc_open(h, &p->h);
  if(rc != GSK_OK)
    free(p);
  else
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
  char * asciibuf;
  struct gskstrlist * sp;

  for(sp = p->strlist; sp; sp = sp->next)
    if(sp->ebcdicstr == ebcdicbuf)
      break;
  if(!sp) {
    sp = (struct gskstrlist *) malloc(sizeof *sp);
    if(!sp)
      return GSK_INSUFFICIENT_STORAGE;
    asciibuf = malloc(bufsize + 1);
    if(!asciibuf) {
      free(sp);
      return GSK_INSUFFICIENT_STORAGE;
    }







|







594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
  char * asciibuf;
  struct gskstrlist * sp;

  for(sp = p->strlist; sp; sp = sp->next)
    if(sp->ebcdicstr == ebcdicbuf)
      break;
  if(!sp) {
    sp = (struct gskstrlist *) malloc(sizeof(*sp));
    if(!sp)
      return GSK_INSUFFICIENT_STORAGE;
    asciibuf = malloc(bufsize + 1);
    if(!asciibuf) {
      free(sp);
      return GSK_INSUFFICIENT_STORAGE;
    }
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
  int rc;
  unsigned int i;
  gss_buffer_desc in;

  if(!in_name || !in_name->value || !in_name->length)
    return gss_import_name(minor_status, in_name, in_name_type, out_name);

  memcpy((char *) &in, (char *) in_name, sizeof in);
  i = in.length;

  in.value = malloc(i + 1);
  if(!in.value) {
    if(minor_status)
      *minor_status = ENOMEM;








|







796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
  int rc;
  unsigned int i;
  gss_buffer_desc in;

  if(!in_name || !in_name->value || !in_name->length)
    return gss_import_name(minor_status, in_name, in_name_type, out_name);

  memcpy((char *) &in, (char *) in_name, sizeof(in));
  i = in.length;

  in.value = malloc(i + 1);
  if(!in.value) {
    if(minor_status)
      *minor_status = ENOMEM;

1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
    }
  }

  if(attrs && status == LDAP_SUCCESS) {
    for(i = 0; attrs[i++];)
      ;

    eattrs = calloc(i, sizeof *eattrs);
    if(!eattrs)
      status = LDAP_NO_MEMORY;
    else {
      for(j = 0; attrs[j]; j++) {
        i = strlen(attrs[j]);

        eattrs[j] = malloc(i + 1);







|







1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
    }
  }

  if(attrs && status == LDAP_SUCCESS) {
    for(i = 0; attrs[i++];)
      ;

    eattrs = calloc(i, sizeof(*eattrs));
    if(!eattrs)
      status = LDAP_NO_MEMORY;
    else {
      for(j = 0; attrs[j]; j++) {
        i = strlen(attrs[j]);

        eattrs[j] = malloc(i + 1);
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258



















1259



1260




















1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369




































1370
1371
1372
1373
1374
1375
1376
  return cp;
}

#endif /* CURL_DISABLE_LDAP */


static int
convert_sockaddr(struct sockaddr_storage * dstaddr,
                                const struct sockaddr * srcaddr, int srclen)

{
  const struct sockaddr_un * srcu;
  struct sockaddr_un * dstu;
  unsigned int i;
  unsigned int dstsize;

  /* Convert a socket address into job CCSID, if needed. */

  if(!srcaddr || srclen < offsetof(struct sockaddr, sa_family) +
     sizeof srcaddr->sa_family || srclen > sizeof *dstaddr) {
    errno = EINVAL;
    return -1;
    }

  memcpy((char *) dstaddr, (char *) srcaddr, srclen);

  switch (srcaddr->sa_family) {

  case AF_UNIX:
    srcu = (const struct sockaddr_un *) srcaddr;
    dstu = (struct sockaddr_un *) dstaddr;
    dstsize = sizeof *dstaddr - offsetof(struct sockaddr_un, sun_path);
    srclen -= offsetof(struct sockaddr_un, sun_path);
    i = QadrtConvertA2E(dstu->sun_path, srcu->sun_path, dstsize - 1, srclen);
    dstu->sun_path[i] = '\0';
    i += offsetof(struct sockaddr_un, sun_path);



















    srclen = i;



    }





















  return srclen;
}


int
Curl_os400_connect(int sd, struct sockaddr * destaddr, int addrlen)

{
  int i;
  struct sockaddr_storage laddr;

  i = convert_sockaddr(&laddr, destaddr, addrlen);

  if(i < 0)
    return -1;

  return connect(sd, (struct sockaddr *) &laddr, i);
}


int
Curl_os400_bind(int sd, struct sockaddr * localaddr, int addrlen)

{
  int i;
  struct sockaddr_storage laddr;

  i = convert_sockaddr(&laddr, localaddr, addrlen);

  if(i < 0)
    return -1;

  return bind(sd, (struct sockaddr *) &laddr, i);
}


int
Curl_os400_sendto(int sd, char * buffer, int buflen, int flags,
                                struct sockaddr * dstaddr, int addrlen)

{
  int i;
  struct sockaddr_storage laddr;

  i = convert_sockaddr(&laddr, dstaddr, addrlen);

  if(i < 0)
    return -1;

  return sendto(sd, buffer, buflen, flags, (struct sockaddr *) &laddr, i);
}


int
Curl_os400_recvfrom(int sd, char * buffer, int buflen, int flags,
                                struct sockaddr * fromaddr, int * addrlen)

{
  int i;
  int rcvlen;
  int laddrlen;
  const struct sockaddr_un * srcu;
  struct sockaddr_un * dstu;
  struct sockaddr_storage laddr;

  if(!fromaddr || !addrlen || *addrlen <= 0)
    return recvfrom(sd, buffer, buflen, flags, fromaddr, addrlen);

  laddrlen = sizeof laddr;
  laddr.ss_family = AF_UNSPEC;          /* To detect if unused. */
  rcvlen = recvfrom(sd, buffer, buflen, flags,
                    (struct sockaddr *) &laddr, &laddrlen);

  if(rcvlen < 0)
    return rcvlen;

  switch (laddr.ss_family) {

  case AF_UNIX:
    srcu = (const struct sockaddr_un *) &laddr;
    dstu = (struct sockaddr_un *) fromaddr;
    i = *addrlen - offsetof(struct sockaddr_un, sun_path);
    laddrlen -= offsetof(struct sockaddr_un, sun_path);
    i = QadrtConvertE2A(dstu->sun_path, srcu->sun_path, i, laddrlen);
    laddrlen = i + offsetof(struct sockaddr_un, sun_path);

    if(laddrlen < *addrlen)
      dstu->sun_path[i] = '\0';

    break;

  case AF_UNSPEC:
    break;

  default:
    if(laddrlen > *addrlen)
      laddrlen = *addrlen;

    if(laddrlen)
      memcpy((char *) fromaddr, (char *) &laddr, laddrlen);

    break;
    }

  *addrlen = laddrlen;
  return rcvlen;
}






































#ifdef HAVE_LIBZ
const char *
Curl_os400_zlibVersion(void)

{
  return set_thread_string(LK_ZLIB_VERSION, zlibVersion());







|
|
|
<
|
|



|


|











|



|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







<




|










<




|











<




|











|
<
<

<
<
|
|




<







|
<
<
<
<
<
<
<
<
<
|
<
|
<
|
<
<
<
<
|
<
<
|
<
|
<
<
<




>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1223
1224
1225
1226
1227
1228
1229
1230
1231
1232

1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308

1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323

1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339

1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356


1357


1358
1359
1360
1361
1362
1363

1364
1365
1366
1367
1368
1369
1370
1371









1372

1373

1374




1375


1376

1377



1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
  return cp;
}

#endif /* CURL_DISABLE_LDAP */


static int
sockaddr2ebcdic(struct sockaddr_storage *dstaddr,
                const struct sockaddr *srcaddr, int srclen)
{

  const struct sockaddr_un *srcu;
  struct sockaddr_un *dstu;
  unsigned int i;
  unsigned int dstsize;

  /* Convert a socket address to job CCSID, if needed. */

  if(!srcaddr || srclen < offsetof(struct sockaddr, sa_family) +
     sizeof(srcaddr->sa_family) || srclen > sizeof(*dstaddr)) {
    errno = EINVAL;
    return -1;
    }

  memcpy((char *) dstaddr, (char *) srcaddr, srclen);

  switch (srcaddr->sa_family) {

  case AF_UNIX:
    srcu = (const struct sockaddr_un *) srcaddr;
    dstu = (struct sockaddr_un *) dstaddr;
    dstsize = sizeof(*dstaddr) - offsetof(struct sockaddr_un, sun_path);
    srclen -= offsetof(struct sockaddr_un, sun_path);
    i = QadrtConvertA2E(dstu->sun_path, srcu->sun_path, dstsize - 1, srclen);
    dstu->sun_path[i] = '\0';
    srclen = i + offsetof(struct sockaddr_un, sun_path);
    }

  return srclen;
}


static int
sockaddr2ascii(struct sockaddr *dstaddr, int dstlen,
               const struct sockaddr_storage *srcaddr, int srclen)
{
  const struct sockaddr_un *srcu;
  struct sockaddr_un *dstu;
  unsigned int dstsize;

  /* Convert a socket address to ASCII, if needed. */

  if(!srclen)
    return 0;
  if(srclen > dstlen)
    srclen = dstlen;
  if(!srcaddr || srclen < 0) {
    errno = EINVAL;
    return -1;
    }

  memcpy((char *) dstaddr, (char *) srcaddr, srclen);

  if(srclen >= offsetof(struct sockaddr_storage, ss_family) +
     sizeof(srcaddr->ss_family)) {
    switch (srcaddr->ss_family) {

    case AF_UNIX:
      srcu = (const struct sockaddr_un *) srcaddr;
      dstu = (struct sockaddr_un *) dstaddr;
      dstsize = dstlen - offsetof(struct sockaddr_un, sun_path);
      srclen -= offsetof(struct sockaddr_un, sun_path);
      if(dstsize > 0 && srclen > 0) {
        srclen = QadrtConvertE2A(dstu->sun_path, srcu->sun_path,
                                 dstsize - 1, srclen);
        dstu->sun_path[srclen] = '\0';
      }
      srclen += offsetof(struct sockaddr_un, sun_path);
    }
  }

  return srclen;
}


int
Curl_os400_connect(int sd, struct sockaddr * destaddr, int addrlen)

{
  int i;
  struct sockaddr_storage laddr;

  i = sockaddr2ebcdic(&laddr, destaddr, addrlen);

  if(i < 0)
    return -1;

  return connect(sd, (struct sockaddr *) &laddr, i);
}


int
Curl_os400_bind(int sd, struct sockaddr * localaddr, int addrlen)

{
  int i;
  struct sockaddr_storage laddr;

  i = sockaddr2ebcdic(&laddr, localaddr, addrlen);

  if(i < 0)
    return -1;

  return bind(sd, (struct sockaddr *) &laddr, i);
}


int
Curl_os400_sendto(int sd, char * buffer, int buflen, int flags,
                                struct sockaddr * dstaddr, int addrlen)

{
  int i;
  struct sockaddr_storage laddr;

  i = sockaddr2ebcdic(&laddr, dstaddr, addrlen);

  if(i < 0)
    return -1;

  return sendto(sd, buffer, buflen, flags, (struct sockaddr *) &laddr, i);
}


int
Curl_os400_recvfrom(int sd, char * buffer, int buflen, int flags,
                                struct sockaddr * fromaddr, int * addrlen)
{


  int rcvlen;


  struct sockaddr_storage laddr;
  int laddrlen = sizeof(laddr);

  if(!fromaddr || !addrlen || *addrlen <= 0)
    return recvfrom(sd, buffer, buflen, flags, fromaddr, addrlen);


  laddr.ss_family = AF_UNSPEC;          /* To detect if unused. */
  rcvlen = recvfrom(sd, buffer, buflen, flags,
                    (struct sockaddr *) &laddr, &laddrlen);

  if(rcvlen < 0)
    return rcvlen;

  if(laddr.ss_family == AF_UNSPEC)









    laddrlen = 0;

  else {

    laddrlen = sockaddr2ascii(fromaddr, *addrlen, &laddr, laddrlen);




    if(laddrlen < 0)


      return laddrlen;

  }



  *addrlen = laddrlen;
  return rcvlen;
}


int
Curl_os400_getpeername(int sd, struct sockaddr *addr, int *addrlen)
{
  struct sockaddr_storage laddr;
  int laddrlen = sizeof(laddr);
  int retcode = getpeername(sd, (struct sockaddr *) &laddr, &laddrlen);

  if(!retcode) {
    laddrlen = sockaddr2ascii(addr, *addrlen, &laddr, laddrlen);
    if(laddrlen < 0)
      return laddrlen;
    *addrlen = laddrlen;
  }

  return retcode;
}


int
Curl_os400_getsockname(int sd, struct sockaddr *addr, int *addrlen)
{
  struct sockaddr_storage laddr;
  int laddrlen = sizeof(laddr);
  int retcode = getsockname(sd, (struct sockaddr *) &laddr, &laddrlen);

  if(!retcode) {
    laddrlen = sockaddr2ascii(addr, *addrlen, &laddr, laddrlen);
    if(laddrlen < 0)
      return laddrlen;
    *addrlen = laddrlen;
  }

  return retcode;
}


#ifdef HAVE_LIBZ
const char *
Curl_os400_zlibVersion(void)

{
  return set_thread_string(LK_ZLIB_VERSION, zlibVersion());
Changes to jni/curl/projects/Windows/VC10/lib/libcurl.vcxproj.
2408
2409
2410
2411
2412
2413
2414

2415
2416
2417
2418
2419
2420
2421
    <ClCompile Include="..\..\..\..\lib\sendf.c" />
    <ClCompile Include="..\..\..\..\lib\setopt.c" />
    <ClCompile Include="..\..\..\..\lib\sha256.c" />
    <ClCompile Include="..\..\..\..\lib\share.c" />
    <ClCompile Include="..\..\..\..\lib\slist.c" />
    <ClCompile Include="..\..\..\..\lib\smb.c" />
    <ClCompile Include="..\..\..\..\lib\smtp.c" />

    <ClCompile Include="..\..\..\..\lib\socks.c" />
    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />
    <ClCompile Include="..\..\..\..\lib\splay.c" />
    <ClCompile Include="..\..\..\..\lib\strcase.c" />
    <ClCompile Include="..\..\..\..\lib\strdup.c" />







>







2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
    <ClCompile Include="..\..\..\..\lib\sendf.c" />
    <ClCompile Include="..\..\..\..\lib\setopt.c" />
    <ClCompile Include="..\..\..\..\lib\sha256.c" />
    <ClCompile Include="..\..\..\..\lib\share.c" />
    <ClCompile Include="..\..\..\..\lib\slist.c" />
    <ClCompile Include="..\..\..\..\lib\smb.c" />
    <ClCompile Include="..\..\..\..\lib\smtp.c" />
    <ClCompile Include="..\..\..\..\lib\socketpair.c" />
    <ClCompile Include="..\..\..\..\lib\socks.c" />
    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />
    <ClCompile Include="..\..\..\..\lib\splay.c" />
    <ClCompile Include="..\..\..\..\lib\strcase.c" />
    <ClCompile Include="..\..\..\..\lib\strdup.c" />
2547
2548
2549
2550
2551
2552
2553

2554
2555
2556
2557
2558
2559
2560
    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />
    <ClInclude Include="..\..\..\..\lib\share.h" />
    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />
    <ClInclude Include="..\..\..\..\lib\slist.h" />
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />

    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />







>







2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />
    <ClInclude Include="..\..\..\..\lib\share.h" />
    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />
    <ClInclude Include="..\..\..\..\lib\slist.h" />
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
Changes to jni/curl/projects/Windows/VC11/lib/libcurl.vcxproj.
2464
2465
2466
2467
2468
2469
2470

2471
2472
2473
2474
2475
2476
2477
    <ClCompile Include="..\..\..\..\lib\sendf.c" />
    <ClCompile Include="..\..\..\..\lib\setopt.c" />
    <ClCompile Include="..\..\..\..\lib\sha256.c" />
    <ClCompile Include="..\..\..\..\lib\share.c" />
    <ClCompile Include="..\..\..\..\lib\slist.c" />
    <ClCompile Include="..\..\..\..\lib\smb.c" />
    <ClCompile Include="..\..\..\..\lib\smtp.c" />

    <ClCompile Include="..\..\..\..\lib\socks.c" />
    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />
    <ClCompile Include="..\..\..\..\lib\splay.c" />
    <ClCompile Include="..\..\..\..\lib\strcase.c" />
    <ClCompile Include="..\..\..\..\lib\strdup.c" />







>







2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
    <ClCompile Include="..\..\..\..\lib\sendf.c" />
    <ClCompile Include="..\..\..\..\lib\setopt.c" />
    <ClCompile Include="..\..\..\..\lib\sha256.c" />
    <ClCompile Include="..\..\..\..\lib\share.c" />
    <ClCompile Include="..\..\..\..\lib\slist.c" />
    <ClCompile Include="..\..\..\..\lib\smb.c" />
    <ClCompile Include="..\..\..\..\lib\smtp.c" />
    <ClCompile Include="..\..\..\..\lib\socketpair.c" />
    <ClCompile Include="..\..\..\..\lib\socks.c" />
    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />
    <ClCompile Include="..\..\..\..\lib\splay.c" />
    <ClCompile Include="..\..\..\..\lib\strcase.c" />
    <ClCompile Include="..\..\..\..\lib\strdup.c" />
2603
2604
2605
2606
2607
2608
2609

2610
2611
2612
2613
2614
2615
2616
    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />
    <ClInclude Include="..\..\..\..\lib\share.h" />
    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />
    <ClInclude Include="..\..\..\..\lib\slist.h" />
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />

    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />







>







2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />
    <ClInclude Include="..\..\..\..\lib\share.h" />
    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />
    <ClInclude Include="..\..\..\..\lib\slist.h" />
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
Changes to jni/curl/projects/Windows/VC12/lib/libcurl.vcxproj.
2464
2465
2466
2467
2468
2469
2470

2471
2472
2473
2474
2475
2476
2477
    <ClCompile Include="..\..\..\..\lib\sendf.c" />
    <ClCompile Include="..\..\..\..\lib\setopt.c" />
    <ClCompile Include="..\..\..\..\lib\sha256.c" />
    <ClCompile Include="..\..\..\..\lib\share.c" />
    <ClCompile Include="..\..\..\..\lib\slist.c" />
    <ClCompile Include="..\..\..\..\lib\smb.c" />
    <ClCompile Include="..\..\..\..\lib\smtp.c" />

    <ClCompile Include="..\..\..\..\lib\socks.c" />
    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />
    <ClCompile Include="..\..\..\..\lib\splay.c" />
    <ClCompile Include="..\..\..\..\lib\strcase.c" />
    <ClCompile Include="..\..\..\..\lib\strdup.c" />







>







2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
    <ClCompile Include="..\..\..\..\lib\sendf.c" />
    <ClCompile Include="..\..\..\..\lib\setopt.c" />
    <ClCompile Include="..\..\..\..\lib\sha256.c" />
    <ClCompile Include="..\..\..\..\lib\share.c" />
    <ClCompile Include="..\..\..\..\lib\slist.c" />
    <ClCompile Include="..\..\..\..\lib\smb.c" />
    <ClCompile Include="..\..\..\..\lib\smtp.c" />
    <ClCompile Include="..\..\..\..\lib\socketpair.c" />
    <ClCompile Include="..\..\..\..\lib\socks.c" />
    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />
    <ClCompile Include="..\..\..\..\lib\splay.c" />
    <ClCompile Include="..\..\..\..\lib\strcase.c" />
    <ClCompile Include="..\..\..\..\lib\strdup.c" />
2603
2604
2605
2606
2607
2608
2609

2610
2611
2612
2613
2614
2615
2616
    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />
    <ClInclude Include="..\..\..\..\lib\share.h" />
    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />
    <ClInclude Include="..\..\..\..\lib\slist.h" />
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />

    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />







>







2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />
    <ClInclude Include="..\..\..\..\lib\share.h" />
    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />
    <ClInclude Include="..\..\..\..\lib\slist.h" />
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
Changes to jni/curl/projects/Windows/VC14/lib/libcurl.vcxproj.
2464
2465
2466
2467
2468
2469
2470

2471
2472
2473
2474
2475
2476
2477
    <ClCompile Include="..\..\..\..\lib\sendf.c" />
    <ClCompile Include="..\..\..\..\lib\setopt.c" />
    <ClCompile Include="..\..\..\..\lib\sha256.c" />
    <ClCompile Include="..\..\..\..\lib\share.c" />
    <ClCompile Include="..\..\..\..\lib\slist.c" />
    <ClCompile Include="..\..\..\..\lib\smb.c" />
    <ClCompile Include="..\..\..\..\lib\smtp.c" />

    <ClCompile Include="..\..\..\..\lib\socks.c" />
    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />
    <ClCompile Include="..\..\..\..\lib\splay.c" />
    <ClCompile Include="..\..\..\..\lib\strcase.c" />
    <ClCompile Include="..\..\..\..\lib\strdup.c" />







>







2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
    <ClCompile Include="..\..\..\..\lib\sendf.c" />
    <ClCompile Include="..\..\..\..\lib\setopt.c" />
    <ClCompile Include="..\..\..\..\lib\sha256.c" />
    <ClCompile Include="..\..\..\..\lib\share.c" />
    <ClCompile Include="..\..\..\..\lib\slist.c" />
    <ClCompile Include="..\..\..\..\lib\smb.c" />
    <ClCompile Include="..\..\..\..\lib\smtp.c" />
    <ClCompile Include="..\..\..\..\lib\socketpair.c" />
    <ClCompile Include="..\..\..\..\lib\socks.c" />
    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />
    <ClCompile Include="..\..\..\..\lib\splay.c" />
    <ClCompile Include="..\..\..\..\lib\strcase.c" />
    <ClCompile Include="..\..\..\..\lib\strdup.c" />
2603
2604
2605
2606
2607
2608
2609

2610
2611
2612
2613
2614
2615
2616
    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />
    <ClInclude Include="..\..\..\..\lib\share.h" />
    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />
    <ClInclude Include="..\..\..\..\lib\slist.h" />
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />

    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />







>







2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />
    <ClInclude Include="..\..\..\..\lib\share.h" />
    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />
    <ClInclude Include="..\..\..\..\lib\slist.h" />
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
Changes to jni/curl/projects/Windows/VC15/lib/libcurl.vcxproj.
2436
2437
2438
2439
2440
2441
2442

2443
2444
2445
2446
2447
2448
2449
    <ClCompile Include="..\..\..\..\lib\sendf.c" />
    <ClCompile Include="..\..\..\..\lib\setopt.c" />
    <ClCompile Include="..\..\..\..\lib\sha256.c" />
    <ClCompile Include="..\..\..\..\lib\share.c" />
    <ClCompile Include="..\..\..\..\lib\slist.c" />
    <ClCompile Include="..\..\..\..\lib\smb.c" />
    <ClCompile Include="..\..\..\..\lib\smtp.c" />

    <ClCompile Include="..\..\..\..\lib\socks.c" />
    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />
    <ClCompile Include="..\..\..\..\lib\splay.c" />
    <ClCompile Include="..\..\..\..\lib\strcase.c" />
    <ClCompile Include="..\..\..\..\lib\strdup.c" />







>







2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
    <ClCompile Include="..\..\..\..\lib\sendf.c" />
    <ClCompile Include="..\..\..\..\lib\setopt.c" />
    <ClCompile Include="..\..\..\..\lib\sha256.c" />
    <ClCompile Include="..\..\..\..\lib\share.c" />
    <ClCompile Include="..\..\..\..\lib\slist.c" />
    <ClCompile Include="..\..\..\..\lib\smb.c" />
    <ClCompile Include="..\..\..\..\lib\smtp.c" />
    <ClCompile Include="..\..\..\..\lib\socketpair.c" />
    <ClCompile Include="..\..\..\..\lib\socks.c" />
    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />
    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />
    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />
    <ClCompile Include="..\..\..\..\lib\splay.c" />
    <ClCompile Include="..\..\..\..\lib\strcase.c" />
    <ClCompile Include="..\..\..\..\lib\strdup.c" />
2575
2576
2577
2578
2579
2580
2581

2582
2583
2584
2585
2586
2587
2588
    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />
    <ClInclude Include="..\..\..\..\lib\share.h" />
    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />
    <ClInclude Include="..\..\..\..\lib\slist.h" />
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />

    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />







>







2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />
    <ClInclude Include="..\..\..\..\lib\share.h" />
    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />
    <ClInclude Include="..\..\..\..\lib\slist.h" />
    <ClInclude Include="..\..\..\..\lib\smb.h" />
    <ClInclude Include="..\..\..\..\lib\smtp.h" />
    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />
    <ClInclude Include="..\..\..\..\lib\socketpair.h" />
    <ClInclude Include="..\..\..\..\lib\socks.h" />
    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />
    <ClInclude Include="..\..\..\..\lib\splay.h" />
    <ClInclude Include="..\..\..\..\lib\ssh.h" />
    <ClInclude Include="..\..\..\..\lib\strcase.h" />
    <ClInclude Include="..\..\..\..\lib\strdup.h" />
    <ClInclude Include="..\..\..\..\lib\strerror.h" />
Changes to jni/curl/projects/Windows/VC6/lib/libcurl.dsp.
1081
1082
1083
1084
1085
1086
1087




1088
1089
1090
1091
1092
1093
1094
SOURCE=..\..\..\..\lib\smb.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\smtp.c
# End Source File
# Begin Source File





SOURCE=..\..\..\..\lib\socks.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\socks_gssapi.c
# End Source File







>
>
>
>







1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
SOURCE=..\..\..\..\lib\smb.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\smtp.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\socketpair.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\socks.c
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\socks_gssapi.c
# End Source File
1633
1634
1635
1636
1637
1638
1639




1640
1641
1642
1643
1644
1645
1646
SOURCE=..\..\..\..\lib\smtp.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\sockaddr.h
# End Source File
# Begin Source File





SOURCE=..\..\..\..\lib\socks.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\speedcheck.h
# End Source File







>
>
>
>







1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
SOURCE=..\..\..\..\lib\smtp.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\sockaddr.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\socketpair.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\socks.h
# End Source File
# Begin Source File

SOURCE=..\..\..\..\lib\speedcheck.h
# End Source File
Changes to jni/curl/projects/Windows/VC7.1/lib/libcurl.vcproj.
1518
1519
1520
1521
1522
1523
1524



1525
1526
1527
1528
1529
1530
1531
			</File>
			<File
				RelativePath="..\..\..\..\lib\smb.c">
			</File>
			<File
				RelativePath="..\..\..\..\lib\smtp.c">
			</File>



			<File
				RelativePath="..\..\..\..\lib\socks.c">
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks_gssapi.c">
			</File>
			<File







>
>
>







1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
			</File>
			<File
				RelativePath="..\..\..\..\lib\smb.c">
			</File>
			<File
				RelativePath="..\..\..\..\lib\smtp.c">
			</File>
			<File
				RelativePath="..\..\..\..\lib\socketpair.c">
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks.c">
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks_gssapi.c">
			</File>
			<File
1858
1859
1860
1861
1862
1863
1864



1865
1866
1867
1868
1869
1870
1871
			</File>
			<File
				RelativePath="..\..\..\..\lib\smtp.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\sockaddr.h">
			</File>



			<File
				RelativePath="..\..\..\..\lib\socks.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h">
			</File>
			<File







>
>
>







1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
			</File>
			<File
				RelativePath="..\..\..\..\lib\smtp.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\sockaddr.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\socketpair.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h">
			</File>
			<File
Changes to jni/curl/projects/Windows/VC7/lib/libcurl.vcproj.
1372
1373
1374
1375
1376
1377
1378



1379
1380
1381
1382
1383
1384
1385
			</File>
			<File
				RelativePath="..\..\..\..\lib\smb.c">
			</File>
			<File
				RelativePath="..\..\..\..\lib\smtp.c">
			</File>



			<File
				RelativePath="..\..\..\..\lib\socks.c">
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks_gssapi.c">
			</File>
			<File







>
>
>







1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
			</File>
			<File
				RelativePath="..\..\..\..\lib\smb.c">
			</File>
			<File
				RelativePath="..\..\..\..\lib\smtp.c">
			</File>
			<File
				RelativePath="..\..\..\..\lib\socketpair.c">
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks.c">
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks_gssapi.c">
			</File>
			<File
1712
1713
1714
1715
1716
1717
1718



1719
1720
1721
1722
1723
1724
1725
			</File>
			<File
				RelativePath="..\..\..\..\lib\smtp.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\sockaddr.h">
			</File>



			<File
				RelativePath="..\..\..\..\lib\socks.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h">
			</File>
			<File







>
>
>







1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
			</File>
			<File
				RelativePath="..\..\..\..\lib\smtp.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\sockaddr.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\socketpair.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks.h">
			</File>
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h">
			</File>
			<File
Changes to jni/curl/projects/Windows/VC8/lib/libcurl.vcproj.
3967
3968
3969
3970
3971
3972
3973




3974
3975
3976
3977
3978
3979
3980
			<File
				RelativePath="..\..\..\..\lib\smb.c"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\smtp.c"
			>




			</File>
			<File
				RelativePath="..\..\..\..\lib\socks.c"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks_gssapi.c"







>
>
>
>







3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
			<File
				RelativePath="..\..\..\..\lib\smb.c"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\smtp.c"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\socketpair.c"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks.c"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks_gssapi.c"
4419
4420
4421
4422
4423
4424
4425




4426
4427
4428
4429
4430
4431
4432
			<File
				RelativePath="..\..\..\..\lib\smtp.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\sockaddr.h"
			>




			</File>
			<File
				RelativePath="..\..\..\..\lib\socks.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h"







>
>
>
>







4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
			<File
				RelativePath="..\..\..\..\lib\smtp.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\sockaddr.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\socketpair.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h"
Changes to jni/curl/projects/Windows/VC9/lib/libcurl.vcproj.
3908
3909
3910
3911
3912
3913
3914




3915
3916
3917
3918
3919
3920
3921
			<File
				RelativePath="..\..\..\..\lib\smb.c"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\smtp.c"
			>




			</File>
			<File
				RelativePath="..\..\..\..\lib\socks.c"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks_gssapi.c"







>
>
>
>







3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
			<File
				RelativePath="..\..\..\..\lib\smb.c"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\smtp.c"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\socketpair.c"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks.c"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks_gssapi.c"
4360
4361
4362
4363
4364
4365
4366




4367
4368
4369
4370
4371
4372
4373
			<File
				RelativePath="..\..\..\..\lib\smtp.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\sockaddr.h"
			>




			</File>
			<File
				RelativePath="..\..\..\..\lib\socks.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h"







>
>
>
>







4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
			<File
				RelativePath="..\..\..\..\lib\smtp.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\sockaddr.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\socketpair.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\socks.h"
			>
			</File>
			<File
				RelativePath="..\..\..\..\lib\speedcheck.h"
Changes to jni/curl/src/tool_cfgable.h.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38














39
40
41
42
43
44
45
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "tool_setup.h"

#include "tool_sdecls.h"

#include "tool_metalink.h"

#include "tool_formparse.h"

typedef enum {
  ERR_NONE,
  ERR_BINARY_TERMINAL = 1, /* binary to terminal detected */
  ERR_LAST
} curl_error;

struct GlobalConfig;















struct OperationConfig {
  bool remote_time;
  char *random_file;
  char *egd_file;
  char *useragent;
  char *cookie;             /* single line with specified cookies */







<

<

|









>
>
>
>
>
>
>
>
>
>
>
>
>
>







18
19
20
21
22
23
24

25

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "tool_setup.h"

#include "tool_sdecls.h"

#include "tool_metalink.h"
#include "tool_urlglob.h"
#include "tool_formparse.h"

typedef enum {
  ERR_NONE,
  ERR_BINARY_TERMINAL = 1, /* binary to terminal detected */
  ERR_LAST
} curl_error;

struct GlobalConfig;

struct State {
  struct getout *urlnode;
  URLGlob *inglob;
  URLGlob *urls;
  char *outfiles;
  char *httpgetfields;
  char *uploadfile;
  unsigned long infilenum; /* number of files to upload */
  unsigned long up;  /* upload file counter within a single upload glob */
  unsigned long urlnum; /* how many iterations this single URL has with ranges
                           etc */
  unsigned long li;
};

struct OperationConfig {
  bool remote_time;
  char *random_file;
  char *egd_file;
  char *useragent;
  char *cookie;             /* single line with specified cookies */
258
259
260
261
262
263
264

265
266
267
268
269
270
271
  long happy_eyeballs_timeout_ms; /* happy eyeballs timeout in milliseconds.
                                     0 is valid. default: CURL_HET_DEFAULT. */
  bool haproxy_protocol;          /* whether to send HAProxy protocol v1 */
  bool disallow_username_in_url;  /* disallow usernames in URLs */
  struct GlobalConfig *global;
  struct OperationConfig *prev;
  struct OperationConfig *next;   /* Always last in the struct */

};

struct GlobalConfig {
  int showerror;                  /* -1 == unset, default => show errors
                                      0 => -s is used to NOT show errors
                                      1 => -S has been used to show errors */
  bool mute;                      /* don't show messages, --silent given */







>







270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
  long happy_eyeballs_timeout_ms; /* happy eyeballs timeout in milliseconds.
                                     0 is valid. default: CURL_HET_DEFAULT. */
  bool haproxy_protocol;          /* whether to send HAProxy protocol v1 */
  bool disallow_username_in_url;  /* disallow usernames in URLs */
  struct GlobalConfig *global;
  struct OperationConfig *prev;
  struct OperationConfig *next;   /* Always last in the struct */
  struct State state;             /* for create_transfer() */
};

struct GlobalConfig {
  int showerror;                  /* -1 == unset, default => show errors
                                      0 => -s is used to NOT show errors
                                      1 => -S has been used to show errors */
  bool mute;                      /* don't show messages, --silent given */
Changes to jni/curl/src/tool_getparam.c.
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
  {"Eh", "pubkey",                   ARG_STRING},
  {"Ei", "hostpubmd5",               ARG_STRING},
  {"Ej", "crlfile",                  ARG_FILENAME},
  {"Ek", "tlsuser",                  ARG_STRING},
  {"El", "tlspassword",              ARG_STRING},
  {"Em", "tlsauthtype",              ARG_STRING},
  {"En", "ssl-allow-beast",          ARG_BOOL},
  {"Eo", "login-options",            ARG_STRING},
  {"Ep", "pinnedpubkey",             ARG_STRING},
  {"EP", "proxy-pinnedpubkey",       ARG_STRING},
  {"Eq", "cert-status",              ARG_BOOL},
  {"Er", "false-start",              ARG_BOOL},
  {"Es", "ssl-no-revoke",            ARG_BOOL},
  {"Et", "tcp-fastopen",             ARG_BOOL},
  {"Eu", "proxy-tlsuser",            ARG_STRING},







|







239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
  {"Eh", "pubkey",                   ARG_STRING},
  {"Ei", "hostpubmd5",               ARG_STRING},
  {"Ej", "crlfile",                  ARG_FILENAME},
  {"Ek", "tlsuser",                  ARG_STRING},
  {"El", "tlspassword",              ARG_STRING},
  {"Em", "tlsauthtype",              ARG_STRING},
  {"En", "ssl-allow-beast",          ARG_BOOL},
  /* Eo */
  {"Ep", "pinnedpubkey",             ARG_STRING},
  {"EP", "proxy-pinnedpubkey",       ARG_STRING},
  {"Eq", "cert-status",              ARG_BOOL},
  {"Er", "false-start",              ARG_BOOL},
  {"Es", "ssl-no-revoke",            ARG_BOOL},
  {"Et", "tcp-fastopen",             ARG_BOOL},
  {"Eu", "proxy-tlsuser",            ARG_STRING},
318
319
320
321
322
323
324

325
326
327
328
329
330
331
  {"X",  "request",                  ARG_STRING},
  {"Y",  "speed-limit",              ARG_STRING},
  {"y",  "speed-time",               ARG_STRING},
  {"z",  "time-cond",                ARG_STRING},
  {"Z",  "parallel",                 ARG_BOOL},
  {"Zb", "parallel-max",             ARG_STRING},
  {"#",  "progress-bar",             ARG_BOOL},

  {":",  "next",                     ARG_NONE},
};

/* Split the argument of -E to 'certname' and 'passphrase' separated by colon.
 * We allow ':' and '\' to be escaped by '\' so that we can use certificate
 * nicknames containing ':'.  See <https://sourceforge.net/p/curl/bugs/1196/>
 * for details. */







>







318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
  {"X",  "request",                  ARG_STRING},
  {"Y",  "speed-limit",              ARG_STRING},
  {"y",  "speed-time",               ARG_STRING},
  {"z",  "time-cond",                ARG_STRING},
  {"Z",  "parallel",                 ARG_BOOL},
  {"Zb", "parallel-max",             ARG_STRING},
  {"#",  "progress-bar",             ARG_BOOL},
  {"#m", "progress-meter",           ARG_BOOL},
  {":",  "next",                     ARG_NONE},
};

/* Split the argument of -E to 'certname' and 'passphrase' separated by colon.
 * We allow ':' and '\' to be escaped by '\' so that we can use certificate
 * nicknames containing ':'.  See <https://sourceforge.net/p/curl/bugs/1196/>
 * for details. */
1168
1169
1170
1171
1172
1173
1174
1175


1176


1177
1178
1179


1180
1181
1182
1183
1184
1185
1186
        err = str2unum(&config->happy_eyeballs_timeout_ms, nextarg);
        if(err)
          return err;
        /* 0 is a valid value for this timeout */
        break;
      }
      break;
    case '#': /* --progress-bar */


      if(toggle)


        global->progressmode = CURL_PROGRESS_BAR;
      else
        global->progressmode = CURL_PROGRESS_STATS;


      break;
    case ':': /* --next */
      return PARAM_NEXT_OPERATION;
    case '0': /* --http* options */
      switch(subletter) {
      case '\0':
        /* HTTP version 1.0 */







|
>
>
|
>
>
|
<
|
>
>







1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182

1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
        err = str2unum(&config->happy_eyeballs_timeout_ms, nextarg);
        if(err)
          return err;
        /* 0 is a valid value for this timeout */
        break;
      }
      break;
    case '#':
      switch(subletter) {
      case 'm': /* --progress-meter */
        global->noprogress = !toggle;
        break;
      default:  /* --progress-bar */
        global->progressmode =

          toggle ? CURL_PROGRESS_BAR : CURL_PROGRESS_STATS;
        break;
      }
      break;
    case ':': /* --next */
      return PARAM_NEXT_OPERATION;
    case '0': /* --http* options */
      switch(subletter) {
      case '\0':
        /* HTTP version 1.0 */
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        break;
      case 'n': /* no empty SSL fragments, --ssl-allow-beast */
        if(curlinfo->features & CURL_VERSION_SSL)
          config->ssl_allow_beast = toggle;
        break;

      case 'o': /* --login-options */
        GetStr(&config->login_options, nextarg);
        break;

      case 'p': /* Pinned public key DER file */
        GetStr(&config->pinnedpubkey, nextarg);
        break;

      case 'P': /* proxy pinned public key */
        GetStr(&config->proxy_pinnedpubkey, nextarg);
        break;







<
<
<
<







1571
1572
1573
1574
1575
1576
1577




1578
1579
1580
1581
1582
1583
1584
          return PARAM_LIBCURL_DOESNT_SUPPORT;
        break;
      case 'n': /* no empty SSL fragments, --ssl-allow-beast */
        if(curlinfo->features & CURL_VERSION_SSL)
          config->ssl_allow_beast = toggle;
        break;





      case 'p': /* Pinned public key DER file */
        GetStr(&config->pinnedpubkey, nextarg);
        break;

      case 'P': /* proxy pinned public key */
        GetStr(&config->proxy_pinnedpubkey, nextarg);
        break;
Changes to jni/curl/src/tool_help.c.
259
260
261
262
263
264
265


266
267
268
269
270
271
272
   "Disable the ALPN TLS extension"},
  {"-N, --no-buffer",
   "Disable buffering of the output stream"},
  {"    --no-keepalive",
   "Disable TCP keepalive on the connection"},
  {"    --no-npn",
   "Disable the NPN TLS extension"},


  {"    --no-sessionid",
   "Disable SSL session-ID reusing"},
  {"    --noproxy <no-proxy-list>",
   "List of hosts which do not use proxy"},
  {"    --ntlm",
   "Use HTTP NTLM authentication"},
  {"    --ntlm-wb",







>
>







259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
   "Disable the ALPN TLS extension"},
  {"-N, --no-buffer",
   "Disable buffering of the output stream"},
  {"    --no-keepalive",
   "Disable TCP keepalive on the connection"},
  {"    --no-npn",
   "Disable the NPN TLS extension"},
  {"    --no-progress-meter",
   "Do not show the progress meter"},
  {"    --no-sessionid",
   "Disable SSL session-ID reusing"},
  {"    --noproxy <no-proxy-list>",
   "List of hosts which do not use proxy"},
  {"    --ntlm",
   "Use HTTP NTLM authentication"},
  {"    --ntlm-wb",
536
537
538
539
540
541
542

543
544
545
546
547
548
549
  {"HTTP2",          CURL_VERSION_HTTP2},
  {"HTTP3",          CURL_VERSION_HTTP3},
  {"UnixSockets",    CURL_VERSION_UNIX_SOCKETS},
  {"HTTPS-proxy",    CURL_VERSION_HTTPS_PROXY},
  {"MultiSSL",       CURL_VERSION_MULTI_SSL},
  {"PSL",            CURL_VERSION_PSL},
  {"alt-svc",        CURL_VERSION_ALTSVC},

};

void tool_help(void)
{
  int i;
  puts("Usage: curl [options...] <url>");
  for(i = 0; helptext[i].opt; i++) {







>







538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
  {"HTTP2",          CURL_VERSION_HTTP2},
  {"HTTP3",          CURL_VERSION_HTTP3},
  {"UnixSockets",    CURL_VERSION_UNIX_SOCKETS},
  {"HTTPS-proxy",    CURL_VERSION_HTTPS_PROXY},
  {"MultiSSL",       CURL_VERSION_MULTI_SSL},
  {"PSL",            CURL_VERSION_PSL},
  {"alt-svc",        CURL_VERSION_ALTSVC},
  {"ESNI",           CURL_VERSION_ESNI},
};

void tool_help(void)
{
  int i;
  puts("Usage: curl [options...] <url>");
  for(i = 0; helptext[i].opt; i++) {
Changes to jni/curl/src/tool_hugehelp.c.
2058
2059
2060
2061
2062
2063
2064












2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
 fputs(
"              is  used  by  a libcurl that supports HTTP/2 to negotiate HTTP/2\n"
"              support with the server during https sessions.\n"
"\n"
"              See also --no-alpn and --http2. --no-npn requires that  the  un-\n"
"              derlying libcurl was built to support TLS. Added in 7.36.0.\n"
"\n"












"       --no-sessionid\n"
"              (TLS)  Disable curl's use of SSL session-ID caching.  By default\n"
"              all transfers are done using the cache. Note that while  nothing\n"
, stdout);
 fputs(
"              should  ever  get  hurt  by attempting to reuse SSL session-IDs,\n"
"              there seem to be broken SSL implementations in the wild that may\n"
"              require you to disable this in order for you to succeed.\n"
"\n"
"              Note  that  this  is the negated option name documented. You can\n"
"              thus use --sessionid to enforce session-ID caching.\n"
"\n"
"              Added in 7.16.0.\n"
"\n"
"       --noproxy <no-proxy-list>\n"
, stdout);
 fputs(
"              Comma-separated list of hosts which do not use a proxy,  if  one\n"
"              is  specified.  The only wildcard is a single * character, which\n"
"              matches all hosts, and effectively disables the proxy. Each name\n"
"              in  this  list  is matched as either a domain which contains the\n"
"              hostname, or the hostname itself. For example,  local.com  would\n"
"              match   local.com,  local.com:80,  and  www.local.com,  but  not\n"
, stdout);
 fputs(
"              www.notlocal.com.\n"
"\n"
"              Since 7.53.0, This option overrides  the  environment  variables\n"
"              that  disable the proxy. If there's an environment variable dis-\n"
"              abling a proxy, you can set noproxy list to \"\" to override it.\n"
"\n"
"              Added in 7.19.4.\n"
"\n"
"       --ntlm-wb\n"
"              (HTTP) Enables NTLM much in the style --ntlm does, but hand over\n"
"              the  authentication  to the separate binary ntlmauth application\n"
, stdout);
 fputs(
"              that is executed when needed.\n"
"\n"
"              See also --ntlm and --proxy-ntlm.\n"
"\n"
"       --ntlm (HTTP) Enables  NTLM  authentication.  The  NTLM  authentication\n"
"              method was designed by Microsoft and is used by IIS web servers.\n"
"              It is a proprietary protocol, reverse-engineered by clever  peo-\n"
"              ple and implemented in curl based on their efforts. This kind of\n"
"              behavior should not be endorsed, you should  encourage  everyone\n"
, stdout);
 fputs(
"              who  uses  NTLM to switch to a public and documented authentica-\n"
"              tion method instead, such as Digest.\n"
"\n"
"              If you want to enable NTLM for your proxy  authentication,  then\n"
"              use --proxy-ntlm.\n"
"\n"
"              If  this  option  is  used  several times, only the first one is\n"
"              used.\n"
"\n"
"              See also  --proxy-ntlm.  --ntlm  requires  that  the  underlying\n"
, stdout);
 fputs(
"              libcurl  was built to support TLS. This option overrides --basic\n"
"              and --negotiate and --digest and --anyauth.\n"
"\n"
"       --oauth2-bearer <token>\n"
"              (IMAP POP3 SMTP) Specify the Bearer Token for OAUTH  2.0  server\n"
"              authentication. The Bearer Token is used in conjunction with the\n"
"              user name which can be specified as part of  the  --url  or  -u,\n"
"              --user options.\n"
"\n"
, stdout);
 fputs(
"              The  Bearer  Token  and user name are formatted according to RFC\n"
"              6750.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -o, --output <file>\n"
"              Write output to <file> instead of stdout. If you are using {} or\n"
"              []  to  fetch  multiple documents, you can use '#' followed by a\n"
"              number in the <file> specifier. That variable will  be  replaced\n"
, stdout);
 fputs(
"              with the current string for the URL being fetched. Like in:\n"
"\n"
"               curl http://{one,two}.example.com -o \"file_#1.txt\"\n"
"\n"
"              or use several variables like:\n"
"\n"
"               curl http://{site,host}.host[1-5].com -o \"#1_#2\"\n"
"\n"
"              You  may use this option as many times as the number of URLs you\n"
"              have. For example, if you specify two URLs on the  same  command\n"
"              line, you can use it like this:\n"
"\n"
, stdout);
 fputs(
"                curl -o aa example.com -o bb example.net\n"
"\n"
"              and  the  order  of  the -o options and the URLs doesn't matter,\n"
"              just that the first -o is for the first URL and so  on,  so  the\n"
"              above command line can also be written as\n"
"\n"
"                curl example.com example.net -o aa -o bb\n"
"\n"
"              See  also  the --create-dirs option to create the local directo-\n"
"              ries dynamically. Specifying the output as '-' (a  single  dash)\n"
, stdout);
 fputs(
"              will force the output to be done to stdout.\n"
"\n"
"              See  also  -O, --remote-name and --remote-name-all and -J, --re-\n"
"              mote-header-name.\n"
"\n"
"       --parallel-max\n"
"              When asked to do parallel transfers, using -Z, --parallel,  this\n"
"              option controls the maximum amount of transfers to do simultane-\n"
"              ously.\n"
"\n"
"              The default is 50.\n"
"\n"
"              See also -Z, --parallel. Added in 7.66.0.\n"
"\n"
"       -Z, --parallel\n"
, stdout);
 fputs(
"              Makes curl perform its transfers in parallel as compared to  the\n"
"              regular serial manner.\n"
"\n"
"              Added in 7.66.0.\n"
"\n"
"       --pass <phrase>\n"
"              (SSH TLS) Passphrase for the private key\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --path-as-is\n"
"              Tell  curl  to  not handle sequences of /../ or /./ in the given\n"
"              URL path. Normally curl will squash or merge them  according  to\n"
, stdout);
 fputs(
"              standards but with this option set you tell it not to do that.\n"
"\n"
"              Added in 7.42.0.\n"
"\n"
"       --pinnedpubkey <hashes>\n"
"              (TLS)  Tells  curl  to  use  the  specified  public key file (or\n"
"              hashes) to verify the peer. This can be a path to a  file  which\n"
"              contains a single public key in PEM or DER format, or any number\n"
"              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
"              rated by ';'\n"
"\n"
, stdout);
 fputs(
"              When  negotiating  a  TLS  or SSL connection, the server sends a\n"
"              certificate indicating its identity. A public key  is  extracted\n"
"              from  this certificate and if it does not exactly match the pub-\n"
"              lic key provided to this option, curl will abort the  connection\n"
"              before sending or receiving any data.\n"
"\n"
"              PEM/DER support:\n"
"                7.39.0: OpenSSL, GnuTLS and GSKit\n"
"                7.43.0: NSS and wolfSSL\n"
, stdout);
 fputs(
"                7.47.0: mbedtls sha256 support:\n"
"                7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL\n"
"                7.47.0: mbedtls Other SSL backends not supported.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --post301\n"
"              (HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST\n"
"              requests into GET requests when following a 301 redirection. The\n"
, stdout);
 fputs(
"              non-RFC  behaviour  is  ubiquitous in web browsers, so curl does\n"
"              the conversion by default to maintain  consistency.  However,  a\n"
"              server  may  require  a POST to remain a POST after such a redi-\n"
"              rection. This option is meaningful only when using  -L,  --loca-\n"
"              tion.\n"
"\n"
"              See  also  --post302  and --post303 and -L, --location. Added in\n"
"              7.17.1.\n"
"\n"
"       --post302\n"
, stdout);
 fputs(
"              (HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST\n"
"              requests into GET requests when following a 302 redirection. The\n"
"              non-RFC behaviour is ubiquitous in web browsers,  so  curl  does\n"
"              the  conversion  by  default to maintain consistency. However, a\n"
"              server may require a POST to remain a POST after  such  a  redi-\n"
"              rection.  This  option is meaningful only when using -L, --loca-\n"
"              tion.\n"
"\n"
, stdout);
 fputs(
"              See also --post301 and --post303 and -L,  --location.  Added  in\n"
"              7.19.1.\n"
"\n"
"       --post303\n"
"              (HTTP) Tells curl to violate RFC 7231/6.4.4 and not convert POST\n"
"              requests into GET requests when following  303  redirections.  A\n"
"              server may require a POST to remain a POST after a 303 redirect-\n"
"              ion. This option is meaningful only when using -L, --location.\n"
"\n"
, stdout);
 fputs(
"              See also --post302 and --post301 and -L,  --location.  Added  in\n"
"              7.26.0.\n"
"\n"
"       --preproxy [protocol://]host[:port]\n"
"              Use  the  specified  SOCKS proxy before connecting to an HTTP or\n"
"              HTTPS -x, --proxy. In such a case curl  first  connects  to  the\n"
"              SOCKS  proxy  and  then  connects (through SOCKS) to the HTTP or\n"
"              HTTPS proxy. Hence pre proxy.\n"
"\n"
, stdout);
 fputs(
"              The pre proxy string should be specified with a protocol:// pre-\n"
"              fix  to  specify  alternative  proxy  protocols.  Use socks4://,\n"
"              socks4a://, socks5:// or  socks5h://  to  request  the  specific\n"
"              SOCKS  version  to be used. No protocol specified will make curl\n"
"              default to SOCKS4.\n"
"\n"
"              If the port number is not specified in the proxy string,  it  is\n"
"              assumed to be 1080.\n"
"\n"
, stdout);
 fputs(
"              User and password that might be provided in the proxy string are\n"
"              URL decoded by curl. This allows you to pass in special  charac-\n"
"              ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -#, --progress-bar\n"
"              Make curl display transfer progress as a simple progress bar in-\n"
, stdout);
 fputs(
"              stead of the standard, more informational, meter.\n"
"\n"
"              This progress bar draws a single line of '#'  characters  across\n"
"              the screen and shows a percentage if the transfer size is known.\n"
"              For transfers without a known size, there  will  be  space  ship\n"
"              (-=o=-)  that  moves back and forth but only while data is being\n"
"              transferred, with a set of flying hash sign symbols on top.\n"
"\n"
"       --proto-default <protocol>\n"
, stdout);
 fputs(
"              Tells curl to use protocol for any URL missing a scheme name.\n"
"\n"
"              Example:\n"
"\n"
"               curl --proto-default https ftp.mozilla.org\n"
"\n"
"              An unknown or unsupported  protocol  causes  error  CURLE_UNSUP-\n"
"              PORTED_PROTOCOL (1).\n"
"\n"
"              This option does not change the default proxy protocol (http).\n"
"\n"
"              Without  this  option curl would make a guess based on the host,\n"
"              see --url for details.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.45.0.\n"
"\n"
"       --proto-redir <protocols>\n"
"              Tells curl to limit what protocols it may use on redirect.  Pro-\n"
"              tocols  denied by --proto are not overridden by this option. See\n"
"              --proto for how protocols are represented.\n"
"\n"
"              Example, allow only HTTP and HTTPS on redirect:\n"
"\n"
"               curl --proto-redir -all,http,https http://example.com\n"
"\n"
"              By default curl will allow HTTP, HTTPS, FTP and FTPS on redirect\n"
, stdout);
 fputs(
"              (7.65.2).  Older versions of curl allowed all protocols on redi-\n"
"              rect except several disabled for security reasons: Since  7.19.4\n"
"              FILE  and  SCP  are  disabled, and since 7.40.0 SMB and SMBS are\n"
"              also disabled. Specifying all or +all enables all  protocols  on\n"
"              redirect, including those disabled for security.\n"
"\n"
"              Added in 7.20.2.\n"
"\n"
"       --proto <protocols>\n"
, stdout);
 fputs(
"              Tells  curl  to limit what protocols it may use in the transfer.\n"
"              Protocols are evaluated left to right, are comma separated,  and\n"
"              are  each  a protocol name or 'all', optionally prefixed by zero\n"
"              or more modifiers. Available modifiers are:\n"
"\n"
"              +  Permit this protocol in addition to protocols already permit-\n"
"                 ted (this is the default if no modifier is used).\n"
"\n"
, stdout);
 fputs(
"              -  Deny  this  protocol,  removing it from the list of protocols\n"
"                 already permitted.\n"
"\n"
"              =  Permit only this protocol (ignoring the list already  permit-\n"
"                 ted),  though subject to later modification by subsequent en-\n"
"                 tries in the comma separated list.\n"
"\n"
"              For example:\n"
"\n"
"              --proto -ftps  uses the default protocols, but disables ftps\n"
"\n"
"              --proto -all,https,+http\n"
, stdout);
 fputs(
"                             only enables http and https\n"
"\n"
"              --proto =http,https\n"
"                             also only enables http and https\n"
"\n"
"       Unknown protocols produce a warning. This allows scripts to safely rely\n"
"       on being able to disable potentially dangerous protocols, without rely-\n"
"       ing upon support for that protocol being built into curl  to  avoid  an\n"
"       error.\n"
"\n"
"       This option can be used multiple times, in which case the effect is the\n"
, stdout);
 fputs(
"       same as concatenating the protocols into one instance of the option.\n"
"\n"
"       See also --proto-redir and --proto-default. Added in 7.20.2.\n"
"\n"
"       --proxy-anyauth\n"
"              Tells curl to pick a suitable authentication method when  commu-\n"
"              nicating  with  the  given HTTP proxy. This might cause an extra\n"
"              request/response round-trip.\n"
"\n"
"              See also -x, --proxy and --proxy-basic and --proxy-digest. Added\n"
"              in 7.13.2.\n"
"\n"
"       --proxy-basic\n"
, stdout);
 fputs(
"              Tells  curl  to use HTTP Basic authentication when communicating\n"
"              with the given proxy. Use --basic for enabling HTTP Basic with a\n"
"              remote  host.  Basic  is  the default authentication method curl\n"
"              uses with proxies.\n"
"\n"
"              See also -x, --proxy and --proxy-anyauth and --proxy-digest.\n"
"\n"
"       --proxy-cacert <file>\n"
"              Same as --cacert but used in HTTPS proxy context.\n"
"\n"
, stdout);
 fputs(
"              See also  --proxy-capath  and  --cacert  and  --capath  and  -x,\n"
"              --proxy. Added in 7.52.0.\n"
"\n"
"       --proxy-capath <dir>\n"
"              Same as --capath but used in HTTPS proxy context.\n"
"\n"
"              See  also  --proxy-cacert and -x, --proxy and --capath. Added in\n"
"              7.52.0.\n"
"\n"
"       --proxy-cert-type <type>\n"
"              Same as --cert-type but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"







>
>
>
>
>
>
>
>
>
>
>
>

|
|


|



|







|
|

|
|
|




|
|






|






|

|

|


|


|


|


|


|



|

|




|






|
|










|
|






|
|




|
|




|



|










|










|
|







|
|






|
|
|
|


















|
|
|
|


|







|
|
|
|




|




|





|



|
|
|





|
|
|


|





|












|

|
|











|




|







|
|










|
|
|







|
|
|







|


|
|
















|










|
|








|

|









|





|







2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
 fputs(
"              is  used  by  a libcurl that supports HTTP/2 to negotiate HTTP/2\n"
"              support with the server during https sessions.\n"
"\n"
"              See also --no-alpn and --http2. --no-npn requires that  the  un-\n"
"              derlying libcurl was built to support TLS. Added in 7.36.0.\n"
"\n"
"       --no-progress-meter\n"
"              Option to switch off the progress meter output without muting or\n"
"              otherwise affecting warning and informational messages like  -s,\n"
, stdout);
 fputs(
"              --silent does.\n"
"\n"
"              Note  that  this  is the negated option name documented. You can\n"
"              thus use --progress-meter to enable the progress meter again.\n"
"\n"
"              See also -v, --verbose and -s, --silent. Added in 7.67.0.\n"
"\n"
"       --no-sessionid\n"
"              (TLS) Disable curl's use of SSL session-ID caching.  By  default\n"
"              all  transfers are done using the cache. Note that while nothing\n"
, stdout);
 fputs(
"              should ever get hurt by attempting  to  reuse  SSL  session-IDs,\n"
"              there seem to be broken SSL implementations in the wild that may\n"
"              require you to disable this in order for you to succeed.\n"
"\n"
"              Note that this is the negated option name  documented.  You  can\n"
"              thus use --sessionid to enforce session-ID caching.\n"
"\n"
"              Added in 7.16.0.\n"
"\n"
"       --noproxy <no-proxy-list>\n"
, stdout);
 fputs(
"              Comma-separated  list  of hosts which do not use a proxy, if one\n"
"              is specified.  The only wildcard is a single * character,  which\n"
"              matches all hosts, and effectively disables the proxy. Each name\n"
"              in this list is matched as either a domain  which  contains  the\n"
"              hostname,  or  the hostname itself. For example, local.com would\n"
"              match  local.com,  local.com:80,  and  www.local.com,  but   not\n"
, stdout);
 fputs(
"              www.notlocal.com.\n"
"\n"
"              Since  7.53.0,  This  option overrides the environment variables\n"
"              that disable the proxy. If there's an environment variable  dis-\n"
"              abling a proxy, you can set noproxy list to \"\" to override it.\n"
"\n"
"              Added in 7.19.4.\n"
"\n"
"       --ntlm-wb\n"
"              (HTTP) Enables NTLM much in the style --ntlm does, but hand over\n"
"              the authentication to the separate binary  ntlmauth  application\n"
, stdout);
 fputs(
"              that is executed when needed.\n"
"\n"
"              See also --ntlm and --proxy-ntlm.\n"
"\n"
"       --ntlm (HTTP)  Enables  NTLM  authentication.  The  NTLM authentication\n"
"              method was designed by Microsoft and is used by IIS web servers.\n"
"              It  is a proprietary protocol, reverse-engineered by clever peo-\n"
"              ple and implemented in curl based on their efforts. This kind of\n"
"              behavior  should  not be endorsed, you should encourage everyone\n"
, stdout);
 fputs(
"              who uses NTLM to switch to a public and  documented  authentica-\n"
"              tion method instead, such as Digest.\n"
"\n"
"              If  you  want to enable NTLM for your proxy authentication, then\n"
"              use --proxy-ntlm.\n"
"\n"
"              If this option is used several times,  only  the  first  one  is\n"
"              used.\n"
"\n"
"              See  also  --proxy-ntlm.  --ntlm  requires  that  the underlying\n"
, stdout);
 fputs(
"              libcurl was built to support TLS. This option overrides  --basic\n"
"              and --negotiate and --digest and --anyauth.\n"
"\n"
"       --oauth2-bearer <token>\n"
"              (IMAP  POP3  SMTP) Specify the Bearer Token for OAUTH 2.0 server\n"
"              authentication. The Bearer Token is used in conjunction with the\n"
"              user  name  which  can  be specified as part of the --url or -u,\n"
"              --user options.\n"
"\n"
, stdout);
 fputs(
"              The Bearer Token and user name are formatted  according  to  RFC\n"
"              6750.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -o, --output <file>\n"
"              Write output to <file> instead of stdout. If you are using {} or\n"
"              [] to fetch multiple documents, you can use '#'  followed  by  a\n"
"              number  in  the <file> specifier. That variable will be replaced\n"
, stdout);
 fputs(
"              with the current string for the URL being fetched. Like in:\n"
"\n"
"               curl http://{one,two}.example.com -o \"file_#1.txt\"\n"
"\n"
"              or use several variables like:\n"
"\n"
"               curl http://{site,host}.host[1-5].com -o \"#1_#2\"\n"
"\n"
"              You may use this option as many times as the number of URLs  you\n"
"              have.  For  example, if you specify two URLs on the same command\n"
"              line, you can use it like this:\n"
"\n"
, stdout);
 fputs(
"                curl -o aa example.com -o bb example.net\n"
"\n"
"              and the order of the -o options and  the  URLs  doesn't  matter,\n"
"              just  that  the  first -o is for the first URL and so on, so the\n"
"              above command line can also be written as\n"
"\n"
"                curl example.com example.net -o aa -o bb\n"
"\n"
"              See also the --create-dirs option to create the  local  directo-\n"
"              ries  dynamically.  Specifying the output as '-' (a single dash)\n"
, stdout);
 fputs(
"              will force the output to be done to stdout.\n"
"\n"
"              See also -O, --remote-name and --remote-name-all and  -J,  --re-\n"
"              mote-header-name.\n"
"\n"
"       --parallel-max\n"
"              When  asked to do parallel transfers, using -Z, --parallel, this\n"
"              option controls the maximum amount of transfers to do simultane-\n"
"              ously.\n"
"\n"
"              The default is 50.\n"
"\n"
"              See also -Z, --parallel. Added in 7.66.0.\n"
"\n"
"       -Z, --parallel\n"
, stdout);
 fputs(
"              Makes  curl perform its transfers in parallel as compared to the\n"
"              regular serial manner.\n"
"\n"
"              Added in 7.66.0.\n"
"\n"
"       --pass <phrase>\n"
"              (SSH TLS) Passphrase for the private key\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --path-as-is\n"
"              Tell curl to not handle sequences of /../ or /./  in  the  given\n"
"              URL  path.  Normally curl will squash or merge them according to\n"
, stdout);
 fputs(
"              standards but with this option set you tell it not to do that.\n"
"\n"
"              Added in 7.42.0.\n"
"\n"
"       --pinnedpubkey <hashes>\n"
"              (TLS) Tells curl to  use  the  specified  public  key  file  (or\n"
"              hashes)  to  verify the peer. This can be a path to a file which\n"
"              contains a single public key in PEM or DER format, or any number\n"
"              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
"              rated by ';'\n"
"\n"
, stdout);
 fputs(
"              When negotiating a TLS or SSL connection,  the  server  sends  a\n"
"              certificate  indicating  its identity. A public key is extracted\n"
"              from this certificate and if it does not exactly match the  pub-\n"
"              lic  key provided to this option, curl will abort the connection\n"
"              before sending or receiving any data.\n"
"\n"
"              PEM/DER support:\n"
"                7.39.0: OpenSSL, GnuTLS and GSKit\n"
"                7.43.0: NSS and wolfSSL\n"
, stdout);
 fputs(
"                7.47.0: mbedtls sha256 support:\n"
"                7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL\n"
"                7.47.0: mbedtls Other SSL backends not supported.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --post301\n"
"              (HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST\n"
"              requests into GET requests when following a 301 redirection. The\n"
, stdout);
 fputs(
"              non-RFC behaviour is ubiquitous in web browsers,  so  curl  does\n"
"              the  conversion  by  default to maintain consistency. However, a\n"
"              server may require a POST to remain a POST after  such  a  redi-\n"
"              rection.  This  option is meaningful only when using -L, --loca-\n"
"              tion.\n"
"\n"
"              See also --post302 and --post303 and -L,  --location.  Added  in\n"
"              7.17.1.\n"
"\n"
"       --post302\n"
, stdout);
 fputs(
"              (HTTP) Tells curl to respect RFC 7231/6.4.3 and not convert POST\n"
"              requests into GET requests when following a 302 redirection. The\n"
"              non-RFC  behaviour  is  ubiquitous in web browsers, so curl does\n"
"              the conversion by default to maintain  consistency.  However,  a\n"
"              server  may  require  a POST to remain a POST after such a redi-\n"
"              rection. This option is meaningful only when using  -L,  --loca-\n"
"              tion.\n"
"\n"
, stdout);
 fputs(
"              See  also  --post301  and --post303 and -L, --location. Added in\n"
"              7.19.1.\n"
"\n"
"       --post303\n"
"              (HTTP) Tells curl to violate RFC 7231/6.4.4 and not convert POST\n"
"              requests  into  GET  requests when following 303 redirections. A\n"
"              server may require a POST to remain a POST after a 303 redirect-\n"
"              ion. This option is meaningful only when using -L, --location.\n"
"\n"
, stdout);
 fputs(
"              See  also  --post302  and --post301 and -L, --location. Added in\n"
"              7.26.0.\n"
"\n"
"       --preproxy [protocol://]host[:port]\n"
"              Use the specified SOCKS proxy before connecting to  an  HTTP  or\n"
"              HTTPS  -x,  --proxy.  In  such a case curl first connects to the\n"
"              SOCKS proxy and then connects (through SOCKS)  to  the  HTTP  or\n"
"              HTTPS proxy. Hence pre proxy.\n"
"\n"
, stdout);
 fputs(
"              The pre proxy string should be specified with a protocol:// pre-\n"
"              fix to  specify  alternative  proxy  protocols.  Use  socks4://,\n"
"              socks4a://,  socks5://  or  socks5h://  to  request the specific\n"
"              SOCKS version to be used. No protocol specified will  make  curl\n"
"              default to SOCKS4.\n"
"\n"
"              If  the  port number is not specified in the proxy string, it is\n"
"              assumed to be 1080.\n"
"\n"
, stdout);
 fputs(
"              User and password that might be provided in the proxy string are\n"
"              URL  decoded by curl. This allows you to pass in special charac-\n"
"              ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -#, --progress-bar\n"
"              Make curl display transfer progress as a simple progress bar in-\n"
, stdout);
 fputs(
"              stead of the standard, more informational, meter.\n"
"\n"
"              This  progress  bar draws a single line of '#' characters across\n"
"              the screen and shows a percentage if the transfer size is known.\n"
"              For  transfers  without  a  known size, there will be space ship\n"
"              (-=o=-) that moves back and forth but only while data  is  being\n"
"              transferred, with a set of flying hash sign symbols on top.\n"
"\n"
"       --proto-default <protocol>\n"
, stdout);
 fputs(
"              Tells curl to use protocol for any URL missing a scheme name.\n"
"\n"
"              Example:\n"
"\n"
"               curl --proto-default https ftp.mozilla.org\n"
"\n"
"              An  unknown  or  unsupported  protocol causes error CURLE_UNSUP-\n"
"              PORTED_PROTOCOL (1).\n"
"\n"
"              This option does not change the default proxy protocol (http).\n"
"\n"
"              Without this option curl would make a guess based on  the  host,\n"
"              see --url for details.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.45.0.\n"
"\n"
"       --proto-redir <protocols>\n"
"              Tells  curl to limit what protocols it may use on redirect. Pro-\n"
"              tocols denied by --proto are not overridden by this option.  See\n"
"              --proto for how protocols are represented.\n"
"\n"
"              Example, allow only HTTP and HTTPS on redirect:\n"
"\n"
"               curl --proto-redir -all,http,https http://example.com\n"
"\n"
"              By default curl will allow HTTP, HTTPS, FTP and FTPS on redirect\n"
, stdout);
 fputs(
"              (7.65.2).  Older versions of curl allowed all protocols on redi-\n"
"              rect  except several disabled for security reasons: Since 7.19.4\n"
"              FILE and SCP are disabled, and since 7.40.0  SMB  and  SMBS  are\n"
"              also  disabled.  Specifying all or +all enables all protocols on\n"
"              redirect, including those disabled for security.\n"
"\n"
"              Added in 7.20.2.\n"
"\n"
"       --proto <protocols>\n"
, stdout);
 fputs(
"              Tells curl to limit what protocols it may use in  the  transfer.\n"
"              Protocols  are evaluated left to right, are comma separated, and\n"
"              are each a protocol name or 'all', optionally prefixed  by  zero\n"
"              or more modifiers. Available modifiers are:\n"
"\n"
"              +  Permit this protocol in addition to protocols already permit-\n"
"                 ted (this is the default if no modifier is used).\n"
"\n"
, stdout);
 fputs(
"              -  Deny this protocol, removing it from the  list  of  protocols\n"
"                 already permitted.\n"
"\n"
"              =  Permit  only this protocol (ignoring the list already permit-\n"
"                 ted), though subject to later modification by subsequent  en-\n"
"                 tries in the comma separated list.\n"
"\n"
"              For example:\n"
"\n"
"              --proto -ftps  uses the default protocols, but disables ftps\n"
"\n"
"              --proto -all,https,+http\n"
, stdout);
 fputs(
"                             only enables http and https\n"
"\n"
"              --proto =http,https\n"
"                             also only enables http and https\n"
"\n"
"       Unknown protocols produce a warning. This allows scripts to safely rely\n"
"       on being able to disable potentially dangerous protocols, without rely-\n"
"       ing  upon  support  for that protocol being built into curl to avoid an\n"
"       error.\n"
"\n"
"       This option can be used multiple times, in which case the effect is the\n"
, stdout);
 fputs(
"       same as concatenating the protocols into one instance of the option.\n"
"\n"
"       See also --proto-redir and --proto-default. Added in 7.20.2.\n"
"\n"
"       --proxy-anyauth\n"
"              Tells  curl to pick a suitable authentication method when commu-\n"
"              nicating with the given HTTP proxy. This might  cause  an  extra\n"
"              request/response round-trip.\n"
"\n"
"              See also -x, --proxy and --proxy-basic and --proxy-digest. Added\n"
"              in 7.13.2.\n"
"\n"
"       --proxy-basic\n"
, stdout);
 fputs(
"              Tells curl to use HTTP Basic authentication  when  communicating\n"
"              with the given proxy. Use --basic for enabling HTTP Basic with a\n"
"              remote host. Basic is the  default  authentication  method  curl\n"
"              uses with proxies.\n"
"\n"
"              See also -x, --proxy and --proxy-anyauth and --proxy-digest.\n"
"\n"
"       --proxy-cacert <file>\n"
"              Same as --cacert but used in HTTPS proxy context.\n"
"\n"
, stdout);
 fputs(
"              See  also  --proxy-capath  and  --cacert  and  --capath  and -x,\n"
"              --proxy. Added in 7.52.0.\n"
"\n"
"       --proxy-capath <dir>\n"
"              Same as --capath but used in HTTPS proxy context.\n"
"\n"
"              See also --proxy-cacert and -x, --proxy and --capath.  Added  in\n"
"              7.52.0.\n"
"\n"
"       --proxy-cert-type <type>\n"
"              Same as --cert-type but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
"\n"
"       --proxy-crlfile <file>\n"
"              Same as --crlfile but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-digest\n"
"              Tells curl to use HTTP Digest authentication when  communicating\n"
, stdout);
 fputs(
"              with the given proxy. Use --digest for enabling HTTP Digest with\n"
"              a remote host.\n"
"\n"
"              See also -x, --proxy and --proxy-anyauth and --proxy-basic.\n"
"\n"
"       --proxy-header <header/@file>\n"
"              (HTTP) Extra header to include in the request when sending  HTTP\n"
"              to a proxy. You may specify any number of extra headers. This is\n"
"              the equivalent option to -H, --header but is for proxy  communi-\n"
, stdout);
 fputs(
"              cation  only  like  in CONNECT requests when you want a separate\n"
"              header sent to the proxy to what is sent to  the  actual  remote\n"
"              host.\n"
"\n"
"              curl  will  make  sure  that each header you add/replace is sent\n"
"              with the proper end-of-line marker, you should thus not add that\n"
"              as a part of the header content: do not add newlines or carriage\n"
"              returns, they will only mess things up for you.\n"
"\n"
, stdout);
 fputs(
"              Headers specified with this option will not be included  in  re-\n"
"              quests that curl knows will not be sent to a proxy.\n"
"\n"
"              Starting  in  7.55.0, this option can take an argument in @file-\n"
"              name style, which then adds a header for each line in the  input\n"
"              file. Using @- will make curl read the header file from stdin.\n"
"\n"
"              This  option  can  be  used multiple times to add/replace/remove\n"
"              multiple headers.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.37.0.\n"
"       --proxy-insecure\n"
"              Same as -k, --insecure but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-key-type <type>\n"
"              Same as --key-type but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-key <key>\n"
"              Same as --key but used in HTTPS proxy context.\n"
"\n"
"       --proxy-negotiate\n"
"              Tells curl to use HTTP Negotiate  (SPNEGO)  authentication  when\n"
, stdout);
 fputs(
"              communicating with the given proxy. Use --negotiate for enabling\n"
"              HTTP Negotiate (SPNEGO) with a remote host.\n"
"\n"
"              See also --proxy-anyauth and --proxy-basic. Added in 7.17.1.\n"
"\n"
"       --proxy-ntlm\n"
"              Tells curl to use HTTP NTLM  authentication  when  communicating\n"
"              with the given proxy. Use --ntlm for enabling NTLM with a remote\n"
"              host.\n"
"\n"
"              See also --proxy-negotiate and --proxy-anyauth.\n"
"\n"
, stdout);
 fputs(
"       --proxy-pass <phrase>\n"
"              Same as --pass but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-pinnedpubkey <hashes>\n"
"              (TLS) Tells curl to  use  the  specified  public  key  file  (or\n"
"              hashes)  to verify the proxy. This can be a path to a file which\n"
"              contains a single public key in PEM or DER format, or any number\n"
"              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
, stdout);
 fputs(
"              rated by ';'\n"
"\n"
"              When negotiating a TLS or SSL connection,  the  server  sends  a\n"
"              certificate  indicating  its identity. A public key is extracted\n"
"              from this certificate and if it does not exactly match the  pub-\n"
"              lic  key provided to this option, curl will abort the connection\n"
"              before sending or receiving any data.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
, stdout);
 fputs(
"       --proxy-service-name <name>\n"
"              This option allows you to change the service name for proxy  ne-\n"
"              gotiation.\n"
"\n"
"              Added in 7.43.0.\n"
"\n"
"       --proxy-ssl-allow-beast\n"
"              Same as --ssl-allow-beast but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-tls13-ciphers <ciphersuite list>\n"
"              (TLS)  Specifies which cipher suites to use in the connection to\n"
, stdout);
 fputs(
"              your HTTPS proxy when it negotiates TLS 1.3. The list of ciphers\n"
"              suites  must  specify  valid  ciphers. Read up on TLS 1.3 cipher\n"
"              suite details on this URL:\n"
"\n"
"               https://curl.haxx.se/docs/ssl-ciphers.html\n"
"\n"
"              This option is currently used only when curl  is  built  to  use\n"
"              OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
"              you can try setting TLS 1.3 cipher suites by using the  --proxy-\n"
, stdout);
 fputs(
"              ciphers option.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --proxy-tlsauthtype <type>\n"







|








|

|


|
|


|






|


|
|


|



















|








|













|
|






|
|
|
|







|










|



|




|

|







2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
"\n"
"       --proxy-crlfile <file>\n"
"              Same as --crlfile but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-digest\n"
"              Tells  curl to use HTTP Digest authentication when communicating\n"
, stdout);
 fputs(
"              with the given proxy. Use --digest for enabling HTTP Digest with\n"
"              a remote host.\n"
"\n"
"              See also -x, --proxy and --proxy-anyauth and --proxy-basic.\n"
"\n"
"       --proxy-header <header/@file>\n"
"              (HTTP)  Extra header to include in the request when sending HTTP\n"
"              to a proxy. You may specify any number of extra headers. This is\n"
"              the  equivalent option to -H, --header but is for proxy communi-\n"
, stdout);
 fputs(
"              cation only like in CONNECT requests when you  want  a  separate\n"
"              header  sent  to  the proxy to what is sent to the actual remote\n"
"              host.\n"
"\n"
"              curl will make sure that each header  you  add/replace  is  sent\n"
"              with the proper end-of-line marker, you should thus not add that\n"
"              as a part of the header content: do not add newlines or carriage\n"
"              returns, they will only mess things up for you.\n"
"\n"
, stdout);
 fputs(
"              Headers  specified  with this option will not be included in re-\n"
"              quests that curl knows will not be sent to a proxy.\n"
"\n"
"              Starting in 7.55.0, this option can take an argument  in  @file-\n"
"              name  style, which then adds a header for each line in the input\n"
"              file. Using @- will make curl read the header file from stdin.\n"
"\n"
"              This option can be used  multiple  times  to  add/replace/remove\n"
"              multiple headers.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.37.0.\n"
"       --proxy-insecure\n"
"              Same as -k, --insecure but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-key-type <type>\n"
"              Same as --key-type but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-key <key>\n"
"              Same as --key but used in HTTPS proxy context.\n"
"\n"
"       --proxy-negotiate\n"
"              Tells  curl  to  use HTTP Negotiate (SPNEGO) authentication when\n"
, stdout);
 fputs(
"              communicating with the given proxy. Use --negotiate for enabling\n"
"              HTTP Negotiate (SPNEGO) with a remote host.\n"
"\n"
"              See also --proxy-anyauth and --proxy-basic. Added in 7.17.1.\n"
"\n"
"       --proxy-ntlm\n"
"              Tells  curl  to  use HTTP NTLM authentication when communicating\n"
"              with the given proxy. Use --ntlm for enabling NTLM with a remote\n"
"              host.\n"
"\n"
"              See also --proxy-negotiate and --proxy-anyauth.\n"
"\n"
, stdout);
 fputs(
"       --proxy-pass <phrase>\n"
"              Same as --pass but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-pinnedpubkey <hashes>\n"
"              (TLS)  Tells  curl  to  use  the  specified  public key file (or\n"
"              hashes) to verify the proxy. This can be a path to a file  which\n"
"              contains a single public key in PEM or DER format, or any number\n"
"              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
, stdout);
 fputs(
"              rated by ';'\n"
"\n"
"              When  negotiating  a  TLS  or SSL connection, the server sends a\n"
"              certificate indicating its identity. A public key  is  extracted\n"
"              from  this certificate and if it does not exactly match the pub-\n"
"              lic key provided to this option, curl will abort the  connection\n"
"              before sending or receiving any data.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
, stdout);
 fputs(
"       --proxy-service-name <name>\n"
"              This  option allows you to change the service name for proxy ne-\n"
"              gotiation.\n"
"\n"
"              Added in 7.43.0.\n"
"\n"
"       --proxy-ssl-allow-beast\n"
"              Same as --ssl-allow-beast but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --proxy-tls13-ciphers <ciphersuite list>\n"
"              (TLS) Specifies which cipher suites to use in the connection  to\n"
, stdout);
 fputs(
"              your HTTPS proxy when it negotiates TLS 1.3. The list of ciphers\n"
"              suites must specify valid ciphers. Read up  on  TLS  1.3  cipher\n"
"              suite details on this URL:\n"
"\n"
"               https://curl.haxx.se/docs/ssl-ciphers.html\n"
"\n"
"              This  option  is  currently  used only when curl is built to use\n"
"              OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
"              you  can try setting TLS 1.3 cipher suites by using the --proxy-\n"
, stdout);
 fputs(
"              ciphers option.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --proxy-tlsauthtype <type>\n"
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
"\n"
"       --proxy-tlsv1\n"
"              Same as -1, --tlsv1 but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -U, --proxy-user <user:password>\n"
"              Specify  the user name and password to use for proxy authentica-\n"
"              tion.\n"
"\n"
"              If you use a Windows SSPI-enabled curl binary and do either  Ne-\n"
"              gotiate  or NTLM authentication then you can tell curl to select\n"
, stdout);
 fputs(
"              the user name and password from your environment by specifying a\n"
"              single colon with this option: \"-U :\".\n"
"\n"
"              On systems where it works, curl will hide the given option argu-\n"
"              ment from process listings. This is not enough to  protect  cre-\n"
"              dentials  from  possibly getting seen by other users on the same\n"
"              system as they will still be visible for a brief  moment  before\n"
, stdout);
 fputs(
"              cleared. Such sensitive data should be retrieved from a file in-\n"
"              stead or similar and never used in clear text in a command line.\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -x, --proxy [protocol://]host[:port]\n"
"              Use the specified proxy.\n"
"\n"
"              The proxy string can be specified with a protocol:// prefix.  No\n"
"              protocol specified or http:// will be treated as HTTP proxy. Use\n"
, stdout);
 fputs(
"              socks4://, socks4a://, socks5:// or socks5h:// to request a spe-\n"
"              cific SOCKS version to be used.  (The protocol support was added\n"
"              in curl 7.21.7)\n"
"\n"
"              HTTPS proxy support via https:// protocol prefix  was  added  in\n"
"              7.52.0 for OpenSSL, GnuTLS and NSS.\n"
"\n"
"              Unrecognized  and  unsupported  proxy  protocols  cause an error\n"
"              since 7.52.0.  Prior versions may ignore the  protocol  and  use\n"
, stdout);
 fputs(
"              http:// instead.\n"
"\n"
"              If  the  port number is not specified in the proxy string, it is\n"
"              assumed to be 1080.\n"
"\n"
"              This option overrides existing environment  variables  that  set\n"
"              the  proxy  to use. If there's an environment variable setting a\n"
"              proxy, you can set proxy to \"\" to override it.\n"
"\n"
"              All operations that are performed over an HTTP proxy will trans-\n"
, stdout);
 fputs(
"              parently  be  converted  to HTTP. It means that certain protocol\n"
"              specific operations might not be available. This is not the case\n"
"              if you can tunnel through the proxy, as one with the -p, --prox-\n"
"              ytunnel option.\n"
"\n"
"              User and password that might be provided in the proxy string are\n"
"              URL  decoded by curl. This allows you to pass in special charac-\n"
"              ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
, stdout);
 fputs(
"              The proxy host can be specified the exact same way as the  proxy\n"
"              environment  variables,  including the protocol prefix (http://)\n"
"              and the embedded user + password.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --proxy1.0 <host[:port]>\n"
"              Use the specified HTTP 1.0 proxy. If  the  port  number  is  not\n"
"              specified, it is assumed at port 1080.\n"
"\n"
, stdout);
 fputs(
"              The  only  difference between this and the HTTP proxy option -x,\n"
"              --proxy, is that attempts to use CONNECT through the proxy  will\n"
"              specify an HTTP 1.0 protocol instead of the default HTTP 1.1.\n"
"\n"
"       -p, --proxytunnel\n"
"              When  an  HTTP  proxy is used -x, --proxy, this option will make\n"
"              curl tunnel through the proxy. The tunnel approach is made  with\n"
"              the  HTTP  proxy CONNECT request and requires that the proxy al-\n"
, stdout);
 fputs(
"              lows direct connect to the remote port number curl wants to tun-\n"
"              nel through to.\n"
"\n"
"              To  suppress  proxy CONNECT response headers when curl is set to\n"
"              output headers use --suppress-connect-headers.\n"
"\n"
"              See also -x, --proxy.\n"
"\n"
"       --pubkey <key>\n"
"              (SFTP SCP) Public key file name. Allows you to provide your pub-\n"
"              lic key in this separate file.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"              (As of 7.39.0, curl attempts to automatically extract the public\n"
"              key from the private key file, so passing this option is  gener-\n"
"              ally not required. Note that this public key extraction requires\n"
"              libcurl to be linked against a copy of libssh2 1.2.8  or  higher\n"
"              that is itself linked against OpenSSL.)\n"
"\n"
"       -Q, --quote\n"
, stdout);
 fputs(
"              (FTP  SFTP)  Send an arbitrary command to the remote FTP or SFTP\n"
"              server. Quote commands are sent BEFORE the transfer takes  place\n"
"              (just  after  the  initial PWD command in an FTP transfer, to be\n"
"              exact). To make commands take place after a successful transfer,\n"
"              prefix  them  with  a  dash '-'.  To make commands be sent after\n"
"              curl has changed the working directory, just before the transfer\n"
, stdout);
 fputs(
"              command(s),  prefix  the  command  with a '+' (this is only sup-\n"
"              ported for FTP). You may specify any number of commands.\n"
"\n"
"              If the server returns failure for one of the commands,  the  en-\n"
"              tire operation will be aborted. You must send syntactically cor-\n"
"              rect FTP commands as RFC 959 defines to FTP servers, or  one  of\n"
"              the commands listed below to SFTP servers.\n"
"\n"
, stdout);
 fputs(
"              Prefix  the  command  with an asterisk (*) to make curl continue\n"
"              even if the command fails as by default curl will stop at  first\n"
"              failure.\n"
"\n"
"              This option can be used multiple times.\n"
"\n"
"              SFTP  is a binary protocol. Unlike for FTP, curl interprets SFTP\n"
"              quote commands itself before sending them to the  server.   File\n"
"              names may be quoted shell-style to embed spaces or special char-\n"
, stdout);
 fputs(
"              acters.  Following is the list of all supported SFTP quote  com-\n"
"              mands:\n"
"\n"
"              chgrp group file\n"
"                     The  chgrp command sets the group ID of the file named by\n"
"                     the file operand to the group ID specified by  the  group\n"
"                     operand. The group operand is a decimal integer group ID.\n"
"\n"
"              chmod mode file\n"
"                     The  chmod  command  modifies  the  file mode bits of the\n"
, stdout);
 fputs(
"                     specified file. The mode operand is an octal integer mode\n"
"                     number.\n"
"\n"
"              chown user file\n"
"                     The chown command sets the owner of the file named by the\n"
"                     file operand to the user ID specified by the  user  oper-\n"
"                     and. The user operand is a decimal integer user ID.\n"
"\n"
"              ln source_file target_file\n"
"                     The ln and symlink commands create a symbolic link at the\n"
, stdout);
 fputs(
"                     target_file location pointing to  the  source_file  loca-\n"
"                     tion.\n"
"\n"
"              mkdir directory_name\n"
"                     The  mkdir command creates the directory named by the di-\n"
"                     rectory_name operand.\n"
"\n"
"              pwd    The pwd command returns the absolute pathname of the cur-\n"
"                     rent working directory.\n"
"\n"
"              rename source target\n"
, stdout);
 fputs(
"                     The rename command renames the file or directory named by\n"
"                     the source operand to the destination path named  by  the\n"
"                     target operand.\n"
"\n"
"              rm file\n"
"                     The rm command removes the file specified by the file op-\n"
"                     erand.\n"
"\n"
"              rmdir directory\n"
"                     The rmdir command removes the directory  entry  specified\n"
, stdout);
 fputs(
"                     by the directory operand, provided it is empty.\n"
"\n"
"              symlink source_file target_file\n"
"                     See ln.\n"
"\n"
"       --random-file <file>\n"
"              Specify the path name to file containing what will be considered\n"
"              as random data. The data may be used to seed the  random  engine\n"
"              for SSL connections.  See also the --egd-file option.\n"
"\n"
"       -r, --range <range>\n"
, stdout);
 fputs(
"              (HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial docu-\n"
"              ment) from an HTTP/1.1, FTP or SFTP  server  or  a  local  FILE.\n"
"              Ranges can be specified in a number of ways.\n"
"\n"
"              0-499     specifies the first 500 bytes\n"
"\n"
"              500-999   specifies the second 500 bytes\n"
"\n"
"              -500      specifies the last 500 bytes\n"
"\n"
"              9500-     specifies the bytes from offset 9500 and forward\n"
"\n"
, stdout);
 fputs(
"              0-0,-1    specifies the first and last byte only(*)(HTTP)\n"
"\n"
"              100-199,500-599\n"
"                        specifies two separate 100-byte ranges(*) (HTTP)\n"
"\n"
"              (*)  = NOTE that this will cause the server to reply with a mul-\n"
"              tipart response!\n"
"\n"
"              Only digit characters (0-9) are valid in the 'start' and  'stop'\n"
"              fields  of the 'start-stop' range syntax. If a non-digit charac-\n"
, stdout);
 fputs(
"              ter is given in the range, the server's response will be unspec-\n"
"              ified, depending on the server's configuration.\n"
"\n"
"              You  should also be aware that many HTTP/1.1 servers do not have\n"
"              this feature enabled, so that when you attempt to get  a  range,\n"
"              you'll instead get the whole document.\n"
"\n"
"              FTP  and  SFTP  range  downloads only support the simple 'start-\n"
, stdout);
 fputs(
"              stop' syntax (optionally with one of the numbers  omitted).  FTP\n"
"              use depends on the extended FTP command SIZE.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --raw  (HTTP) When used, it disables all internal HTTP decoding of con-\n"
"              tent or transfer encodings and instead makes them passed on  un-\n"
"              altered, raw.\n"
"\n"
"              Added in 7.16.2.\n"
"\n"
"       -e, --referer <URL>\n"
, stdout);
 fputs(
"              (HTTP) Sends the \"Referrer Page\" information to the HTTP server.\n"
"              This can also be set with the -H, --header flag of course.  When\n"
"              used  with  -L,  --location  you  can  append \";auto\" to the -e,\n"
"              --referer URL to make curl automatically set  the  previous  URL\n"
"              when  it  follows  a Location: header. The \";auto\" string can be\n"
"              used alone, even if you don't set an initial -e, --referer.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -A, --user-agent and -H, --header.\n"
"\n"
"       -J, --remote-header-name\n"
"              (HTTP) This option tells the -O, --remote-name option to use the\n"
"              server-specified  Content-Disposition  filename  instead  of ex-\n"
"              tracting a filename from the URL.\n"
"\n"
"              If the server specifies a file name and a file  with  that  name\n"
, stdout);
 fputs(
"              already  exists  in the current working directory it will not be\n"
"              overwritten and an error will occur. If the server doesn't spec-\n"
"              ify a file name then this option has no effect.\n"
"\n"
"              There's  no  attempt to decode %-sequences (yet) in the provided\n"
"              file name, so this option may provide you with rather unexpected\n"
"              file names.\n"
"\n"
"              WARNING:  Exercise  judicious  use of this option, especially on\n"
, stdout);
 fputs(
"              Windows. A rogue server could send you the  name  of  a  DLL  or\n"
"              other  file  that could possibly be loaded automatically by Win-\n"
"              dows or some third party software.\n"
"\n"
"       --remote-name-all\n"
"              This option changes the default action for all given URLs to  be\n"
"              dealt with as if -O, --remote-name were used for each one. So if\n"
"              you want to disable that for a specific URL after --remote-name-\n"
, stdout);
 fputs(
"              all has been used, you must use \"-o -\" or --no-remote-name.\n"
"\n"
"              Added in 7.19.0.\n"
"\n"
"       -O, --remote-name\n"
"              Write  output to a local file named like the remote file we get.\n"
"              (Only the file part of the remote file is used, the path is  cut\n"
"              off.)\n"
"\n"
"              The  file will be saved in the current working directory. If you\n"
"              want the file saved in a  different  directory,  make  sure  you\n"
, stdout);
 fputs(
"              change  the  current working directory before invoking curl with\n"
"              this option.\n"
"\n"
"              The remote file name to use for saving  is  extracted  from  the\n"
"              given  URL,  nothing  else,  and if it already exists it will be\n"
"              overwritten. If you want the server to be  able  to  choose  the\n"
"              file name refer to -J, --remote-header-name which can be used in\n"
, stdout);
 fputs(
"              addition to this option. If the server chooses a file  name  and\n"
"              that name already exists it will not be overwritten.\n"
"\n"
"              There is no URL decoding done on the file name. If it has %20 or\n"
"              other URL encoded parts of the name, they will end up  as-is  as\n"
"              file name.\n"
"\n"
"              You  may use this option as many times as the number of URLs you\n"
"              have.\n"
"\n"
"       -R, --remote-time\n"
, stdout);
 fputs(
"              When used, this will make curl attempt to figure out  the  time-\n"
"              stamp  of the remote file, and if that is available make the lo-\n"
"              cal file get that same timestamp.\n"
"\n"
"       --request-target\n"
"              (HTTP) Tells curl to use an alternative \"target\" (path)  instead\n"
"              of  using  the  path as provided in the URL. Particularly useful\n"
"              when wanting to issue HTTP requests  without  leading  slash  or\n"
, stdout);
 fputs(
"              other  data  that  doesn't  follow the regular URL pattern, like\n"
"              \"OPTIONS *\".\n"
"\n"
"              Added in 7.55.0.\n"
"\n"
"       -X, --request <command>\n"
"              (HTTP) Specifies a custom request method to use when communicat-\n"
"              ing  with the HTTP server.  The specified request method will be\n"
"              used instead of the method otherwise  used  (which  defaults  to\n"
"              GET).  Read  the HTTP 1.1 specification for details and explana-\n"
, stdout);
 fputs(
"              tions. Common additional HTTP requests include PUT  and  DELETE,\n"
"              but related technologies like WebDAV offers PROPFIND, COPY, MOVE\n"
"              and more.\n"
"\n"
"              Normally you don't need this option. All  sorts  of  GET,  HEAD,\n"
"              POST and PUT requests are rather invoked by using dedicated com-\n"
"              mand line options.\n"
"\n"
"              This option only changes the actual word used in  the  HTTP  re-\n"
, stdout);
 fputs(
"              quest, it does not alter the way curl behaves. So for example if\n"
"              you want to make a proper HEAD request, using -X HEAD  will  not\n"
"              suffice. You need to use the -I, --head option.\n"
"\n"
"              The  method  string  you set with -X, --request will be used for\n"
"              all requests, which if you for example use  -L,  --location  may\n"
"              cause  unintended  side-effects when curl doesn't change request\n"
, stdout);
 fputs(
"              method according to the HTTP 30x response codes - and similar.\n"
"\n"
"              (FTP) Specifies a custom FTP command to use instead of LIST when\n"
"              doing file lists with FTP.\n"
"\n"
"              (POP3) Specifies a custom POP3 command to use instead of LIST or\n"
"              RETR. (Added in 7.26.0)\n"
"\n"
"              (IMAP) Specifies a custom IMAP command to use instead  of  LIST.\n"
"              (Added in 7.30.0)\n"
"\n"
, stdout);
 fputs(
"              (SMTP) Specifies a custom SMTP command to use instead of HELP or\n"
"              VRFY. (Added in 7.34.0)\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --resolve <host:port:address[,address]...>\n"
"              Provide a custom address for a specific host and port pair.  Us-\n"
"              ing  this, you can make the curl requests(s) use a specified ad-\n"
"              dress and prevent the otherwise normally resolved address to  be\n"
, stdout);
 fputs(
"              used.  Consider  it a sort of /etc/hosts alternative provided on\n"
"              the command line. The port number should be the number used  for\n"
"              the  specific  protocol  the host will be used for. It means you\n"
"              need several entries if you want to provide address for the same\n"
"              host but different ports.\n"
"\n"
"              By  specifying '*' as host you can tell curl to resolve any host\n"
, stdout);
 fputs(
"              and specific port pair to the specified address. Wildcard is re-\n"
"              solved  last so any --resolve with a specific host and port will\n"
"              be used first.\n"
"\n"
"              The provided address set by this option will be used even if -4,\n"
"              --ipv4 or -6, --ipv6 is set to make curl use another IP version.\n"
"              Support for providing the IP address within [brackets] was added\n"
"              in 7.57.0.\n"
"\n"
, stdout);
 fputs(
"              Support for providing multiple IP addresses per entry was  added\n"
"              in 7.59.0.\n"
"\n"
"              Support for resolving with wildcard was added in 7.64.0.\n"
"\n"
"              This option can be used many times to add many host names to re-\n"
"              solve.\n"
"\n"
"              Added in 7.21.3.\n"
"\n"
"       --retry-connrefused\n"
"              In addition to the other conditions, consider ECONNREFUSED as  a\n"
"              transient  error  too  for --retry. This option is used together\n"
, stdout);
 fputs(
"              with --retry.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --retry-delay <seconds>\n"
"              Make curl sleep this amount of time before  each  retry  when  a\n"
"              transfer  has  failed with a transient error (it changes the de-\n"
"              fault backoff time algorithm between retries).  This  option  is\n"
"              only  interesting if --retry is also used. Setting this delay to\n"
"              zero will make curl use the default backoff time.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --retry-max-time <seconds>\n"
"              The retry timer is reset before the first transfer attempt.  Re-\n"
"              tries  will  be done as usual (see --retry) as long as the timer\n"
"              hasn't reached this given limit. Notice that if the timer hasn't\n"
"              reached  the  limit, the request will be made and while perform-\n"
, stdout);
 fputs(
"              ing, it may take longer than this given time period. To limit  a\n"
"              single request's maximum time, use -m, --max-time.  Set this op-\n"
"              tion to zero to not timeout retries.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --retry <num>\n"
"              If a transient error is returned when curl tries  to  perform  a\n"
, stdout);
 fputs(
"              transfer,  it  will retry this number of times before giving up.\n"
"              Setting the number to 0 makes curl do no retries (which  is  the\n"
"              default).  Transient  error  means either: a timeout, an FTP 4xx\n"
"              response code or an HTTP 408 or 5xx response code.\n"
"\n"
"              When curl is about to retry a transfer, it will first  wait  one\n"
"              second  and  then for all forthcoming retries it will double the\n"
, stdout);
 fputs(
"              waiting time until it reaches 10 minutes which then will be  the\n"
"              delay  between  the rest of the retries.  By using --retry-delay\n"
"              you  disable  this  exponential  backoff  algorithm.  See   also\n"
"              --retry-max-time to limit the total time allowed for retries.\n"
"\n"
"              Since  curl  7.66.0,  curl will comply with the Retry-After: re-\n"
"              sponse header if one was present to know when to issue the  next\n"
"              retry.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --sasl-authzid\n"
"              Use this authorisation identity (authzid), during SASL PLAIN au-\n"
"              thentication, in addition to the authentication identity  (auth-\n"
"              cid) as specified by -u, --user.\n"
"\n"
"              If  the  option  isn't specified, the server will derive the au-\n"
"              thzid from the authcid, but if specified, and depending  on  the\n"
, stdout);
 fputs(
"              server  implementation,  it may be used to access another user's\n"
"              inbox, that the user has been granted access  to,  or  a  shared\n"
"              mailbox for example.\n"
"\n"
"              Added in 7.66.0.\n"
"\n"
"       --sasl-ir\n"
"              Enable initial response in SASL authentication.\n"
"\n"
"              Added in 7.31.0.\n"
"\n"
"       --service-name <name>\n"
"              This option allows you to change the service name for SPNEGO.\n"
"\n"
, stdout);
 fputs(
"              Examples:    --negotiate    --service-name   sockd   would   use\n"
"              sockd/server-name.\n"
"\n"
"              Added in 7.43.0.\n"
"       -S, --show-error\n"
"              When used with -s, --silent, it makes curl show an error message\n"
"              if it fails.\n"
"       -s, --silent\n"
"              Silent  or  quiet  mode. Don't show progress meter or error mes-\n"
"              sages.  Makes Curl mute. It will still output the data  you  ask\n"
, stdout);
 fputs(
"              for, potentially even to the terminal/stdout unless you redirect\n"
"              it.\n"
"\n"
"              Use -S, --show-error in  addition  to  this  option  to  disable\n"
"              progress meter but still show error messages.\n"
"\n"
"              See also -v, --verbose and --stderr.\n"
"\n"
"       --socks4 <host[:port]>\n"
"              Use the specified SOCKS4 proxy. If the port number is not speci-\n"
"              fied, it is assumed at port 1080.\n"
"\n"
, stdout);
 fputs(
"              This option overrides any previous use of -x, --proxy,  as  they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks4 proxy with -x, --proxy using a socks4:// protocol prefix.\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
, stdout);
 fputs(
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.15.2.\n"
"\n"
"       --socks4a <host[:port]>\n"
"              Use the specified SOCKS4a proxy. If the port number is not spec-\n"
"              ified, it is assumed at port 1080.\n"
"\n"
"              This option overrides any previous use of -x, --proxy,  as  they\n"
, stdout);
 fputs(
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks4a proxy with -x, --proxy using a socks4a:// protocol  pre-\n"
"              fix.\n"
"\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
, stdout);
 fputs(
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       --socks5-basic\n"
"              Tells curl to use username/password authentication when connect-\n"
"              ing  to a SOCKS5 proxy.  The username/password authentication is\n"
"              enabled by default.  Use --socks5-gssapi to  force  GSS-API  au-\n"
"              thentication to SOCKS5 proxies.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.55.0.\n"
"\n"
"       --socks5-gssapi-nec\n"
"              As  part of the GSS-API negotiation a protection mode is negoti-\n"
"              ated. RFC 1961 says in section 4.3/4.4 it should  be  protected,\n"
"              but  the  NEC  reference  implementation  does  not.  The option\n"
"              --socks5-gssapi-nec allows the unprotected exchange of the  pro-\n"
"              tection mode negotiation.\n"
"\n"
"              Added in 7.19.4.\n"
"\n"
"       --socks5-gssapi-service <name>\n"
, stdout);
 fputs(
"              The default service name for a socks server is rcmd/server-fqdn.\n"
"              This option allows you to change it.\n"
"\n"
"              Examples:  --socks5  proxy-name  --socks5-gssapi-service   sockd\n"
"              would  use sockd/proxy-name --socks5 proxy-name --socks5-gssapi-\n"
"              service sockd/real-name  would  use  sockd/real-name  for  cases\n"
"              where the proxy-name does not match the principal name.\n"
"\n"
"              Added in 7.19.4.\n"
"\n"
"       --socks5-gssapi\n"
, stdout);
 fputs(
"              Tells  curl  to  use GSS-API authentication when connecting to a\n"
"              SOCKS5 proxy.  The GSS-API authentication is enabled by  default\n"
"              (if  curl is compiled with GSS-API support).  Use --socks5-basic\n"
"              to force username/password authentication to SOCKS5 proxies.\n"
"\n"
"              Added in 7.55.0.\n"
"\n"
"       --socks5-hostname <host[:port]>\n"
"              Use the specified SOCKS5 proxy (and let the  proxy  resolve  the\n"
, stdout);
 fputs(
"              host  name).  If the port number is not specified, it is assumed\n"
"              at port 1080.\n"
"\n"
"              This option overrides any previous use of -x, --proxy,  as  they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks5 hostname proxy with -x, --proxy using a socks5h:// proto-\n"
"              col prefix.\n"
"\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
, stdout);
 fputs(
"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       --socks5 <host[:port]>\n"
"              Use the specified SOCKS5 proxy - but resolve the host  name  lo-\n"
, stdout);
 fputs(
"              cally.  If  the  port  number is not specified, it is assumed at\n"
"              port 1080.\n"
"\n"
"              This option overrides any previous use of -x, --proxy,  as  they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks5 proxy with -x, --proxy using a socks5:// protocol prefix.\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
, stdout);
 fputs(
"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"              This  option (as well as --socks4) does not work with IPV6, FTPS\n"
"              or LDAP.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       -Y, --speed-limit <speed>\n"
, stdout);
 fputs(
"              If a download is slower than this given speed (in bytes per sec-\n"
"              ond)  for  speed-time seconds it gets aborted. speed-time is set\n"
"              with -y, --speed-time and is 30 if not set.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -y, --speed-time <seconds>\n"
"              If a download is slower than speed-limit bytes per second during\n"
"              a speed-time period, the download gets aborted. If speed-time is\n"
, stdout);
 fputs(
"              used, the default speed-limit will be  1  unless  set  with  -Y,\n"
"              --speed-limit.\n"
"\n"
"              This  option  controls  transfers  and thus will not affect slow\n"
"              connects etc. If this is a concern for you, try  the  --connect-\n"
"              timeout option.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --ssl-allow-beast\n"
"              This option tells curl to not work around a security flaw in the\n"
, stdout);
 fputs(
"              SSL3 and TLS1.0 protocols known as BEAST.  If this option  isn't\n"
"              used,  the SSL layer may use workarounds known to cause interop-\n"
"              erability problems with some older SSL implementations. WARNING:\n"
"              this option loosens the SSL security, and by using this flag you\n"
"              ask for exactly that.\n"
"\n"
"              Added in 7.25.0.\n"
"\n"
"       --ssl-no-revoke\n"







|


|
|






|
|
|









|







|


|
|




|


|
|





|





|




|
|





|




|
|



|
|
|





|












|

|





|
|
|

|



|


|

|




|
|




|
|



|



|
|



|







|






|



|









|







|









|






|

















|


|
|





|
|


|


|





|









|
|
|










|


|


|



|



|


|
|



|









|
|


|
|


|


|
|
|



|



|


|





|
|



|
|
|


|






|
|
|


|



|



|



|


|
|
|










|










|
|
|


|
|
|



|



|









|










|
|







|
|
|
|









|
|

|


|








|


|
|
|


|
|


|
|
|


|
|










|


|
|


|
|














|







|
|





|










|





|













|





|



|











|
|







|
|
|
|










|
|
|







|
|
|





|


|


|









|








|


|


|







|




|








|









|


|
|








|
|







2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
"\n"
"       --proxy-tlsv1\n"
"              Same as -1, --tlsv1 but used in HTTPS proxy context.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -U, --proxy-user <user:password>\n"
"              Specify the user name and password to use for proxy  authentica-\n"
"              tion.\n"
"\n"
"              If  you use a Windows SSPI-enabled curl binary and do either Ne-\n"
"              gotiate or NTLM authentication then you can tell curl to  select\n"
, stdout);
 fputs(
"              the user name and password from your environment by specifying a\n"
"              single colon with this option: \"-U :\".\n"
"\n"
"              On systems where it works, curl will hide the given option argu-\n"
"              ment  from  process listings. This is not enough to protect cre-\n"
"              dentials from possibly getting seen by other users on  the  same\n"
"              system  as  they will still be visible for a brief moment before\n"
, stdout);
 fputs(
"              cleared. Such sensitive data should be retrieved from a file in-\n"
"              stead or similar and never used in clear text in a command line.\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -x, --proxy [protocol://]host[:port]\n"
"              Use the specified proxy.\n"
"\n"
"              The  proxy string can be specified with a protocol:// prefix. No\n"
"              protocol specified or http:// will be treated as HTTP proxy. Use\n"
, stdout);
 fputs(
"              socks4://, socks4a://, socks5:// or socks5h:// to request a spe-\n"
"              cific SOCKS version to be used.  (The protocol support was added\n"
"              in curl 7.21.7)\n"
"\n"
"              HTTPS  proxy  support  via https:// protocol prefix was added in\n"
"              7.52.0 for OpenSSL, GnuTLS and NSS.\n"
"\n"
"              Unrecognized and unsupported  proxy  protocols  cause  an  error\n"
"              since  7.52.0.   Prior  versions may ignore the protocol and use\n"
, stdout);
 fputs(
"              http:// instead.\n"
"\n"
"              If the port number is not specified in the proxy string,  it  is\n"
"              assumed to be 1080.\n"
"\n"
"              This  option  overrides  existing environment variables that set\n"
"              the proxy to use. If there's an environment variable  setting  a\n"
"              proxy, you can set proxy to \"\" to override it.\n"
"\n"
"              All operations that are performed over an HTTP proxy will trans-\n"
, stdout);
 fputs(
"              parently be converted to HTTP. It means  that  certain  protocol\n"
"              specific operations might not be available. This is not the case\n"
"              if you can tunnel through the proxy, as one with the -p, --prox-\n"
"              ytunnel option.\n"
"\n"
"              User and password that might be provided in the proxy string are\n"
"              URL decoded by curl. This allows you to pass in special  charac-\n"
"              ters such as @ by using %40 or pass in a colon with %3a.\n"
"\n"
, stdout);
 fputs(
"              The  proxy host can be specified the exact same way as the proxy\n"
"              environment variables, including the protocol  prefix  (http://)\n"
"              and the embedded user + password.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --proxy1.0 <host[:port]>\n"
"              Use  the  specified  HTTP  1.0  proxy. If the port number is not\n"
"              specified, it is assumed at port 1080.\n"
"\n"
, stdout);
 fputs(
"              The only difference between this and the HTTP proxy  option  -x,\n"
"              --proxy,  is that attempts to use CONNECT through the proxy will\n"
"              specify an HTTP 1.0 protocol instead of the default HTTP 1.1.\n"
"\n"
"       -p, --proxytunnel\n"
"              When an HTTP proxy is used -x, --proxy, this  option  will  make\n"
"              curl  tunnel through the proxy. The tunnel approach is made with\n"
"              the HTTP proxy CONNECT request and requires that the  proxy  al-\n"
, stdout);
 fputs(
"              lows direct connect to the remote port number curl wants to tun-\n"
"              nel through to.\n"
"\n"
"              To suppress proxy CONNECT response headers when curl is  set  to\n"
"              output headers use --suppress-connect-headers.\n"
"\n"
"              See also -x, --proxy.\n"
"\n"
"       --pubkey <key>\n"
"              (SFTP SCP) Public key file name. Allows you to provide your pub-\n"
"              lic key in this separate file.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"              (As of 7.39.0, curl attempts to automatically extract the public\n"
"              key  from the private key file, so passing this option is gener-\n"
"              ally not required. Note that this public key extraction requires\n"
"              libcurl  to  be linked against a copy of libssh2 1.2.8 or higher\n"
"              that is itself linked against OpenSSL.)\n"
"\n"
"       -Q, --quote\n"
, stdout);
 fputs(
"              (FTP SFTP) Send an arbitrary command to the remote FTP  or  SFTP\n"
"              server.  Quote commands are sent BEFORE the transfer takes place\n"
"              (just after the initial PWD command in an FTP  transfer,  to  be\n"
"              exact). To make commands take place after a successful transfer,\n"
"              prefix them with a dash '-'.  To make  commands  be  sent  after\n"
"              curl has changed the working directory, just before the transfer\n"
, stdout);
 fputs(
"              command(s), prefix the command with a '+'  (this  is  only  sup-\n"
"              ported for FTP). You may specify any number of commands.\n"
"\n"
"              If  the  server returns failure for one of the commands, the en-\n"
"              tire operation will be aborted. You must send syntactically cor-\n"
"              rect  FTP  commands as RFC 959 defines to FTP servers, or one of\n"
"              the commands listed below to SFTP servers.\n"
"\n"
, stdout);
 fputs(
"              Prefix the command with an asterisk (*) to  make  curl  continue\n"
"              even  if the command fails as by default curl will stop at first\n"
"              failure.\n"
"\n"
"              This option can be used multiple times.\n"
"\n"
"              SFTP is a binary protocol. Unlike for FTP, curl interprets  SFTP\n"
"              quote  commands  itself before sending them to the server.  File\n"
"              names may be quoted shell-style to embed spaces or special char-\n"
, stdout);
 fputs(
"              acters.   Following is the list of all supported SFTP quote com-\n"
"              mands:\n"
"\n"
"              chgrp group file\n"
"                     The chgrp command sets the group ID of the file named  by\n"
"                     the  file  operand to the group ID specified by the group\n"
"                     operand. The group operand is a decimal integer group ID.\n"
"\n"
"              chmod mode file\n"
"                     The chmod command modifies the  file  mode  bits  of  the\n"
, stdout);
 fputs(
"                     specified file. The mode operand is an octal integer mode\n"
"                     number.\n"
"\n"
"              chown user file\n"
"                     The chown command sets the owner of the file named by the\n"
"                     file  operand  to the user ID specified by the user oper-\n"
"                     and. The user operand is a decimal integer user ID.\n"
"\n"
"              ln source_file target_file\n"
"                     The ln and symlink commands create a symbolic link at the\n"
, stdout);
 fputs(
"                     target_file  location  pointing  to the source_file loca-\n"
"                     tion.\n"
"\n"
"              mkdir directory_name\n"
"                     The mkdir command creates the directory named by the  di-\n"
"                     rectory_name operand.\n"
"\n"
"              pwd    The pwd command returns the absolute pathname of the cur-\n"
"                     rent working directory.\n"
"\n"
"              rename source target\n"
, stdout);
 fputs(
"                     The rename command renames the file or directory named by\n"
"                     the  source  operand to the destination path named by the\n"
"                     target operand.\n"
"\n"
"              rm file\n"
"                     The rm command removes the file specified by the file op-\n"
"                     erand.\n"
"\n"
"              rmdir directory\n"
"                     The  rmdir  command removes the directory entry specified\n"
, stdout);
 fputs(
"                     by the directory operand, provided it is empty.\n"
"\n"
"              symlink source_file target_file\n"
"                     See ln.\n"
"\n"
"       --random-file <file>\n"
"              Specify the path name to file containing what will be considered\n"
"              as  random  data. The data may be used to seed the random engine\n"
"              for SSL connections.  See also the --egd-file option.\n"
"\n"
"       -r, --range <range>\n"
, stdout);
 fputs(
"              (HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial docu-\n"
"              ment)  from  an  HTTP/1.1,  FTP  or SFTP server or a local FILE.\n"
"              Ranges can be specified in a number of ways.\n"
"\n"
"              0-499     specifies the first 500 bytes\n"
"\n"
"              500-999   specifies the second 500 bytes\n"
"\n"
"              -500      specifies the last 500 bytes\n"
"\n"
"              9500-     specifies the bytes from offset 9500 and forward\n"
"\n"
, stdout);
 fputs(
"              0-0,-1    specifies the first and last byte only(*)(HTTP)\n"
"\n"
"              100-199,500-599\n"
"                        specifies two separate 100-byte ranges(*) (HTTP)\n"
"\n"
"              (*) = NOTE that this will cause the server to reply with a  mul-\n"
"              tipart response!\n"
"\n"
"              Only  digit characters (0-9) are valid in the 'start' and 'stop'\n"
"              fields of the 'start-stop' range syntax. If a non-digit  charac-\n"
, stdout);
 fputs(
"              ter is given in the range, the server's response will be unspec-\n"
"              ified, depending on the server's configuration.\n"
"\n"
"              You should also be aware that many HTTP/1.1 servers do not  have\n"
"              this  feature  enabled, so that when you attempt to get a range,\n"
"              you'll instead get the whole document.\n"
"\n"
"              FTP and SFTP range downloads only  support  the  simple  'start-\n"
, stdout);
 fputs(
"              stop'  syntax  (optionally with one of the numbers omitted). FTP\n"
"              use depends on the extended FTP command SIZE.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --raw  (HTTP) When used, it disables all internal HTTP decoding of con-\n"
"              tent  or transfer encodings and instead makes them passed on un-\n"
"              altered, raw.\n"
"\n"
"              Added in 7.16.2.\n"
"\n"
"       -e, --referer <URL>\n"
, stdout);
 fputs(
"              (HTTP) Sends the \"Referrer Page\" information to the HTTP server.\n"
"              This can also be set with the -H, --header flag of course.  When\n"
"              used with -L, --location you  can  append  \";auto\"  to  the  -e,\n"
"              --referer  URL  to  make curl automatically set the previous URL\n"
"              when it follows a Location: header. The \";auto\"  string  can  be\n"
"              used alone, even if you don't set an initial -e, --referer.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -A, --user-agent and -H, --header.\n"
"\n"
"       -J, --remote-header-name\n"
"              (HTTP) This option tells the -O, --remote-name option to use the\n"
"              server-specified Content-Disposition  filename  instead  of  ex-\n"
"              tracting a filename from the URL.\n"
"\n"
"              If  the  server  specifies a file name and a file with that name\n"
, stdout);
 fputs(
"              already exists in the current working directory it will  not  be\n"
"              overwritten and an error will occur. If the server doesn't spec-\n"
"              ify a file name then this option has no effect.\n"
"\n"
"              There's no attempt to decode %-sequences (yet) in  the  provided\n"
"              file name, so this option may provide you with rather unexpected\n"
"              file names.\n"
"\n"
"              WARNING: Exercise judicious use of this  option,  especially  on\n"
, stdout);
 fputs(
"              Windows.  A  rogue  server  could  send you the name of a DLL or\n"
"              other file that could possibly be loaded automatically  by  Win-\n"
"              dows or some third party software.\n"
"\n"
"       --remote-name-all\n"
"              This  option changes the default action for all given URLs to be\n"
"              dealt with as if -O, --remote-name were used for each one. So if\n"
"              you want to disable that for a specific URL after --remote-name-\n"
, stdout);
 fputs(
"              all has been used, you must use \"-o -\" or --no-remote-name.\n"
"\n"
"              Added in 7.19.0.\n"
"\n"
"       -O, --remote-name\n"
"              Write output to a local file named like the remote file we  get.\n"
"              (Only  the file part of the remote file is used, the path is cut\n"
"              off.)\n"
"\n"
"              The file will be saved in the current working directory. If  you\n"
"              want  the  file  saved  in  a different directory, make sure you\n"
, stdout);
 fputs(
"              change the current working directory before invoking  curl  with\n"
"              this option.\n"
"\n"
"              The  remote  file  name  to use for saving is extracted from the\n"
"              given URL, nothing else, and if it already  exists  it  will  be\n"
"              overwritten.  If  you  want  the server to be able to choose the\n"
"              file name refer to -J, --remote-header-name which can be used in\n"
, stdout);
 fputs(
"              addition  to  this option. If the server chooses a file name and\n"
"              that name already exists it will not be overwritten.\n"
"\n"
"              There is no URL decoding done on the file name. If it has %20 or\n"
"              other  URL  encoded parts of the name, they will end up as-is as\n"
"              file name.\n"
"\n"
"              You may use this option as many times as the number of URLs  you\n"
"              have.\n"
"\n"
"       -R, --remote-time\n"
, stdout);
 fputs(
"              When  used,  this will make curl attempt to figure out the time-\n"
"              stamp of the remote file, and if that is available make the  lo-\n"
"              cal file get that same timestamp.\n"
"\n"
"       --request-target\n"
"              (HTTP)  Tells curl to use an alternative \"target\" (path) instead\n"
"              of using the path as provided in the  URL.  Particularly  useful\n"
"              when  wanting  to  issue  HTTP requests without leading slash or\n"
, stdout);
 fputs(
"              other data that doesn't follow the  regular  URL  pattern,  like\n"
"              \"OPTIONS *\".\n"
"\n"
"              Added in 7.55.0.\n"
"\n"
"       -X, --request <command>\n"
"              (HTTP) Specifies a custom request method to use when communicat-\n"
"              ing with the HTTP server.  The specified request method will  be\n"
"              used  instead  of  the  method otherwise used (which defaults to\n"
"              GET). Read the HTTP 1.1 specification for details  and  explana-\n"
, stdout);
 fputs(
"              tions.  Common  additional HTTP requests include PUT and DELETE,\n"
"              but related technologies like WebDAV offers PROPFIND, COPY, MOVE\n"
"              and more.\n"
"\n"
"              Normally  you  don't  need  this option. All sorts of GET, HEAD,\n"
"              POST and PUT requests are rather invoked by using dedicated com-\n"
"              mand line options.\n"
"\n"
"              This  option  only  changes the actual word used in the HTTP re-\n"
, stdout);
 fputs(
"              quest, it does not alter the way curl behaves. So for example if\n"
"              you  want  to make a proper HEAD request, using -X HEAD will not\n"
"              suffice. You need to use the -I, --head option.\n"
"\n"
"              The method string you set with -X, --request will  be  used  for\n"
"              all  requests,  which  if you for example use -L, --location may\n"
"              cause unintended side-effects when curl doesn't  change  request\n"
, stdout);
 fputs(
"              method according to the HTTP 30x response codes - and similar.\n"
"\n"
"              (FTP) Specifies a custom FTP command to use instead of LIST when\n"
"              doing file lists with FTP.\n"
"\n"
"              (POP3) Specifies a custom POP3 command to use instead of LIST or\n"
"              RETR. (Added in 7.26.0)\n"
"\n"
"              (IMAP)  Specifies  a custom IMAP command to use instead of LIST.\n"
"              (Added in 7.30.0)\n"
"\n"
, stdout);
 fputs(
"              (SMTP) Specifies a custom SMTP command to use instead of HELP or\n"
"              VRFY. (Added in 7.34.0)\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --resolve <host:port:address[,address]...>\n"
"              Provide  a custom address for a specific host and port pair. Us-\n"
"              ing this, you can make the curl requests(s) use a specified  ad-\n"
"              dress  and prevent the otherwise normally resolved address to be\n"
, stdout);
 fputs(
"              used. Consider it a sort of /etc/hosts alternative  provided  on\n"
"              the  command line. The port number should be the number used for\n"
"              the specific protocol the host will be used for.  It  means  you\n"
"              need several entries if you want to provide address for the same\n"
"              host but different ports.\n"
"\n"
"              By specifying '*' as host you can tell curl to resolve any  host\n"
, stdout);
 fputs(
"              and specific port pair to the specified address. Wildcard is re-\n"
"              solved last so any --resolve with a specific host and port  will\n"
"              be used first.\n"
"\n"
"              The provided address set by this option will be used even if -4,\n"
"              --ipv4 or -6, --ipv6 is set to make curl use another IP version.\n"
"              Support for providing the IP address within [brackets] was added\n"
"              in 7.57.0.\n"
"\n"
, stdout);
 fputs(
"              Support  for providing multiple IP addresses per entry was added\n"
"              in 7.59.0.\n"
"\n"
"              Support for resolving with wildcard was added in 7.64.0.\n"
"\n"
"              This option can be used many times to add many host names to re-\n"
"              solve.\n"
"\n"
"              Added in 7.21.3.\n"
"\n"
"       --retry-connrefused\n"
"              In  addition to the other conditions, consider ECONNREFUSED as a\n"
"              transient error too for --retry. This option  is  used  together\n"
, stdout);
 fputs(
"              with --retry.\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       --retry-delay <seconds>\n"
"              Make  curl  sleep  this  amount of time before each retry when a\n"
"              transfer has failed with a transient error (it changes  the  de-\n"
"              fault  backoff  time  algorithm between retries). This option is\n"
"              only interesting if --retry is also used. Setting this delay  to\n"
"              zero will make curl use the default backoff time.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --retry-max-time <seconds>\n"
"              The  retry timer is reset before the first transfer attempt. Re-\n"
"              tries will be done as usual (see --retry) as long as  the  timer\n"
"              hasn't reached this given limit. Notice that if the timer hasn't\n"
"              reached the limit, the request will be made and  while  perform-\n"
, stdout);
 fputs(
"              ing,  it may take longer than this given time period. To limit a\n"
"              single request's maximum time, use -m, --max-time.  Set this op-\n"
"              tion to zero to not timeout retries.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --retry <num>\n"
"              If  a  transient  error is returned when curl tries to perform a\n"
, stdout);
 fputs(
"              transfer, it will retry this number of times before  giving  up.\n"
"              Setting  the  number to 0 makes curl do no retries (which is the\n"
"              default). Transient error means either: a timeout,  an  FTP  4xx\n"
"              response code or an HTTP 408 or 5xx response code.\n"
"\n"
"              When  curl  is about to retry a transfer, it will first wait one\n"
"              second and then for all forthcoming retries it will  double  the\n"
, stdout);
 fputs(
"              waiting  time until it reaches 10 minutes which then will be the\n"
"              delay between the rest of the retries.  By  using  --retry-delay\n"
"              you   disable  this  exponential  backoff  algorithm.  See  also\n"
"              --retry-max-time to limit the total time allowed for retries.\n"
"\n"
"              Since curl 7.66.0, curl will comply with  the  Retry-After:  re-\n"
"              sponse  header if one was present to know when to issue the next\n"
"              retry.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.12.3.\n"
"\n"
"       --sasl-authzid\n"
"              Use this authorisation identity (authzid), during SASL PLAIN au-\n"
"              thentication,  in addition to the authentication identity (auth-\n"
"              cid) as specified by -u, --user.\n"
"\n"
"              If the option isn't specified, the server will  derive  the  au-\n"
"              thzid  from  the authcid, but if specified, and depending on the\n"
, stdout);
 fputs(
"              server implementation, it may be used to access  another  user's\n"
"              inbox,  that  the  user  has been granted access to, or a shared\n"
"              mailbox for example.\n"
"\n"
"              Added in 7.66.0.\n"
"\n"
"       --sasl-ir\n"
"              Enable initial response in SASL authentication.\n"
"\n"
"              Added in 7.31.0.\n"
"\n"
"       --service-name <name>\n"
"              This option allows you to change the service name for SPNEGO.\n"
"\n"
, stdout);
 fputs(
"              Examples:   --negotiate   --service-name   sockd    would    use\n"
"              sockd/server-name.\n"
"\n"
"              Added in 7.43.0.\n"
"       -S, --show-error\n"
"              When used with -s, --silent, it makes curl show an error message\n"
"              if it fails.\n"
"       -s, --silent\n"
"              Silent or quiet mode. Don't show progress meter  or  error  mes-\n"
"              sages.   Makes  Curl mute. It will still output the data you ask\n"
, stdout);
 fputs(
"              for, potentially even to the terminal/stdout unless you redirect\n"
"              it.\n"
"\n"
"              Use  -S,  --show-error  in  addition  to  this option to disable\n"
"              progress meter but still show error messages.\n"
"\n"
"              See also -v, --verbose and --stderr.\n"
"\n"
"       --socks4 <host[:port]>\n"
"              Use the specified SOCKS4 proxy. If the port number is not speci-\n"
"              fied, it is assumed at port 1080.\n"
"\n"
, stdout);
 fputs(
"              This  option  overrides any previous use of -x, --proxy, as they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks4 proxy with -x, --proxy using a socks4:// protocol prefix.\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
, stdout);
 fputs(
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.15.2.\n"
"\n"
"       --socks4a <host[:port]>\n"
"              Use the specified SOCKS4a proxy. If the port number is not spec-\n"
"              ified, it is assumed at port 1080.\n"
"\n"
"              This  option  overrides any previous use of -x, --proxy, as they\n"
, stdout);
 fputs(
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks4a  proxy with -x, --proxy using a socks4a:// protocol pre-\n"
"              fix.\n"
"\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
, stdout);
 fputs(
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       --socks5-basic\n"
"              Tells curl to use username/password authentication when connect-\n"
"              ing to a SOCKS5 proxy.  The username/password authentication  is\n"
"              enabled  by  default.   Use --socks5-gssapi to force GSS-API au-\n"
"              thentication to SOCKS5 proxies.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.55.0.\n"
"\n"
"       --socks5-gssapi-nec\n"
"              As part of the GSS-API negotiation a protection mode is  negoti-\n"
"              ated.  RFC  1961 says in section 4.3/4.4 it should be protected,\n"
"              but the NEC  reference  implementation  does  not.   The  option\n"
"              --socks5-gssapi-nec  allows the unprotected exchange of the pro-\n"
"              tection mode negotiation.\n"
"\n"
"              Added in 7.19.4.\n"
"\n"
"       --socks5-gssapi-service <name>\n"
, stdout);
 fputs(
"              The default service name for a socks server is rcmd/server-fqdn.\n"
"              This option allows you to change it.\n"
"\n"
"              Examples:   --socks5  proxy-name  --socks5-gssapi-service  sockd\n"
"              would use sockd/proxy-name --socks5 proxy-name  --socks5-gssapi-\n"
"              service  sockd/real-name  would  use  sockd/real-name  for cases\n"
"              where the proxy-name does not match the principal name.\n"
"\n"
"              Added in 7.19.4.\n"
"\n"
"       --socks5-gssapi\n"
, stdout);
 fputs(
"              Tells curl to use GSS-API authentication when  connecting  to  a\n"
"              SOCKS5  proxy.  The GSS-API authentication is enabled by default\n"
"              (if curl is compiled with GSS-API support).  Use  --socks5-basic\n"
"              to force username/password authentication to SOCKS5 proxies.\n"
"\n"
"              Added in 7.55.0.\n"
"\n"
"       --socks5-hostname <host[:port]>\n"
"              Use  the  specified  SOCKS5 proxy (and let the proxy resolve the\n"
, stdout);
 fputs(
"              host name). If the port number is not specified, it  is  assumed\n"
"              at port 1080.\n"
"\n"
"              This  option  overrides any previous use of -x, --proxy, as they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks5 hostname proxy with -x, --proxy using a socks5h:// proto-\n"
"              col prefix.\n"
"\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
, stdout);
 fputs(
"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       --socks5 <host[:port]>\n"
"              Use  the  specified SOCKS5 proxy - but resolve the host name lo-\n"
, stdout);
 fputs(
"              cally. If the port number is not specified,  it  is  assumed  at\n"
"              port 1080.\n"
"\n"
"              This  option  overrides any previous use of -x, --proxy, as they\n"
"              are mutually exclusive.\n"
"\n"
"              Since 7.21.7, this option is superfluous since you can specify a\n"
"              socks5 proxy with -x, --proxy using a socks5:// protocol prefix.\n"
"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
, stdout);
 fputs(
"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
"              such a case curl first connects to the SOCKS proxy and then con-\n"
"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"              This option (as well as --socks4) does not work with IPV6,  FTPS\n"
"              or LDAP.\n"
"\n"
"              Added in 7.18.0.\n"
"\n"
"       -Y, --speed-limit <speed>\n"
, stdout);
 fputs(
"              If a download is slower than this given speed (in bytes per sec-\n"
"              ond) for speed-time seconds it gets aborted. speed-time  is  set\n"
"              with -y, --speed-time and is 30 if not set.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -y, --speed-time <seconds>\n"
"              If a download is slower than speed-limit bytes per second during\n"
"              a speed-time period, the download gets aborted. If speed-time is\n"
, stdout);
 fputs(
"              used,  the  default  speed-limit  will  be 1 unless set with -Y,\n"
"              --speed-limit.\n"
"\n"
"              This option controls transfers and thus  will  not  affect  slow\n"
"              connects  etc.  If this is a concern for you, try the --connect-\n"
"              timeout option.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --ssl-allow-beast\n"
"              This option tells curl to not work around a security flaw in the\n"
, stdout);
 fputs(
"              SSL3  and TLS1.0 protocols known as BEAST.  If this option isn't\n"
"              used, the SSL layer may use workarounds known to cause  interop-\n"
"              erability problems with some older SSL implementations. WARNING:\n"
"              this option loosens the SSL security, and by using this flag you\n"
"              ask for exactly that.\n"
"\n"
"              Added in 7.25.0.\n"
"\n"
"       --ssl-no-revoke\n"
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
"              This option was formerly known as --ftp-ssl-reqd.\n"
"\n"
"              Added in 7.20.0.\n"
"\n"
, stdout);
 fputs(
"       --ssl  (FTP IMAP POP3 SMTP) Try to use SSL/TLS for the connection.  Re-\n"
"              verts to a non-secure connection if the server  doesn't  support\n"
"              SSL/TLS.   See also --ftp-ssl-control and --ssl-reqd for differ-\n"
"              ent levels of encryption required.\n"
"\n"
"              This option was formerly known as --ftp-ssl (Added  in  7.11.0).\n"
"              That  option name can still be used but will be removed in a fu-\n"
"              ture version.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.20.0.\n"
"\n"
"       -2, --sslv2\n"
"              (SSL) Forces curl to use SSL version 2 when negotiating  with  a\n"
"              remote  SSL  server.  Sometimes curl is built without SSLv2 sup-\n"
"              port. SSLv2 is widely considered insecure (see RFC 6176).\n"
"\n"
"              See also --http1.1 and --http2. -2, --sslv2  requires  that  the\n"
"              underlying  libcurl  was built to support TLS. This option over-\n"
, stdout);
 fputs(
"              rides -3, --sslv3 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
"\n"
"       -3, --sslv3\n"
"              (SSL) Forces curl to use SSL version 3 when negotiating  with  a\n"
"              remote  SSL  server.  Sometimes curl is built without SSLv3 sup-\n"
"              port. SSLv3 is widely considered insecure (see RFC 7568).\n"
"\n"
"              See also --http1.1 and --http2. -3, --sslv3  requires  that  the\n"
"              underlying  libcurl  was built to support TLS. This option over-\n"
, stdout);
 fputs(
"              rides -2, --sslv2 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
"\n"
"       --stderr\n"
"              Redirect all writes to stderr to the specified file instead.  If\n"
"              the file name is a plain '-', it is instead written to stdout.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -v, --verbose and -s, --silent.\n"
"\n"
"       --styled-output\n"
"              Enables  the automatic use of bold font styles when writing HTTP\n"
, stdout);
 fputs(
"              headers to the terminal. Use --no-styled-output to  switch  them\n"
"              off.\n"
"\n"
"              Added in 7.61.0.\n"
"\n"
"       --suppress-connect-headers\n"
"              When  -p,  --proxytunnel  is  used and a CONNECT request is made\n"
"              don't output proxy CONNECT  response  headers.  This  option  is\n"
"              meant  to  be used with -D, --dump-header or -i, --include which\n"
"              are used to show protocol headers in the output. It has  no  ef-\n"
, stdout);
 fputs(
"              fect  on  debug options such as -v, --verbose or --trace, or any\n"
"              statistics.\n"
"\n"
"              See also -D, --dump-header and -i, --include and -p, --proxytun-\n"
"              nel.\n"
"\n"
"       --tcp-fastopen\n"
"              Enable use of TCP Fast Open (RFC7413).\n"
"\n"
"              Added in 7.49.0.\n"
"\n"
"       --tcp-nodelay\n"
"              Turn  on the TCP_NODELAY option. See the curl_easy_setopt(3) man\n"
"              page for details about this option.\n"
"\n"
, stdout);
 fputs(
"              Since 7.50.2, curl sets this option by default and you  need  to\n"
"              explicitly switch it off if you don't want it on.\n"
"\n"
"              Added in 7.11.2.\n"
"\n"
"       -t, --telnet-option <opt=val>\n"
"              Pass options to the telnet protocol. Supported options are:\n"
"\n"







|
|


|
|







|
|


|
|





|
|


|
|





|







|


|





|
|
|
|


|











|




|







3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
"              This option was formerly known as --ftp-ssl-reqd.\n"
"\n"
"              Added in 7.20.0.\n"
"\n"
, stdout);
 fputs(
"       --ssl  (FTP IMAP POP3 SMTP) Try to use SSL/TLS for the connection.  Re-\n"
"              verts  to  a non-secure connection if the server doesn't support\n"
"              SSL/TLS.  See also --ftp-ssl-control and --ssl-reqd for  differ-\n"
"              ent levels of encryption required.\n"
"\n"
"              This  option  was formerly known as --ftp-ssl (Added in 7.11.0).\n"
"              That option name can still be used but will be removed in a  fu-\n"
"              ture version.\n"
"\n"
, stdout);
 fputs(
"              Added in 7.20.0.\n"
"\n"
"       -2, --sslv2\n"
"              (SSL)  Forces  curl to use SSL version 2 when negotiating with a\n"
"              remote SSL server. Sometimes curl is built  without  SSLv2  sup-\n"
"              port. SSLv2 is widely considered insecure (see RFC 6176).\n"
"\n"
"              See  also  --http1.1  and --http2. -2, --sslv2 requires that the\n"
"              underlying libcurl was built to support TLS. This  option  over-\n"
, stdout);
 fputs(
"              rides -3, --sslv3 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
"\n"
"       -3, --sslv3\n"
"              (SSL)  Forces  curl to use SSL version 3 when negotiating with a\n"
"              remote SSL server. Sometimes curl is built  without  SSLv3  sup-\n"
"              port. SSLv3 is widely considered insecure (see RFC 7568).\n"
"\n"
"              See  also  --http1.1  and --http2. -3, --sslv3 requires that the\n"
"              underlying libcurl was built to support TLS. This  option  over-\n"
, stdout);
 fputs(
"              rides -2, --sslv2 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
"\n"
"       --stderr\n"
"              Redirect  all writes to stderr to the specified file instead. If\n"
"              the file name is a plain '-', it is instead written to stdout.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              See also -v, --verbose and -s, --silent.\n"
"\n"
"       --styled-output\n"
"              Enables the automatic use of bold font styles when writing  HTTP\n"
, stdout);
 fputs(
"              headers  to  the terminal. Use --no-styled-output to switch them\n"
"              off.\n"
"\n"
"              Added in 7.61.0.\n"
"\n"
"       --suppress-connect-headers\n"
"              When -p, --proxytunnel is used and a  CONNECT  request  is  made\n"
"              don't  output  proxy  CONNECT  response  headers. This option is\n"
"              meant to be used with -D, --dump-header or -i,  --include  which\n"
"              are  used  to show protocol headers in the output. It has no ef-\n"
, stdout);
 fputs(
"              fect on debug options such as -v, --verbose or --trace,  or  any\n"
"              statistics.\n"
"\n"
"              See also -D, --dump-header and -i, --include and -p, --proxytun-\n"
"              nel.\n"
"\n"
"       --tcp-fastopen\n"
"              Enable use of TCP Fast Open (RFC7413).\n"
"\n"
"              Added in 7.49.0.\n"
"\n"
"       --tcp-nodelay\n"
"              Turn on the TCP_NODELAY option. See the curl_easy_setopt(3)  man\n"
"              page for details about this option.\n"
"\n"
, stdout);
 fputs(
"              Since  7.50.2,  curl sets this option by default and you need to\n"
"              explicitly switch it off if you don't want it on.\n"
"\n"
"              Added in 7.11.2.\n"
"\n"
"       -t, --telnet-option <opt=val>\n"
"              Pass options to the telnet protocol. Supported options are:\n"
"\n"
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
"              Added in 7.20.0.\n"
"\n"
"       --tftp-no-options\n"
"              (TFTP) Tells curl not to send TFTP options requests.\n"
"\n"
, stdout);
 fputs(
"              This  option  improves  interop with some legacy servers that do\n"
"              not acknowledge or properly implement TFTP  options.  When  this\n"
"              option is used --tftp-blksize is ignored.\n"
"\n"
"              Added in 7.48.0.\n"
"\n"
"       -z, --time-cond <time>\n"
"              (HTTP  FTP) Request a file that has been modified later than the\n"
"              given time and date, or one that has been modified  before  that\n"
, stdout);
 fputs(
"              time.  The <date expression> can be all sorts of date strings or\n"
"              if it doesn't match any internal ones, it is taken as a filename\n"
"              and  tries  to get the modification date (mtime) from <file> in-\n"
"              stead. See the curl_getdate(3) man pages for date expression de-\n"
"              tails.\n"
"\n"
"              Start the date expression with a dash (-) to make it request for\n"
"              a document that is older than the given date/time, default is  a\n"
, stdout);
 fputs(
"              document that is newer than the specified date/time.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --tls-max <VERSION>\n"
"              (SSL) VERSION defines maximum supported TLS version. The minimum\n"
"              acceptable version  is  set  by  tlsv1.0,  tlsv1.1,  tlsv1.2  or\n"
"              tlsv1.3.\n"
"\n"
"              default\n"
"                     Use up to recommended TLS version.\n"
"\n"
"              1.0    Use up to TLSv1.0.\n"
, stdout);
 fputs(
"              1.1    Use up to TLSv1.1.\n"
"              1.2    Use up to TLSv1.2.\n"
"              1.3    Use up to TLSv1.3.\n"
"\n"
"       See also --tlsv1.0 and --tlsv1.1 and --tlsv1.2 and --tlsv1.3. --tls-max\n"
"       requires that the underlying libcurl was built to support TLS. Added in\n"
"       7.54.0.\n"
"\n"
"       --tls13-ciphers <list of TLS 1.3 ciphersuites>\n"
"              (TLS)  Specifies which cipher suites to use in the connection if\n"
, stdout);
 fputs(
"              it negotiates TLS 1.3. The list of ciphers suites  must  specify\n"
"              valid  ciphers.  Read up on TLS 1.3 cipher suite details on this\n"
"              URL:\n"
"\n"
"               https://curl.haxx.se/docs/ssl-ciphers.html\n"
"\n"
"              This option is currently used only when curl  is  built  to  use\n"
"              OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
"              you can try setting TLS 1.3 cipher suites by using the --ciphers\n"
"              option.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --tlsauthtype <type>\n"
"              Set  TLS  authentication type. Currently, the only supported op-\n"
"              tion  is  \"SRP\",  for  TLS-SRP  (RFC  5054).  If  --tlsuser  and\n"
"              --tlspassword  are specified but --tlsauthtype is not, then this\n"
"              option defaults to \"SRP\".  This option works only if the  under-\n"
, stdout);
 fputs(
"              lying  libcurl  is  built  with  TLS-SRP support, which requires\n"
"              OpenSSL or GnuTLS with TLS-SRP support.\n"
"\n"
"              Added in 7.21.4.\n"
"\n"
"       --tlspassword\n"
"              Set password for use with the TLS authentication  method  speci-\n"
"              fied with --tlsauthtype. Requires that --tlsuser also be set.\n"
"\n"
"              Added in 7.21.4.\n"
"       --tlsuser <name>\n"
"              Set  username  for use with the TLS authentication method speci-\n"
, stdout);
 fputs(
"              fied with --tlsauthtype. Requires  that  --tlspassword  also  is\n"
"              set.\n"
"\n"
"              Added in 7.21.4.\n"
"\n"
"       --tlsv1.0\n"
"              (TLS)  Forces curl to use TLS version 1.0 or later when connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              In old versions of curl this  option  was  documented  to  allow\n"
"              _only_  TLS  1.0, but behavior was inconsistent depending on the\n"
, stdout);
 fputs(
"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.1\n"
"              (TLS)  Forces curl to use TLS version 1.1 or later when connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              In old versions of curl this  option  was  documented  to  allow\n"
"              _only_  TLS  1.1, but behavior was inconsistent depending on the\n"
, stdout);
 fputs(
"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.2\n"
"              (TLS)  Forces curl to use TLS version 1.2 or later when connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              In old versions of curl this  option  was  documented  to  allow\n"
"              _only_  TLS  1.2, but behavior was inconsistent depending on the\n"
, stdout);
 fputs(
"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.3\n"
"              (TLS)  Forces curl to use TLS version 1.3 or later when connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              Note that TLS 1.3 is only supported by a subset of TLS backends.\n"
"              At the time of this writing, they are BoringSSL, NSS, and Secure\n"
, stdout);
 fputs(
"              Transport (on iOS 11 or later, and macOS 10.13 or later).\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -1, --tlsv1\n"
"              (SSL) Tells curl to use at least TLS version 1.x when  negotiat-\n"
"              ing  with  a  remote  TLS  server. That means TLS version 1.0 or\n"
"              higher\n"
"\n"
"              See also --http1.1 and --http2. -1, --tlsv1  requires  that  the\n"
"              underlying  libcurl  was built to support TLS. This option over-\n"
, stdout);
 fputs(
"              rides --tlsv1.1 and --tlsv1.2 and --tlsv1.3.\n"
"\n"
"       --tr-encoding\n"
"              (HTTP) Request a compressed Transfer-Encoding response using one\n"
"              of  the  algorithms curl supports, and uncompress the data while\n"
"              receiving it.\n"
"\n"
"              Added in 7.21.6.\n"
"\n"
"       --trace-ascii <file>\n"
"              Enables a full trace dump of all incoming and outgoing data, in-\n"
"              cluding  descriptive  information, to the given output file. Use\n"
, stdout);
 fputs(
"              \"-\" as filename to have the output sent to stdout.\n"
"\n"
"              This is very similar to --trace, but leaves out the hex part and\n"
"              only  shows  the ASCII part of the dump. It makes smaller output\n"
"              that might be easier to read for untrained humans.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              This option overrides --trace and -v, --verbose.\n"
"\n"
"       --trace-time\n"
, stdout);
 fputs(
"              Prepends a time stamp to each trace or verbose  line  that  curl\n"
"              displays.\n"
"\n"
"              Added in 7.14.0.\n"
"\n"
"       --trace <file>\n"
"              Enables a full trace dump of all incoming and outgoing data, in-\n"
"              cluding descriptive information, to the given output  file.  Use\n"
"              \"-\"  as  filename  to have the output sent to stdout. Use \"%\" as\n"
"              filename to have the output sent to stderr.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              This option overrides -v, --verbose and --trace-ascii.\n"
"\n"
"       --unix-socket <path>\n"
"              (HTTP) Connect through this Unix domain socket, instead of using\n"
"              the network.\n"
"\n"
"              Added in 7.40.0.\n"
"\n"
"       -T, --upload-file <file>\n"
"              This  transfers  the  specified local file to the remote URL. If\n"
, stdout);
 fputs(
"              there is no file part in the specified URL, curl will append the\n"
"              local file name. NOTE that you must use a trailing / on the last\n"
"              directory to really prove to Curl that there is no file name  or\n"
"              curl will think that your last directory name is the remote file\n"
"              name to use. That will most likely cause the upload operation to\n"
"              fail. If this is used on an HTTP(S) server, the PUT command will\n"
"              be used.\n"
"\n"
, stdout);
 fputs(
"              Use the file name \"-\" (a single dash) to use stdin instead of  a\n"
"              given  file.   Alternately,  the file name \".\" (a single period)\n"
"              may be specified instead of \"-\" to  use  stdin  in  non-blocking\n"
"              mode  to  allow  reading  server output while stdin is being up-\n"
"              loaded.\n"
"\n"
"              You can specify one -T, --upload-file for each URL on  the  com-\n"
"              mand  line.  Each -T, --upload-file + URL pair specifies what to\n"
, stdout);
 fputs(
"              upload and to where. curl also supports \"globbing\"  of  the  -T,\n"
"              --upload-file  argument,  meaning  that  you can upload multiple\n"
"              files to a single URL by using the same URL globbing style  sup-\n"
"              ported in the URL, like this:\n"
"\n"
"               curl --upload-file \"{file1,file2}\" http://www.example.com\n"
"\n"
"              or even\n"
"\n"
"               curl -T \"img[1-1000].png\" ftp://ftp.example.com/upload/\n"
"\n"
, stdout);
 fputs(
"              When  uploading  to an SMTP server: the uploaded data is assumed\n"
"              to be RFC 5322 formatted. It has to feature the necessary set of\n"
"              headers  and  mail  body formatted correctly by the user as curl\n"
"              will not transcode nor encode it further in any way.\n"
"\n"
"       --url <url>\n"
"              Specify a URL to fetch. This option is  mostly  handy  when  you\n"
"              want to specify URL(s) in a config file.\n"
"\n"
, stdout);
 fputs(
"              If  the given URL is missing a scheme name (such as \"http://\" or\n"
"              \"ftp://\" etc) then curl will make a guess based on the host.  If\n"
"              the  outermost  sub-domain  name  matches DICT, FTP, IMAP, LDAP,\n"
"              POP3 or SMTP then that protocol will  be  used,  otherwise  HTTP\n"
"              will be used. Since 7.45.0 guessing can be disabled by setting a\n"
"              default protocol, see --proto-default for details.\n"
"\n"
, stdout);
 fputs(
"              This option may be used any number of times.  To  control  where\n"
"              this  URL  is written, use the -o, --output or the -O, --remote-\n"
"              name options.\n"
"\n"
"       -B, --use-ascii\n"
"              (FTP LDAP) Enable ASCII transfer. For FTP, this can also be  en-\n"
"              forced  by  using  a  URL  that ends with \";type=A\". This option\n"
"              causes data sent to stdout to be in text mode for win32 systems.\n"
"\n"
"       -A, --user-agent <name>\n"
, stdout);
 fputs(
"              (HTTP) Specify the User-Agent string to send to the HTTP server.\n"
"              To  encode blanks in the string, surround the string with single\n"
"              quote marks. This header can also be set with the  -H,  --header\n"
"              or the --proxy-header options.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -u, --user <user:password>\n"
"              Specify the user name and password to use for server authentica-\n"
, stdout);
 fputs(
"              tion. Overrides -n, --netrc and --netrc-optional.\n"
"\n"
"              If you simply specify the user name,  curl  will  prompt  for  a\n"
"              password.\n"
"\n"
"              The  user  name  and  passwords are split up on the first colon,\n"
"              which makes it impossible to use a colon in the user  name  with\n"
"              this option. The password can, still.\n"
"\n"
"              On systems where it works, curl will hide the given option argu-\n"
, stdout);
 fputs(
"              ment from process listings. This is not enough to  protect  cre-\n"
"              dentials  from  possibly getting seen by other users on the same\n"
"              system as they will still be visible for a brief  moment  before\n"
"              cleared. Such sensitive data should be retrieved from a file in-\n"
"              stead or similar and never used in clear text in a command line.\n"
"              When using Kerberos V5 with a Windows based  server  you  should\n"
, stdout);
 fputs(
"              include  the  Windows domain name in the user name, in order for\n"
"              the server to successfully obtain  a  Kerberos  Ticket.  If  you\n"
"              don't then the initial authentication handshake may fail.\n"
"\n"
"              When  using  NTLM,  the user name can be specified simply as the\n"
"              user name, without the domain, if there is a single  domain  and\n"
"              forest in your setup for example.\n"
"\n"
, stdout);
 fputs(
"              To  specify  the domain name use either Down-Level Logon Name or\n"
"              UPN (User Principal Name) formats. For example, EXAMPLE\\user and\n"
"              user@example.com respectively.\n"
"\n"
"              If  you  use a Windows SSPI-enabled curl binary and perform Ker-\n"
"              beros V5, Negotiate, NTLM or Digest authentication then you  can\n"
"              tell  curl  to select the user name and password from your envi-\n"
, stdout);
 fputs(
"              ronment by specifying a single colon with this option: \"-u :\".\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -v, --verbose\n"
"              Makes curl verbose during the operation.  Useful  for  debugging\n"
"              and  seeing  what's  going  on \"under the hood\". A line starting\n"
"              with '>' means \"header data\" sent by  curl,  '<'  means  \"header\n"
"              data\"  received  by  curl  that is hidden in normal cases, and a\n"
, stdout);
 fputs(
"              line starting with '*' means additional info provided by curl.\n"
"\n"
"              If you only want HTTP headers in the output, -i, --include might\n"
"              be the option you're looking for.\n"
"\n"
"              If  you think this option still doesn't give you enough details,\n"
"              consider using --trace or --trace-ascii instead.\n"
"\n"
"              Use -s, --silent to make curl really quiet.\n"
"\n"
"              See also  -i,  --include.  This  option  overrides  --trace  and\n"
, stdout);
 fputs(
"              --trace-ascii.\n"
"\n"
"       -V, --version\n"
"              Displays information about curl and the libcurl version it uses.\n"
"              The  first  line  includes the full version of curl, libcurl and\n"
"              other 3rd party libraries linked with the executable.\n"
"\n"
"              The second line (starts with \"Protocols:\") shows  all  protocols\n"
"              that libcurl reports to support.\n"
"\n"
"              The third line (starts with \"Features:\") shows specific features\n"
, stdout);
 fputs(
"              libcurl reports to offer. Available features include:\n"
"\n"
"              IPv6   You can use IPv6 with this.\n"
"\n"
"              krb4   Krb4 for FTP is supported.\n"
"\n"
"              SSL    SSL versions of various protocols are supported, such  as\n"
"                     HTTPS, FTPS, POP3S and so on.\n"
"\n"
"              libz   Automatic  decompression of compressed files over HTTP is\n"
"                     supported.\n"
"\n"
"              NTLM   NTLM authentication is supported.\n"
"\n"
, stdout);
 fputs(
"              Debug  This curl uses a libcurl built with Debug.  This  enables\n"
"                     more  error-tracking  and memory debugging etc. For curl-\n"
"                     developers only!\n"
"\n"
"              AsynchDNS\n"
"                     This curl uses asynchronous name  resolves.  Asynchronous\n"
"                     name  resolves can be done using either the c-ares or the\n"
"                     threaded resolver backends.\n"
"\n"
"              SPNEGO SPNEGO authentication is supported.\n"
"\n"
, stdout);
 fputs(
"              Largefile\n"
"                     This curl supports transfers of large files, files larger\n"
"                     than 2GB.\n"
"\n"
"              IDN    This curl supports IDN - international domain names.\n"
"\n"
"              GSS-API\n"
"                     GSS-API is supported.\n"
"\n"
"              SSPI   SSPI is supported.\n"
"\n"
"              TLS-SRP\n"
"                     SRP  (Secure Remote Password) authentication is supported\n"
"                     for TLS.\n"
"\n"
, stdout);
 fputs(
"              HTTP2  HTTP/2 support has been built-in.\n"
"\n"
"              UnixSockets\n"
"                     Unix sockets support is provided.\n"
"\n"
"              HTTPS-proxy\n"
"                     This curl is built to support HTTPS proxy.\n"
"\n"
"              Metalink\n"
"                     This curl supports Metalink (both version 3  and  4  (RFC\n"
"                     5854)),  which  describes  mirrors and hashes.  curl will\n"
"                     use mirrors for failover if there are errors (such as the\n"
, stdout);
 fputs(
"                     file or server not being available).\n"
"\n"
"              PSL    PSL  is  short for Public Suffix List and means that this\n"
"                     curl has been built with  knowledge  about  \"public  suf-\n"
"                     fixes\".\n"
"\n"
"              MultiSSL\n"
"                     This curl supports multiple TLS backends.\n"
"\n"
"       -w, --write-out <format>\n"
"              Make curl display information on stdout after a completed trans-\n"
, stdout);
 fputs(
"              fer. The format is a string that may contain  plain  text  mixed\n"
"              with  any  number of variables. The format can be specified as a\n"
"              literal \"string\", or you can have curl read the  format  from  a\n"
"              file  with  \"@filename\" and to tell curl to read the format from\n"
"              stdin you write \"@-\".\n"
"\n"
"              The variables present in the output format will  be  substituted\n"
, stdout);
 fputs(
"              by  the  value or text that curl thinks fit, as described below.\n"
"              All variables are specified as %{variable_name} and to output  a\n"
"              normal  % you just write them as %%. You can output a newline by\n"
"              using \\n, a carriage return with \\r and a tab space with \\t.\n"
"\n"
"              The output will be written to standard output, but this  can  be\n"
"              switched to standard error by using %{stderr}.\n"
"\n"
, stdout);
 fputs(
"              NOTE: The %-symbol is a special symbol in the win32-environment,\n"
"              where all occurrences of % must be doubled when using  this  op-\n"
"              tion.\n"
"\n"
"              The variables available are:\n"
"\n"
"              content_type   The  Content-Type  of  the requested document, if\n"
"                             there was any.\n"
"\n"
"              filename_effective\n"
"                             The ultimate filename that curl  writes  out  to.\n"
, stdout);
 fputs(
"                             This  is only meaningful if curl is told to write\n"
"                             to a file  with  the  -O,  --remote-name  or  -o,\n"
"                             --output  option. It's most useful in combination\n"
"                             with the -J, --remote-header-name option.  (Added\n"
"                             in 7.26.0)\n"
"\n"
"              ftp_entry_path The initial path curl ended up in when logging on\n"
, stdout);
 fputs(
"                             to the remote FTP server. (Added in 7.15.4)\n"
"\n"
"              http_code      The numerical response code that was found in the\n"
"                             last  retrieved  HTTP(S)  or  FTP(s) transfer. In\n"
"                             7.18.2 the alias response_code was added to  show\n"
"                             the same info.\n"
"\n"
"              http_connect   The numerical code that was found in the last re-\n"
, stdout);
 fputs(
"                             sponse (from a proxy) to a curl CONNECT  request.\n"
"                             (Added in 7.12.4)\n"
"\n"
"              http_version   The  http  version  that  was  effectively  used.\n"
"                             (Added in 7.50.0)\n"
"\n"
"              local_ip       The IP address of the local end of the  most  re-\n"
"                             cently  done  connection  - can be either IPv4 or\n"
"                             IPv6 (Added in 7.29.0)\n"
"\n"
, stdout);
 fputs(
"              local_port     The local port number of the most  recently  done\n"
"                             connection (Added in 7.29.0)\n"
"\n"
"              num_connects   Number  of new connects made in the recent trans-\n"
"                             fer. (Added in 7.12.3)\n"
"\n"
"              num_redirects  Number of redirects that were followed in the re-\n"
"                             quest. (Added in 7.12.3)\n"
"\n"
"              proxy_ssl_verify_result\n"
, stdout);
 fputs(
"                             The result of the HTTPS proxy's SSL peer certifi-\n"
"                             cate verification that was requested. 0 means the\n"
"                             verification was successful. (Added in 7.52.0)\n"
"\n"
"              redirect_url   When an HTTP request was made without -L, --loca-\n"
"                             tion to follow redirects (or when --max-redir  is\n"
"                             met),  this  variable  will show the actual URL a\n"
, stdout);
 fputs(
"                             redirect would have gone to. (Added in 7.18.2)\n"
"\n"
"              remote_ip      The remote IP address of the most  recently  done\n"
"                             connection - can be either IPv4 or IPv6 (Added in\n"
"                             7.29.0)\n"
"\n"
"              remote_port    The remote port number of the most recently  done\n"
"                             connection (Added in 7.29.0)\n"
"\n"
"              scheme         The  URL  scheme (sometimes called protocol) that\n"
, stdout);
 fputs(
"                             was effectively used (Added in 7.52.0)\n"
"\n"
"              size_download  The total amount of bytes that were downloaded.\n"
"\n"
"              size_header    The total amount of bytes of the downloaded head-\n"
"                             ers.\n"
"\n"
"              size_request   The  total  amount of bytes that were sent in the\n"
"                             HTTP request.\n"
"\n"
"              size_upload    The total amount of bytes that were uploaded.\n"
"\n"
, stdout);
 fputs(
"              speed_download The average download speed that curl measured for\n"
"                             the complete download. Bytes per second.\n"
"\n"
"              speed_upload   The  average  upload speed that curl measured for\n"
"                             the complete upload. Bytes per second.\n"
"\n"
"              ssl_verify_result\n"
"                             The result of the SSL peer certificate  verifica-\n"
"                             tion that was requested. 0 means the verification\n"
, stdout);
 fputs(
"                             was successful. (Added in 7.19.0)\n"
"\n"
"              stderr         From this point on, the  -w,  --write-out  output\n"
"                             will  be  written  to  standard  error. (Added in\n"
"                             7.63.0)\n"
"\n"
"              stdout         From this point on, the  -w,  --write-out  output\n"
"                             will  be written to standard output.  This is the\n"
"                             default, but can be used  to  switch  back  after\n"
, stdout);
 fputs(
"                             switching to stderr.  (Added in 7.63.0)\n"
"\n"
"              time_appconnect\n"
"                             The  time, in seconds, it took from the start un-\n"
"                             til the SSL/SSH/etc connect/handshake to the  re-\n"
"                             mote host was completed. (Added in 7.19.0)\n"
"\n"
"              time_connect   The  time, in seconds, it took from the start un-\n"
"                             til the TCP connect to the remote host (or proxy)\n"
, stdout);
 fputs(
"                             was completed.\n"
"\n"
"              time_namelookup\n"
"                             The  time, in seconds, it took from the start un-\n"
"                             til the name resolving was completed.\n"
"\n"
"              time_pretransfer\n"
"                             The time, in seconds, it took from the start  un-\n"
"                             til  the  file  transfer was just about to begin.\n"
"                             This includes all pre-transfer commands and nego-\n"
, stdout);
 fputs(
"                             tiations that are specific to the particular pro-\n"
"                             tocol(s) involved.\n"
"\n"
"              time_redirect  The time, in seconds, it took for all redirection\n"
"                             steps including name lookup, connect, pretransfer\n"
"                             and transfer before  the  final  transaction  was\n"
"                             started.  time_redirect shows the complete execu-\n"
, stdout);
 fputs(
"                             tion time for multiple  redirections.  (Added  in\n"
"                             7.12.3)\n"
"\n"
"              time_starttransfer\n"
"                             The  time, in seconds, it took from the start un-\n"
"                             til the first byte was just about  to  be  trans-\n"
"                             ferred.  This  includes time_pretransfer and also\n"
"                             the time the server needed to calculate  the  re-\n"
, stdout);
 fputs(
"                             sult.\n"
"\n"
"              time_total     The  total time, in seconds, that the full opera-\n"
"                             tion lasted.\n"
"\n"
"              url_effective  The URL that was fetched last. This is most mean-\n"
"                             ingful  if  you've  told curl to follow location:\n"
"                             headers.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --xattr\n"
, stdout);
 fputs(
"              When saving output to a file, this option tells  curl  to  store\n"
"              certain  file  metadata  in extended file attributes. Currently,\n"
"              the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
"              the  content  type  is stored in the mime_type attribute. If the\n"
"              file system does not support extended attributes, a  warning  is\n"
"              issued.\n"
"\n"
"FILES\n"
"       ~/.curlrc\n"
, stdout);
 fputs(
"              Default config file, see -K, --config for details.\n"
"\n"
"ENVIRONMENT\n"
"       The environment variables can be specified in lower case or upper case.\n"
"       The lower case version has precedence. http_proxy is an exception as it\n"
"       is only available in lower case.\n"
"\n"
"       Using  an  environment variable to set the proxy has the same effect as\n"
"       using the -x, --proxy option.\n"
"\n"
"       http_proxy [protocol://]<host>[:port]\n"
"              Sets the proxy server to use for HTTP.\n"
, stdout);
 fputs(
"       HTTPS_PROXY [protocol://]<host>[:port]\n"
"              Sets the proxy server to use for HTTPS.\n"
"\n"
"       [url-protocol]_PROXY [protocol://]<host>[:port]\n"
"              Sets the proxy server to use for [url-protocol], where the  pro-\n"
"              tocol  is  a  protocol  that curl supports and as specified in a\n"
"              URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP etc.\n"
"\n"
"       ALL_PROXY [protocol://]<host>[:port]\n"
"              Sets the proxy server to use if no  protocol-specific  proxy  is\n"
, stdout);
 fputs(
"              set.\n"
"\n"
"       NO_PROXY <comma-separated list of hosts/domains>\n"
"              list  of  host names that shouldn't go through any proxy. If set\n"
"              to an asterisk '*' only, it matches all hosts. Each name in this\n"
"              list is matched as either a domain name which contains the host-\n"
"              name, or the hostname itself.\n"
"\n"
"              This environment variable disables use of the  proxy  even  when\n"
, stdout);
 fputs(
"              specified  with  the  -x,  --proxy  option. That is NO_PROXY=di-\n"
"              rect.example.com  curl  -x  http://proxy.example.com  http://di-\n"
"              rect.example.com   accesses   the   target   URL  directly,  and\n"
"              NO_PROXY=direct.example.com  curl  -x   http://proxy.example.com\n"
"              http://somewhere.example.com accesses the target URL through the\n"
"              proxy.\n"
"\n"
"              The list of host names can also  be  include  numerical  IP  ad-\n"
, stdout);
 fputs(
"              dresses,  and IPv6 versions should then be given without enclos-\n"
"              ing brackets.\n"
"\n"
"PROXY PROTOCOL PREFIXES\n"
"       Since curl version 7.21.7, the proxy string may  be  specified  with  a\n"
"       protocol:// prefix to specify alternative proxy protocols.\n"
"\n"
"       If  no  protocol  is  specified  in  the  proxy string or if the string\n"
"       doesn't match a supported one, the proxy will be  treated  as  an  HTTP\n"
"       proxy.\n"
"\n"
, stdout);
 fputs(
"       The supported proxy protocol prefixes are as follows:\n"
"\n"
"       http://\n"
"              Makes  it use it as an HTTP proxy. The default if no scheme pre-\n"
"              fix is used.\n"
"\n"
"       https://\n"
"              Makes it treated as an HTTPS proxy.\n"
"\n"
"       socks4://\n"
"              Makes it the equivalent of --socks4\n"
"\n"
"       socks4a://\n"
"              Makes it the equivalent of --socks4a\n"
"\n"
"       socks5://\n"
"              Makes it the equivalent of --socks5\n"
"\n"
"       socks5h://\n"
, stdout);
 fputs(
"              Makes it the equivalent of --socks5-hostname\n"
"\n"
"EXIT CODES\n"
"       There are a bunch of different error codes and their corresponding  er-\n"
"       ror messages that may appear during bad conditions. At the time of this\n"
"       writing, the exit codes are:\n"
"\n"
"       1      Unsupported protocol. This build of curl has no support for this\n"
"              protocol.\n"
"\n"
"       2      Failed to initialize.\n"
"\n"
"       3      URL malformed. The syntax was not correct.\n"
"\n"
, stdout);
 fputs(
"       4      A  feature  or option that was needed to perform the desired re-\n"
"              quest was not enabled or was explicitly disabled at  build-time.\n"
"              To make curl able to do this, you probably need another build of\n"
"              libcurl!\n"
"\n"
"       5      Couldn't resolve proxy. The given proxy host could  not  be  re-\n"
"              solved.\n"
"\n"
"       6      Couldn't resolve host. The given remote host was not resolved.\n"
"\n"
"       7      Failed to connect to host.\n"
"\n"
, stdout);
 fputs(
"       8      Weird server reply. The server sent data curl couldn't parse.\n"
"\n"
"       9      FTP  access  denied. The server denied login or denied access to\n"
"              the particular resource or directory you wanted to  reach.  Most\n"
"              often  you  tried to change to a directory that doesn't exist on\n"
"              the server.\n"
"\n"
"       10     FTP accept failed. While waiting for the server to connect  back\n"
"              when  an active FTP session is used, an error code was sent over\n"
, stdout);
 fputs(
"              the control connection or similar.\n"
"\n"
"       11     FTP weird PASS reply. Curl couldn't parse the reply sent to  the\n"
"              PASS request.\n"
"\n"
"       12     During  an  active  FTP  session while waiting for the server to\n"
"              connect back to curl, the timeout expired.\n"
"\n"
"       13     FTP weird PASV reply, Curl couldn't parse the reply sent to  the\n"
"              PASV request.\n"
"\n"
"       14     FTP  weird  227  format.  Curl  couldn't  parse the 227-line the\n"
, stdout);
 fputs(
"              server sent.\n"
"\n"
"       15     FTP can't get host. Couldn't resolve the host IP we got  in  the\n"
"              227-line.\n"
"\n"
"       16     HTTP/2 error. A problem was detected in the HTTP2 framing layer.\n"
"              This is somewhat generic and can be one out of several problems,\n"
"              see the error message for details.\n"
"\n"
"       17     FTP  couldn't set binary. Couldn't change transfer method to bi-\n"
"              nary.\n"
"\n"
, stdout);
 fputs(
"       18     Partial file. Only a part of the file was transferred.\n"
"\n"
"       19     FTP couldn't download/access the given file, the RETR (or  simi-\n"
"              lar) command failed.\n"
"\n"
"       21     FTP quote error. A quote command returned error from the server.\n"
"       22     HTTP  page not retrieved. The requested url was not found or re-\n"
"              turned another error with the  HTTP  error  code  being  400  or\n"
"              above. This return code only appears if -f, --fail is used.\n"
"\n"
, stdout);
 fputs(
"       23     Write  error.  Curl couldn't write data to a local filesystem or\n"
"              similar.\n"
"\n"
"       25     FTP couldn't STOR file. The server denied  the  STOR  operation,\n"
"              used for FTP uploading.\n"
"\n"
"       26     Read error. Various reading problems.\n"
"\n"
"       27     Out of memory. A memory allocation request failed.\n"
"\n"
"       28     Operation timeout. The specified time-out period was reached ac-\n"
"              cording to the conditions.\n"
"\n"
, stdout);
 fputs(
"       30     FTP PORT failed. The PORT command failed. Not  all  FTP  servers\n"
"              support  the  PORT  command, try doing a transfer using PASV in-\n"
"              stead!\n"
"\n"
"       31     FTP couldn't use REST. The REST command failed. This command  is\n"
"              used for resumed FTP transfers.\n"
"\n"
"       33     HTTP range error. The range \"command\" didn't work.\n"
"\n"
"       34     HTTP post error. Internal post-request generation error.\n"
"\n"
, stdout);
 fputs(
"       35     SSL connect error. The SSL handshaking failed.\n"
"\n"
"       36     Bad  download resume. Couldn't continue an earlier aborted down-\n"
"              load.\n"
"\n"
"       37     FILE couldn't read file. Failed to open the file. Permissions?\n"
"\n"
"       38     LDAP cannot bind. LDAP bind operation failed.\n"
"\n"
"       39     LDAP search failed.\n"
"\n"
"       41     Function not found. A required LDAP function was not found.\n"
"\n"
"       42     Aborted by callback. An application told curl to abort the oper-\n"
, stdout);
 fputs(
"              ation.\n"
"\n"
"       43     Internal error. A function was called with a bad parameter.\n"
"\n"
"       45     Interface  error.  A  specified  outgoing interface could not be\n"
"              used.\n"
"\n"
"       47     Too many redirects. When following redirects, curl hit the maxi-\n"
"              mum amount.\n"
"\n"
"       48     Unknown  option  specified  to  libcurl. This indicates that you\n"
"              passed a weird option to curl that was passed on to libcurl  and\n"
, stdout);
 fputs(
"              rejected. Read up in the manual!\n"
"\n"
"       49     Malformed telnet option.\n"
"\n"
"       51     The peer's SSL certificate or SSH MD5 fingerprint was not OK.\n"
"\n"
"       52     The  server  didn't  reply anything, which here is considered an\n"
"              error.\n"
"\n"
"       53     SSL crypto engine not found.\n"
"\n"
"       54     Cannot set SSL crypto engine as default.\n"
"\n"
"       55     Failed sending network data.\n"
"\n"
"       56     Failure in receiving network data.\n"
"\n"
, stdout);
 fputs(
"       58     Problem with the local certificate.\n"
"\n"
"       59     Couldn't use specified SSL cipher.\n"
"\n"
"       60     Peer certificate cannot be authenticated with known CA  certifi-\n"
"              cates.\n"
"\n"
"       61     Unrecognized transfer encoding.\n"
"\n"
"       62     Invalid LDAP URL.\n"
"\n"
"       63     Maximum file size exceeded.\n"
"\n"
"       64     Requested FTP SSL level failed.\n"
"\n"
"       65     Sending the data requires a rewind that failed.\n"
"\n"
"       66     Failed to initialise SSL Engine.\n"
"\n"
, stdout);
 fputs(
"       67     The  user  name,  password, or similar was not accepted and curl\n"
"              failed to log in.\n"
"\n"
"       68     File not found on TFTP server.\n"
"\n"
"       69     Permission problem on TFTP server.\n"
"\n"
"       70     Out of disk space on TFTP server.\n"







|
|





|
|


|

|




|








|

















|


|
|




|









|

|
|


|





|




|


|





|


|
|








|


|
|








|


|
|








|











|
|


|
|






|






|





|









|






|
|















|




|







|
|
|
|


|
|


|
|
|










|

|



|




|
|
|
|





|
|



|
|






|
|










|


|
|





|
|
|


|


|
|


|
|




|



|
|
|







|
|
|
|







|




|






|


|











|


|






|
|



|
|


















|













|
|





|
|









|
|
|
|


|


|
|
|


|





|




|



|


|
|
|
|








|
|





|





|
|




|


|













|
|




|



|


|









|









|



|





|
|


|
|
|





|
|


|






|



|
|








|
|


|



|
|
|
|




|



|







|
|

|
|













|










|
|



|





|




|


|

|
|



|


|



|


|
|







|




















|












|
|



|










|
|
|


|
|




|


|


|


|




|






|






|



|
|




|


|











|
|


|










|

















|





|
|








|
















|
















|







3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
"              Added in 7.20.0.\n"
"\n"
"       --tftp-no-options\n"
"              (TFTP) Tells curl not to send TFTP options requests.\n"
"\n"
, stdout);
 fputs(
"              This option improves interop with some legacy  servers  that  do\n"
"              not  acknowledge  or  properly implement TFTP options. When this\n"
"              option is used --tftp-blksize is ignored.\n"
"\n"
"              Added in 7.48.0.\n"
"\n"
"       -z, --time-cond <time>\n"
"              (HTTP FTP) Request a file that has been modified later than  the\n"
"              given  time  and date, or one that has been modified before that\n"
, stdout);
 fputs(
"              time. The <date expression> can be all sorts of date strings  or\n"
"              if it doesn't match any internal ones, it is taken as a filename\n"
"              and tries to get the modification date (mtime) from  <file>  in-\n"
"              stead. See the curl_getdate(3) man pages for date expression de-\n"
"              tails.\n"
"\n"
"              Start the date expression with a dash (-) to make it request for\n"
"              a  document that is older than the given date/time, default is a\n"
, stdout);
 fputs(
"              document that is newer than the specified date/time.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --tls-max <VERSION>\n"
"              (SSL) VERSION defines maximum supported TLS version. The minimum\n"
"              acceptable  version  is  set  by  tlsv1.0,  tlsv1.1,  tlsv1.2 or\n"
"              tlsv1.3.\n"
"\n"
"              default\n"
"                     Use up to recommended TLS version.\n"
"\n"
"              1.0    Use up to TLSv1.0.\n"
, stdout);
 fputs(
"              1.1    Use up to TLSv1.1.\n"
"              1.2    Use up to TLSv1.2.\n"
"              1.3    Use up to TLSv1.3.\n"
"\n"
"       See also --tlsv1.0 and --tlsv1.1 and --tlsv1.2 and --tlsv1.3. --tls-max\n"
"       requires that the underlying libcurl was built to support TLS. Added in\n"
"       7.54.0.\n"
"\n"
"       --tls13-ciphers <list of TLS 1.3 ciphersuites>\n"
"              (TLS) Specifies which cipher suites to use in the connection  if\n"
, stdout);
 fputs(
"              it  negotiates  TLS 1.3. The list of ciphers suites must specify\n"
"              valid ciphers. Read up on TLS 1.3 cipher suite details  on  this\n"
"              URL:\n"
"\n"
"               https://curl.haxx.se/docs/ssl-ciphers.html\n"
"\n"
"              This  option  is  currently  used only when curl is built to use\n"
"              OpenSSL 1.1.1 or later. If you are using a different SSL backend\n"
"              you can try setting TLS 1.3 cipher suites by using the --ciphers\n"
"              option.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --tlsauthtype <type>\n"
"              Set TLS authentication type. Currently, the only  supported  op-\n"
"              tion  is  \"SRP\",  for  TLS-SRP  (RFC  5054).  If  --tlsuser  and\n"
"              --tlspassword are specified but --tlsauthtype is not, then  this\n"
"              option  defaults to \"SRP\".  This option works only if the under-\n"
, stdout);
 fputs(
"              lying libcurl is built  with  TLS-SRP  support,  which  requires\n"
"              OpenSSL or GnuTLS with TLS-SRP support.\n"
"\n"
"              Added in 7.21.4.\n"
"\n"
"       --tlspassword\n"
"              Set  password  for use with the TLS authentication method speci-\n"
"              fied with --tlsauthtype. Requires that --tlsuser also be set.\n"
"\n"
"              Added in 7.21.4.\n"
"       --tlsuser <name>\n"
"              Set username for use with the TLS authentication  method  speci-\n"
, stdout);
 fputs(
"              fied  with  --tlsauthtype.  Requires  that --tlspassword also is\n"
"              set.\n"
"\n"
"              Added in 7.21.4.\n"
"\n"
"       --tlsv1.0\n"
"              (TLS) Forces curl to use TLS version 1.0 or later when  connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              In  old  versions  of  curl  this option was documented to allow\n"
"              _only_ TLS 1.0, but behavior was inconsistent depending  on  the\n"
, stdout);
 fputs(
"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.1\n"
"              (TLS) Forces curl to use TLS version 1.1 or later when  connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              In  old  versions  of  curl  this option was documented to allow\n"
"              _only_ TLS 1.1, but behavior was inconsistent depending  on  the\n"
, stdout);
 fputs(
"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.2\n"
"              (TLS) Forces curl to use TLS version 1.2 or later when  connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              In  old  versions  of  curl  this option was documented to allow\n"
"              _only_ TLS 1.2, but behavior was inconsistent depending  on  the\n"
, stdout);
 fputs(
"              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
"              sion.\n"
"\n"
"              Added in 7.34.0.\n"
"\n"
"       --tlsv1.3\n"
"              (TLS) Forces curl to use TLS version 1.3 or later when  connect-\n"
"              ing to a remote TLS server.\n"
"\n"
"              Note that TLS 1.3 is only supported by a subset of TLS backends.\n"
"              At the time of this writing, they are BoringSSL, NSS, and Secure\n"
, stdout);
 fputs(
"              Transport (on iOS 11 or later, and macOS 10.13 or later).\n"
"\n"
"              Added in 7.52.0.\n"
"\n"
"       -1, --tlsv1\n"
"              (SSL)  Tells curl to use at least TLS version 1.x when negotiat-\n"
"              ing with a remote TLS server. That  means  TLS  version  1.0  or\n"
"              higher\n"
"\n"
"              See  also  --http1.1  and --http2. -1, --tlsv1 requires that the\n"
"              underlying libcurl was built to support TLS. This  option  over-\n"
, stdout);
 fputs(
"              rides --tlsv1.1 and --tlsv1.2 and --tlsv1.3.\n"
"\n"
"       --tr-encoding\n"
"              (HTTP) Request a compressed Transfer-Encoding response using one\n"
"              of the algorithms curl supports, and uncompress the  data  while\n"
"              receiving it.\n"
"\n"
"              Added in 7.21.6.\n"
"\n"
"       --trace-ascii <file>\n"
"              Enables a full trace dump of all incoming and outgoing data, in-\n"
"              cluding descriptive information, to the given output  file.  Use\n"
, stdout);
 fputs(
"              \"-\" as filename to have the output sent to stdout.\n"
"\n"
"              This is very similar to --trace, but leaves out the hex part and\n"
"              only shows the ASCII part of the dump. It makes  smaller  output\n"
"              that might be easier to read for untrained humans.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"              This option overrides --trace and -v, --verbose.\n"
"\n"
"       --trace-time\n"
, stdout);
 fputs(
"              Prepends  a  time  stamp to each trace or verbose line that curl\n"
"              displays.\n"
"\n"
"              Added in 7.14.0.\n"
"\n"
"       --trace <file>\n"
"              Enables a full trace dump of all incoming and outgoing data, in-\n"
"              cluding  descriptive  information, to the given output file. Use\n"
"              \"-\" as filename to have the output sent to stdout.  Use  \"%\"  as\n"
"              filename to have the output sent to stderr.\n"
"\n"
, stdout);
 fputs(
"              If this option is used several times, the last one will be used.\n"
"\n"
"              This option overrides -v, --verbose and --trace-ascii.\n"
"\n"
"       --unix-socket <path>\n"
"              (HTTP) Connect through this Unix domain socket, instead of using\n"
"              the network.\n"
"\n"
"              Added in 7.40.0.\n"
"\n"
"       -T, --upload-file <file>\n"
"              This transfers the specified local file to the  remote  URL.  If\n"
, stdout);
 fputs(
"              there is no file part in the specified URL, curl will append the\n"
"              local file name. NOTE that you must use a trailing / on the last\n"
"              directory  to really prove to Curl that there is no file name or\n"
"              curl will think that your last directory name is the remote file\n"
"              name to use. That will most likely cause the upload operation to\n"
"              fail. If this is used on an HTTP(S) server, the PUT command will\n"
"              be used.\n"
"\n"
, stdout);
 fputs(
"              Use  the file name \"-\" (a single dash) to use stdin instead of a\n"
"              given file.  Alternately, the file name \".\"  (a  single  period)\n"
"              may  be  specified  instead  of \"-\" to use stdin in non-blocking\n"
"              mode to allow reading server output while  stdin  is  being  up-\n"
"              loaded.\n"
"\n"
"              You  can  specify one -T, --upload-file for each URL on the com-\n"
"              mand line. Each -T, --upload-file + URL pair specifies  what  to\n"
, stdout);
 fputs(
"              upload  and  to  where. curl also supports \"globbing\" of the -T,\n"
"              --upload-file argument, meaning that  you  can  upload  multiple\n"
"              files  to a single URL by using the same URL globbing style sup-\n"
"              ported in the URL, like this:\n"
"\n"
"               curl --upload-file \"{file1,file2}\" http://www.example.com\n"
"\n"
"              or even\n"
"\n"
"               curl -T \"img[1-1000].png\" ftp://ftp.example.com/upload/\n"
"\n"
, stdout);
 fputs(
"              When uploading to an SMTP server: the uploaded data  is  assumed\n"
"              to be RFC 5322 formatted. It has to feature the necessary set of\n"
"              headers and mail body formatted correctly by the  user  as  curl\n"
"              will not transcode nor encode it further in any way.\n"
"\n"
"       --url <url>\n"
"              Specify  a  URL  to  fetch. This option is mostly handy when you\n"
"              want to specify URL(s) in a config file.\n"
"\n"
, stdout);
 fputs(
"              If the given URL is missing a scheme name (such as \"http://\"  or\n"
"              \"ftp://\"  etc) then curl will make a guess based on the host. If\n"
"              the outermost sub-domain name matches  DICT,  FTP,  IMAP,  LDAP,\n"
"              POP3  or  SMTP  then  that protocol will be used, otherwise HTTP\n"
"              will be used. Since 7.45.0 guessing can be disabled by setting a\n"
"              default protocol, see --proto-default for details.\n"
"\n"
, stdout);
 fputs(
"              This  option  may  be used any number of times. To control where\n"
"              this URL is written, use the -o, --output or the  -O,  --remote-\n"
"              name options.\n"
"\n"
"       -B, --use-ascii\n"
"              (FTP  LDAP) Enable ASCII transfer. For FTP, this can also be en-\n"
"              forced by using a URL that  ends  with  \";type=A\".  This  option\n"
"              causes data sent to stdout to be in text mode for win32 systems.\n"
"\n"
"       -A, --user-agent <name>\n"
, stdout);
 fputs(
"              (HTTP) Specify the User-Agent string to send to the HTTP server.\n"
"              To encode blanks in the string, surround the string with  single\n"
"              quote  marks.  This header can also be set with the -H, --header\n"
"              or the --proxy-header options.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -u, --user <user:password>\n"
"              Specify the user name and password to use for server authentica-\n"
, stdout);
 fputs(
"              tion. Overrides -n, --netrc and --netrc-optional.\n"
"\n"
"              If  you  simply  specify  the  user name, curl will prompt for a\n"
"              password.\n"
"\n"
"              The user name and passwords are split up  on  the  first  colon,\n"
"              which  makes  it impossible to use a colon in the user name with\n"
"              this option. The password can, still.\n"
"\n"
"              On systems where it works, curl will hide the given option argu-\n"
, stdout);
 fputs(
"              ment  from  process listings. This is not enough to protect cre-\n"
"              dentials from possibly getting seen by other users on  the  same\n"
"              system  as  they will still be visible for a brief moment before\n"
"              cleared. Such sensitive data should be retrieved from a file in-\n"
"              stead or similar and never used in clear text in a command line.\n"
"              When  using  Kerberos  V5 with a Windows based server you should\n"
, stdout);
 fputs(
"              include the Windows domain name in the user name, in  order  for\n"
"              the  server  to  successfully  obtain  a Kerberos Ticket. If you\n"
"              don't then the initial authentication handshake may fail.\n"
"\n"
"              When using NTLM, the user name can be specified  simply  as  the\n"
"              user  name,  without the domain, if there is a single domain and\n"
"              forest in your setup for example.\n"
"\n"
, stdout);
 fputs(
"              To specify the domain name use either Down-Level Logon  Name  or\n"
"              UPN (User Principal Name) formats. For example, EXAMPLE\\user and\n"
"              user@example.com respectively.\n"
"\n"
"              If you use a Windows SSPI-enabled curl binary and  perform  Ker-\n"
"              beros  V5, Negotiate, NTLM or Digest authentication then you can\n"
"              tell curl to select the user name and password from  your  envi-\n"
, stdout);
 fputs(
"              ronment by specifying a single colon with this option: \"-u :\".\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       -v, --verbose\n"
"              Makes  curl  verbose  during the operation. Useful for debugging\n"
"              and seeing what's going on \"under the  hood\".  A  line  starting\n"
"              with  '>'  means  \"header  data\" sent by curl, '<' means \"header\n"
"              data\" received by curl that is hidden in  normal  cases,  and  a\n"
, stdout);
 fputs(
"              line starting with '*' means additional info provided by curl.\n"
"\n"
"              If you only want HTTP headers in the output, -i, --include might\n"
"              be the option you're looking for.\n"
"\n"
"              If you think this option still doesn't give you enough  details,\n"
"              consider using --trace or --trace-ascii instead.\n"
"\n"
"              Use -s, --silent to make curl really quiet.\n"
"\n"
"              See  also  -i,  --include.  This  option  overrides  --trace and\n"
, stdout);
 fputs(
"              --trace-ascii.\n"
"\n"
"       -V, --version\n"
"              Displays information about curl and the libcurl version it uses.\n"
"              The first line includes the full version of  curl,  libcurl  and\n"
"              other 3rd party libraries linked with the executable.\n"
"\n"
"              The  second  line (starts with \"Protocols:\") shows all protocols\n"
"              that libcurl reports to support.\n"
"\n"
"              The third line (starts with \"Features:\") shows specific features\n"
, stdout);
 fputs(
"              libcurl reports to offer. Available features include:\n"
"\n"
"              IPv6   You can use IPv6 with this.\n"
"\n"
"              krb4   Krb4 for FTP is supported.\n"
"\n"
"              SSL    SSL  versions of various protocols are supported, such as\n"
"                     HTTPS, FTPS, POP3S and so on.\n"
"\n"
"              libz   Automatic decompression of compressed files over HTTP  is\n"
"                     supported.\n"
"\n"
"              NTLM   NTLM authentication is supported.\n"
"\n"
, stdout);
 fputs(
"              Debug  This  curl  uses a libcurl built with Debug. This enables\n"
"                     more error-tracking and memory debugging etc.  For  curl-\n"
"                     developers only!\n"
"\n"
"              AsynchDNS\n"
"                     This  curl  uses asynchronous name resolves. Asynchronous\n"
"                     name resolves can be done using either the c-ares or  the\n"
"                     threaded resolver backends.\n"
"\n"
"              SPNEGO SPNEGO authentication is supported.\n"
"\n"
, stdout);
 fputs(
"              Largefile\n"
"                     This curl supports transfers of large files, files larger\n"
"                     than 2GB.\n"
"\n"
"              IDN    This curl supports IDN - international domain names.\n"
"\n"
"              GSS-API\n"
"                     GSS-API is supported.\n"
"\n"
"              SSPI   SSPI is supported.\n"
"\n"
"              TLS-SRP\n"
"                     SRP (Secure Remote Password) authentication is  supported\n"
"                     for TLS.\n"
"\n"
, stdout);
 fputs(
"              HTTP2  HTTP/2 support has been built-in.\n"
"\n"
"              UnixSockets\n"
"                     Unix sockets support is provided.\n"
"\n"
"              HTTPS-proxy\n"
"                     This curl is built to support HTTPS proxy.\n"
"\n"
"              Metalink\n"
"                     This  curl  supports  Metalink (both version 3 and 4 (RFC\n"
"                     5854)), which describes mirrors and  hashes.   curl  will\n"
"                     use mirrors for failover if there are errors (such as the\n"
, stdout);
 fputs(
"                     file or server not being available).\n"
"\n"
"              PSL    PSL is short for Public Suffix List and means  that  this\n"
"                     curl  has  been  built  with knowledge about \"public suf-\n"
"                     fixes\".\n"
"\n"
"              MultiSSL\n"
"                     This curl supports multiple TLS backends.\n"
"\n"
"       -w, --write-out <format>\n"
"              Make curl display information on stdout after a completed trans-\n"
, stdout);
 fputs(
"              fer.  The  format  is a string that may contain plain text mixed\n"
"              with any number of variables. The format can be specified  as  a\n"
"              literal  \"string\",  or  you can have curl read the format from a\n"
"              file with \"@filename\" and to tell curl to read the  format  from\n"
"              stdin you write \"@-\".\n"
"\n"
"              The  variables  present in the output format will be substituted\n"
, stdout);
 fputs(
"              by the value or text that curl thinks fit, as  described  below.\n"
"              All  variables are specified as %{variable_name} and to output a\n"
"              normal % you just write them as %%. You can output a newline  by\n"
"              using \\n, a carriage return with \\r and a tab space with \\t.\n"
"\n"
"              The  output  will be written to standard output, but this can be\n"
"              switched to standard error by using %{stderr}.\n"
"\n"
, stdout);
 fputs(
"              NOTE: The %-symbol is a special symbol in the win32-environment,\n"
"              where  all  occurrences of % must be doubled when using this op-\n"
"              tion.\n"
"\n"
"              The variables available are:\n"
"\n"
"              content_type   The Content-Type of the  requested  document,  if\n"
"                             there was any.\n"
"\n"
"              filename_effective\n"
"                             The  ultimate  filename  that curl writes out to.\n"
, stdout);
 fputs(
"                             This is only meaningful if curl is told to  write\n"
"                             to  a  file  with  the  -O,  --remote-name or -o,\n"
"                             --output option. It's most useful in  combination\n"
"                             with  the -J, --remote-header-name option. (Added\n"
"                             in 7.26.0)\n"
"\n"
"              ftp_entry_path The initial path curl ended up in when logging on\n"
, stdout);
 fputs(
"                             to the remote FTP server. (Added in 7.15.4)\n"
"\n"
"              http_code      The numerical response code that was found in the\n"
"                             last retrieved HTTP(S)  or  FTP(s)  transfer.  In\n"
"                             7.18.2  the alias response_code was added to show\n"
"                             the same info.\n"
"\n"
"              http_connect   The numerical code that was found in the last re-\n"
, stdout);
 fputs(
"                             sponse  (from a proxy) to a curl CONNECT request.\n"
"                             (Added in 7.12.4)\n"
"\n"
"              http_version   The  http  version  that  was  effectively  used.\n"
"                             (Added in 7.50.0)\n"
"\n"
"              local_ip       The  IP  address of the local end of the most re-\n"
"                             cently done connection - can be  either  IPv4  or\n"
"                             IPv6 (Added in 7.29.0)\n"
"\n"
, stdout);
 fputs(
"              local_port     The  local  port number of the most recently done\n"
"                             connection (Added in 7.29.0)\n"
"\n"
"              num_connects   Number of new connects made in the recent  trans-\n"
"                             fer. (Added in 7.12.3)\n"
"\n"
"              num_redirects  Number of redirects that were followed in the re-\n"
"                             quest. (Added in 7.12.3)\n"
"\n"
"              proxy_ssl_verify_result\n"
, stdout);
 fputs(
"                             The result of the HTTPS proxy's SSL peer certifi-\n"
"                             cate verification that was requested. 0 means the\n"
"                             verification was successful. (Added in 7.52.0)\n"
"\n"
"              redirect_url   When an HTTP request was made without -L, --loca-\n"
"                             tion  to follow redirects (or when --max-redir is\n"
"                             met), this variable will show the  actual  URL  a\n"
, stdout);
 fputs(
"                             redirect would have gone to. (Added in 7.18.2)\n"
"\n"
"              remote_ip      The  remote  IP address of the most recently done\n"
"                             connection - can be either IPv4 or IPv6 (Added in\n"
"                             7.29.0)\n"
"\n"
"              remote_port    The  remote port number of the most recently done\n"
"                             connection (Added in 7.29.0)\n"
"\n"
"              scheme         The URL scheme (sometimes called  protocol)  that\n"
, stdout);
 fputs(
"                             was effectively used (Added in 7.52.0)\n"
"\n"
"              size_download  The total amount of bytes that were downloaded.\n"
"\n"
"              size_header    The total amount of bytes of the downloaded head-\n"
"                             ers.\n"
"\n"
"              size_request   The total amount of bytes that were sent  in  the\n"
"                             HTTP request.\n"
"\n"
"              size_upload    The total amount of bytes that were uploaded.\n"
"\n"
, stdout);
 fputs(
"              speed_download The average download speed that curl measured for\n"
"                             the complete download. Bytes per second.\n"
"\n"
"              speed_upload   The average upload speed that curl  measured  for\n"
"                             the complete upload. Bytes per second.\n"
"\n"
"              ssl_verify_result\n"
"                             The  result of the SSL peer certificate verifica-\n"
"                             tion that was requested. 0 means the verification\n"
, stdout);
 fputs(
"                             was successful. (Added in 7.19.0)\n"
"\n"
"              stderr         From  this  point  on, the -w, --write-out output\n"
"                             will be written  to  standard  error.  (Added  in\n"
"                             7.63.0)\n"
"\n"
"              stdout         From  this  point  on, the -w, --write-out output\n"
"                             will be written to standard output.  This is  the\n"
"                             default,  but  can  be  used to switch back after\n"
, stdout);
 fputs(
"                             switching to stderr.  (Added in 7.63.0)\n"
"\n"
"              time_appconnect\n"
"                             The time, in seconds, it took from the start  un-\n"
"                             til  the SSL/SSH/etc connect/handshake to the re-\n"
"                             mote host was completed. (Added in 7.19.0)\n"
"\n"
"              time_connect   The time, in seconds, it took from the start  un-\n"
"                             til the TCP connect to the remote host (or proxy)\n"
, stdout);
 fputs(
"                             was completed.\n"
"\n"
"              time_namelookup\n"
"                             The time, in seconds, it took from the start  un-\n"
"                             til the name resolving was completed.\n"
"\n"
"              time_pretransfer\n"
"                             The  time, in seconds, it took from the start un-\n"
"                             til the file transfer was just  about  to  begin.\n"
"                             This includes all pre-transfer commands and nego-\n"
, stdout);
 fputs(
"                             tiations that are specific to the particular pro-\n"
"                             tocol(s) involved.\n"
"\n"
"              time_redirect  The time, in seconds, it took for all redirection\n"
"                             steps including name lookup, connect, pretransfer\n"
"                             and  transfer  before  the  final transaction was\n"
"                             started. time_redirect shows the complete  execu-\n"
, stdout);
 fputs(
"                             tion  time  for  multiple redirections. (Added in\n"
"                             7.12.3)\n"
"\n"
"              time_starttransfer\n"
"                             The time, in seconds, it took from the start  un-\n"
"                             til  the  first  byte was just about to be trans-\n"
"                             ferred. This includes time_pretransfer  and  also\n"
"                             the  time  the server needed to calculate the re-\n"
, stdout);
 fputs(
"                             sult.\n"
"\n"
"              time_total     The total time, in seconds, that the full  opera-\n"
"                             tion lasted.\n"
"\n"
"              url_effective  The URL that was fetched last. This is most mean-\n"
"                             ingful if you've told curl  to  follow  location:\n"
"                             headers.\n"
"\n"
"              If this option is used several times, the last one will be used.\n"
"\n"
"       --xattr\n"
, stdout);
 fputs(
"              When  saving  output  to a file, this option tells curl to store\n"
"              certain file metadata in extended  file  attributes.  Currently,\n"
"              the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
"              the content type is stored in the mime_type  attribute.  If  the\n"
"              file  system  does not support extended attributes, a warning is\n"
"              issued.\n"
"\n"
"FILES\n"
"       ~/.curlrc\n"
, stdout);
 fputs(
"              Default config file, see -K, --config for details.\n"
"\n"
"ENVIRONMENT\n"
"       The environment variables can be specified in lower case or upper case.\n"
"       The lower case version has precedence. http_proxy is an exception as it\n"
"       is only available in lower case.\n"
"\n"
"       Using an environment variable to set the proxy has the same  effect  as\n"
"       using the -x, --proxy option.\n"
"\n"
"       http_proxy [protocol://]<host>[:port]\n"
"              Sets the proxy server to use for HTTP.\n"
, stdout);
 fputs(
"       HTTPS_PROXY [protocol://]<host>[:port]\n"
"              Sets the proxy server to use for HTTPS.\n"
"\n"
"       [url-protocol]_PROXY [protocol://]<host>[:port]\n"
"              Sets  the proxy server to use for [url-protocol], where the pro-\n"
"              tocol is a protocol that curl supports and  as  specified  in  a\n"
"              URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP etc.\n"
"\n"
"       ALL_PROXY [protocol://]<host>[:port]\n"
"              Sets  the  proxy  server to use if no protocol-specific proxy is\n"
, stdout);
 fputs(
"              set.\n"
"\n"
"       NO_PROXY <comma-separated list of hosts/domains>\n"
"              list of host names that shouldn't go through any proxy.  If  set\n"
"              to an asterisk '*' only, it matches all hosts. Each name in this\n"
"              list is matched as either a domain name which contains the host-\n"
"              name, or the hostname itself.\n"
"\n"
"              This  environment  variable  disables use of the proxy even when\n"
, stdout);
 fputs(
"              specified with the -x,  --proxy  option.  That  is  NO_PROXY=di-\n"
"              rect.example.com  curl  -x  http://proxy.example.com  http://di-\n"
"              rect.example.com  accesses  the   target   URL   directly,   and\n"
"              NO_PROXY=direct.example.com   curl  -x  http://proxy.example.com\n"
"              http://somewhere.example.com accesses the target URL through the\n"
"              proxy.\n"
"\n"
"              The  list  of  host  names  can also be include numerical IP ad-\n"
, stdout);
 fputs(
"              dresses, and IPv6 versions should then be given without  enclos-\n"
"              ing brackets.\n"
"\n"
"PROXY PROTOCOL PREFIXES\n"
"       Since  curl  version  7.21.7,  the proxy string may be specified with a\n"
"       protocol:// prefix to specify alternative proxy protocols.\n"
"\n"
"       If no protocol is specified in  the  proxy  string  or  if  the  string\n"
"       doesn't  match  a  supported  one, the proxy will be treated as an HTTP\n"
"       proxy.\n"
"\n"
, stdout);
 fputs(
"       The supported proxy protocol prefixes are as follows:\n"
"\n"
"       http://\n"
"              Makes it use it as an HTTP proxy. The default if no scheme  pre-\n"
"              fix is used.\n"
"\n"
"       https://\n"
"              Makes it treated as an HTTPS proxy.\n"
"\n"
"       socks4://\n"
"              Makes it the equivalent of --socks4\n"
"\n"
"       socks4a://\n"
"              Makes it the equivalent of --socks4a\n"
"\n"
"       socks5://\n"
"              Makes it the equivalent of --socks5\n"
"\n"
"       socks5h://\n"
, stdout);
 fputs(
"              Makes it the equivalent of --socks5-hostname\n"
"\n"
"EXIT CODES\n"
"       There  are a bunch of different error codes and their corresponding er-\n"
"       ror messages that may appear during bad conditions. At the time of this\n"
"       writing, the exit codes are:\n"
"\n"
"       1      Unsupported protocol. This build of curl has no support for this\n"
"              protocol.\n"
"\n"
"       2      Failed to initialize.\n"
"\n"
"       3      URL malformed. The syntax was not correct.\n"
"\n"
, stdout);
 fputs(
"       4      A feature or option that was needed to perform the  desired  re-\n"
"              quest  was not enabled or was explicitly disabled at build-time.\n"
"              To make curl able to do this, you probably need another build of\n"
"              libcurl!\n"
"\n"
"       5      Couldn't  resolve  proxy.  The given proxy host could not be re-\n"
"              solved.\n"
"\n"
"       6      Couldn't resolve host. The given remote host was not resolved.\n"
"\n"
"       7      Failed to connect to host.\n"
"\n"
, stdout);
 fputs(
"       8      Weird server reply. The server sent data curl couldn't parse.\n"
"\n"
"       9      FTP access denied. The server denied login or denied  access  to\n"
"              the  particular  resource or directory you wanted to reach. Most\n"
"              often you tried to change to a directory that doesn't  exist  on\n"
"              the server.\n"
"\n"
"       10     FTP  accept failed. While waiting for the server to connect back\n"
"              when an active FTP session is used, an error code was sent  over\n"
, stdout);
 fputs(
"              the control connection or similar.\n"
"\n"
"       11     FTP  weird PASS reply. Curl couldn't parse the reply sent to the\n"
"              PASS request.\n"
"\n"
"       12     During an active FTP session while waiting  for  the  server  to\n"
"              connect back to curl, the timeout expired.\n"
"\n"
"       13     FTP  weird PASV reply, Curl couldn't parse the reply sent to the\n"
"              PASV request.\n"
"\n"
"       14     FTP weird 227 format.  Curl  couldn't  parse  the  227-line  the\n"
, stdout);
 fputs(
"              server sent.\n"
"\n"
"       15     FTP  can't  get host. Couldn't resolve the host IP we got in the\n"
"              227-line.\n"
"\n"
"       16     HTTP/2 error. A problem was detected in the HTTP2 framing layer.\n"
"              This is somewhat generic and can be one out of several problems,\n"
"              see the error message for details.\n"
"\n"
"       17     FTP couldn't set binary. Couldn't change transfer method to  bi-\n"
"              nary.\n"
"\n"
, stdout);
 fputs(
"       18     Partial file. Only a part of the file was transferred.\n"
"\n"
"       19     FTP  couldn't download/access the given file, the RETR (or simi-\n"
"              lar) command failed.\n"
"\n"
"       21     FTP quote error. A quote command returned error from the server.\n"
"       22     HTTP page not retrieved. The requested url was not found or  re-\n"
"              turned  another  error  with  the  HTTP  error code being 400 or\n"
"              above. This return code only appears if -f, --fail is used.\n"
"\n"
, stdout);
 fputs(
"       23     Write error. Curl couldn't write data to a local  filesystem  or\n"
"              similar.\n"
"\n"
"       25     FTP  couldn't  STOR  file. The server denied the STOR operation,\n"
"              used for FTP uploading.\n"
"\n"
"       26     Read error. Various reading problems.\n"
"\n"
"       27     Out of memory. A memory allocation request failed.\n"
"\n"
"       28     Operation timeout. The specified time-out period was reached ac-\n"
"              cording to the conditions.\n"
"\n"
, stdout);
 fputs(
"       30     FTP  PORT  failed.  The PORT command failed. Not all FTP servers\n"
"              support the PORT command, try doing a transfer  using  PASV  in-\n"
"              stead!\n"
"\n"
"       31     FTP  couldn't use REST. The REST command failed. This command is\n"
"              used for resumed FTP transfers.\n"
"\n"
"       33     HTTP range error. The range \"command\" didn't work.\n"
"\n"
"       34     HTTP post error. Internal post-request generation error.\n"
"\n"
, stdout);
 fputs(
"       35     SSL connect error. The SSL handshaking failed.\n"
"\n"
"       36     Bad download resume. Couldn't continue an earlier aborted  down-\n"
"              load.\n"
"\n"
"       37     FILE couldn't read file. Failed to open the file. Permissions?\n"
"\n"
"       38     LDAP cannot bind. LDAP bind operation failed.\n"
"\n"
"       39     LDAP search failed.\n"
"\n"
"       41     Function not found. A required LDAP function was not found.\n"
"\n"
"       42     Aborted by callback. An application told curl to abort the oper-\n"
, stdout);
 fputs(
"              ation.\n"
"\n"
"       43     Internal error. A function was called with a bad parameter.\n"
"\n"
"       45     Interface error. A specified outgoing  interface  could  not  be\n"
"              used.\n"
"\n"
"       47     Too many redirects. When following redirects, curl hit the maxi-\n"
"              mum amount.\n"
"\n"
"       48     Unknown option specified to libcurl.  This  indicates  that  you\n"
"              passed  a weird option to curl that was passed on to libcurl and\n"
, stdout);
 fputs(
"              rejected. Read up in the manual!\n"
"\n"
"       49     Malformed telnet option.\n"
"\n"
"       51     The peer's SSL certificate or SSH MD5 fingerprint was not OK.\n"
"\n"
"       52     The server didn't reply anything, which here  is  considered  an\n"
"              error.\n"
"\n"
"       53     SSL crypto engine not found.\n"
"\n"
"       54     Cannot set SSL crypto engine as default.\n"
"\n"
"       55     Failed sending network data.\n"
"\n"
"       56     Failure in receiving network data.\n"
"\n"
, stdout);
 fputs(
"       58     Problem with the local certificate.\n"
"\n"
"       59     Couldn't use specified SSL cipher.\n"
"\n"
"       60     Peer  certificate cannot be authenticated with known CA certifi-\n"
"              cates.\n"
"\n"
"       61     Unrecognized transfer encoding.\n"
"\n"
"       62     Invalid LDAP URL.\n"
"\n"
"       63     Maximum file size exceeded.\n"
"\n"
"       64     Requested FTP SSL level failed.\n"
"\n"
"       65     Sending the data requires a rewind that failed.\n"
"\n"
"       66     Failed to initialise SSL Engine.\n"
"\n"
, stdout);
 fputs(
"       67     The user name, password, or similar was not  accepted  and  curl\n"
"              failed to log in.\n"
"\n"
"       68     File not found on TFTP server.\n"
"\n"
"       69     Permission problem on TFTP server.\n"
"\n"
"       70     Out of disk space on TFTP server.\n"
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
"\n"
"       78     The resource referenced in the URL does not exist.\n"
"\n"
"       79     An unspecified error occurred during the SSH session.\n"
"\n"
"       80     Failed to shut down the SSL connection.\n"
"\n"
"       82     Could not load CRL file,  missing  or  wrong  format  (added  in\n"
"              7.19.0).\n"
"\n"
"       83     Issuer check failed (added in 7.19.0).\n"
"\n"
, stdout);
 fputs(
"       84     The FTP PRET command failed\n"







|







4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
"\n"
"       78     The resource referenced in the URL does not exist.\n"
"\n"
"       79     An unspecified error occurred during the SSH session.\n"
"\n"
"       80     Failed to shut down the SSL connection.\n"
"\n"
"       82     Could  not  load  CRL  file,  missing  or wrong format (added in\n"
"              7.19.0).\n"
"\n"
"       83     Issuer check failed (added in 7.19.0).\n"
"\n"
, stdout);
 fputs(
"       84     The FTP PRET command failed\n"
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
"\n"
, stdout);
 fputs(
"       XX     More error codes will appear here in future releases. The exist-\n"
"              ing ones are meant to never change.\n"
"\n"
"AUTHORS / CONTRIBUTORS\n"
"       Daniel Stenberg is the main author, but the whole list of  contributors\n"
"       is found in the separate THANKS file.\n"
"\n"
"WWW\n"
"       https://curl.haxx.se\n"
"\n"
"SEE ALSO\n"
"       ftp(1), wget(1)\n"







|







4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
"\n"
, stdout);
 fputs(
"       XX     More error codes will appear here in future releases. The exist-\n"
"              ing ones are meant to never change.\n"
"\n"
"AUTHORS / CONTRIBUTORS\n"
"       Daniel  Stenberg is the main author, but the whole list of contributors\n"
"       is found in the separate THANKS file.\n"
"\n"
"WWW\n"
"       https://curl.haxx.se\n"
"\n"
"SEE ALSO\n"
"       ftp(1), wget(1)\n"
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411

4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423


4424
4425
4426
4427
4428
4429


4430

4431

4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448

4449
4450
4451
4452
4453
4454

4455
4456
4457
4458
4459
4460
4461
4462
4463

4464
4465
4466
4467
4468

4469
4470
4471
4472
4473
4474
4475
4476

4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492

4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516

4517

4518
4519
4520
4521
4522
4523
4524
4525
4526
4527

4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540

4541

4542
4543

4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554

4555
4556
4557
4558
4559

4560

4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589

4590
4591
4592
4593
4594
4595
4596
4597
4598
4599


4600
4601
4602
4603

4604
4605
4606
4607
4608
4609
4610
4611
4612
4613

4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624

4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638

4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675

4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687

4688
4689



4690

4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703

4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718

4719
4720
4721
4722
4723
4724
4725
4726
4727


4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745




4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757


4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769

4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800

4801
4802
4803
4804
4805
4806
4807




4808
4809
4810
4811
4812
4813
4814
4815
4816
4817

4818
4819
4820
4821
4822
4823
4824

4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838

4839
4840
4841

4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859

4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876


4877
4878
4879

4880
4881
4882
4883
4884
4885
4886
4887

4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914


4915
4916


4917


4918

4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945

4946
4947


4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967



4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979


4980

4981

4982
4983
4984


4985
4986
4987
4988
4989
4990

4991
4992
4993
4994

4995

4996
4997
4998
4999
5000
5001
5002
5003

5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027

5028
5029




5030


5031
5032
5033
5034
5035

5036
5037


5038
5039
5040
5041
5042
5043
5044
5045

5046
5047
5048

5049
5050
5051
5052
5053
5054
5055
5056
5057




5058
5059
5060
5061
5062
5063
5064

5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079

5080

5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091


5092


5093
5094
5095

5096

5097
5098
5099

5100
5101
5102
5103
5104

5105
5106
5107

5108
5109

5110
5111

5112
5113
5114
5115
5116
5117
5118
5119



5120
5121
5122
5123
5124
5125
5126
5127

5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147

5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180




5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191

5192
5193
5194
5195
5196
5197
5198
5199

5200
5201
5202
5203

5204
5205
5206
5207
5208
5209
5210
5211
5212
5213

5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230

5231
5232
5233
5234
5235
5236

5237
5238
5239
5240
5241
5242
5243

5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304


5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324

5325
5326
5327
5328

5329
5330
5331
5332
5333
5334
5335
5336
5337

5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364

5365
5366
5367
5368
5369
5370
5371
5372
5373

5374
5375

5376
5377

5378
5379
5380
5381

5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401


5402
5403
5404
5405
5406
5407
5408
5409
5410
5411


5412
5413
5414

5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431

5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443

5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460

5461
5462
5463
5464
5465
5466
5467
5468

5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491

5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506

5507
5508

5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519

5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542

5543
5544

5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561

5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575

5576
5577
5578
5579
5580
5581
5582
5583
5584
5585

5586

5587
5588
5589
5590
5591
5592

5593
5594
5595

5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613

5614
5615
5616
5617



5618
5619
5620
5621
5622
5623
5624

5625

5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642


5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663

5664
5665
5666
5667
5668
5669
5670

5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706

5707

5708
5709


5710
5711
5712
5713
5714
5715
5716
5717


5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728

5729
5730
5731
5732
5733
5734



5735
5736
5737
5738
5739

5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756

5757

5758


5759
5760
5761
5762
5763
5764
5765
5766
5767
5768

5769

5770
5771
5772
5773

5774
5775
5776

5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801


5802
5803
5804
5805
5806

5807
5808
5809
5810
5811

5812
5813
5814
5815
5816
5817
5818
5819

5820

5821
5822
5823
5824
5825

5826
5827
5828


5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843

5844
5845
5846
5847
5848
5849

5850
5851
5852
5853
5854

5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875


5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891

5892
5893
5894
5895
5896

5897
5898
5899
5900
5901

5902
5903

5904
5905

5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926


5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943

5944
5945
5946
5947

5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959

5960
5961
5962
5963
5964
5965
5966
5967

5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978

5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997

5998
5999
6000
6001
6002
6003
6004

6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045

6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062

6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103

6104
6105
6106
6107
6108
6109
6110
6111
6112

6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124

6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141

6142
6143
6144
6145
6146
6147
6148
6149

6150
6151
6152

6153
6154
6155
6156
6157
6158
6159
6160

6161
6162
6163
6164
6165
6166

6167

6168
6169
6170
6171
6172
6173
6174



6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187

6188
6189
6190
6191
6192
6193

6194
6195


6196
6197

6198

6199

6200
6201
6202
6203
6204
6205
6206
6207
6208
6209

6210
6211
6212
6213
6214
6215
6216
6217
6218
6219

6220
6221
6222
6223
6224
6225
6226

6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262

6263

6264

6265
6266



6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280



6281
6282
6283
6284
6285
6286
6287
6288

6289
6290
6291
6292
6293
6294
6295
6296
6297




6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310

6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335


6336
6337
6338
6339
6340
6341
6342

6343
6344
6345
6346
6347

6348
6349
6350
6351


6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368

6369
6370
6371
6372
6373
6374

6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392


6393
6394
6395
6396
6397


6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425

6426
6427
6428
6429
6430
6431
6432
6433
6434

6435
6436
6437
6438
6439
6440
6441
6442
6443

6444
6445

6446
6447
6448
6449
6450
6451
6452
6453

6454
6455
6456
6457
6458
6459

6460
6461
6462
6463
6464
6465
6466
6467
6468

6469
6470
6471
6472

6473
6474
6475
6476

6477
6478
6479
6480
6481


6482
6483
6484


6485
6486
6487
6488
6489
6490
6491
6492
6493
6494


6495

6496
6497
6498
6499
6500


6501
6502
6503

6504
6505
6506
6507
6508


6509

6510
6511

6512


6513

6514
6515
6516
6517
6518
6519
6520

6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565

6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608

6609
6610
6611
6612
6613
6614
6615

6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628

6629
6630
6631
6632
6633

6634
6635
6636
6637
6638


6639
6640
6641
6642
6643
6644

6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676

6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688

6689
6690
6691
6692
6693
6694
6695
6696

6697
6698




6699
6700
6701


6702
6703
6704
6705
6706
6707
6708


6709
6710
6711
6712
6713


6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727

6728
6729


6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755

6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767

6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778

6779

6780

6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804

6805
6806
6807
6808
6809
6810
6811

6812

6813


6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838

6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854

6855
6856
6857
6858
6859
6860
6861
6862
6863

6864
6865
6866
6867
6868
6869


6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882

6883
6884
6885
6886


6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911

6912
6913
6914
6915

6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927

6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944

6945
6946
6947
6948

6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966

6967

6968
6969
6970
6971
6972
6973
6974
6975

6976
6977
6978
6979
6980
6981
6982
6983
6984
6985

6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003


7004
7005
7006
7007
7008
7009
7010
7011

7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022

7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048

7049

7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061

7062
7063
7064
7065
7066
7067
7068

7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082

7083
7084

7085
7086


7087

7088
7089
7090
7091
7092
7093
7094
7095
7096
7097

7098
7099
7100
7101

7102
7103
7104
7105

7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126

7127
7128
7129
7130
7131

7132
7133
7134
7135
7136
7137
7138
7139

7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152

7153
7154
7155
7156

7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174

7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185

7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202

7203
7204
7205
7206
7207
7208
7209
7210
7211
7212

7213


7214

7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230

7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247

7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275

7276
7277
7278
7279
7280
7281
7282
7283

7284
7285
7286
7287
7288
7289
7290


7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345

7346
7347

7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391

7392
7393

7394
7395
7396
7397
7398
7399

7400
7401
7402
7403
7404
7405
7406
7407
7408
7409

7410
7411
7412
7413
7414
7415
7416
7417
7418
7419

7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451

7452

7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465

7466
7467
7468
7469
7470

7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499


7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526

7527
7528

7529
7530
7531
7532
7533
7534

7535
7536
7537
7538
7539
7540
7541
7542
7543

7544
7545

7546
7547


7548
7549
7550
7551
7552
7553

7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572


7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585

7586


7587
7588
7589
7590
7591
7592
7593

7594
7595
7596
7597
7598
7599

7600
7601

7602
7603
7604

7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616

7617
7618
7619
7620
7621
7622
7623
7624
7625


7626
7627

7628
7629
7630
7631
7632
7633
7634


7635
7636
7637
7638
7639
7640
7641

7642

7643

7644
7645
7646
7647

7648
7649
7650
7651
7652
7653
7654
7655
7656
7657


7658
7659
7660
7661
7662
7663
7664

7665
7666
7667
7668
7669
7670
7671

7672
7673
7674
7675
7676
7677
7678
7679

7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692

7693
7694
7695
7696

7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708

7709

7710
7711
7712
7713
7714
7715

7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731

7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752

7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770

7771

7772
7773
7774
7775
7776

7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830

7831
7832
7833
7834
7835
7836
7837
7838
7839

7840

7841
7842


7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877

7878
7879
7880

7881
7882
7883
7884
7885
7886
7887
7888
7889
7890

7891
7892
7893
7894
7895
7896
7897
7898
7899
7900

7901

7902
7903
7904
7905


7906
7907
7908
7909
7910
7911
7912
7913
7914
7915

7916
7917
7918
7919
7920
7921
7922
7923
7924
7925

7926
7927
7928
7929
7930

7931
7932
7933
7934
7935

7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954
7955
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966

7967
7968
7969
7970
7971
7972
7973
7974


7975
7976
7977
7978
7979
7980
7981
7982
7983
7984
7985
7986
7987
7988
7989

7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000
8001
8002
8003
8004
8005

8006

8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023


8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043

8044
8045
8046
8047
8048
8049
8050
8051
8052

8053

8054
8055


8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118

8119
8120
8121
8122
8123
8124
8125
8126




8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144
8145
8146
8147
8148
8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170

8171
8172
8173
8174
8175
8176
8177
8178
8179
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191
8192
8193

8194
8195
8196
8197
8198

8199
8200
8201
8202
8203
8204
8205
8206
8207
8208
8209
8210
8211


8212
8213
8214
8215
8216
8217
8218
8219

8220
8221
8222

8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235
8236
8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250


8251
8252
8253
8254
8255

8256


8257
8258
8259

8260
8261
8262
8263
8264
8265
8266
8267
8268
8269
8270
8271
8272
8273
8274
8275
8276
8277
8278
8279
8280

8281
8282
8283

8284
8285
8286
8287
8288
8289
8290

8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301


8302
8303
8304
8305
8306
8307
8308

8309
8310
8311

8312
8313
8314
8315
8316
8317
8318
8319
8320

8321
8322
8323
8324
8325
8326
8327
8328
8329
8330
8331
8332
8333
8334
8335
8336
8337
8338
8339
8340
8341
8342
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352
8353

8354
8355
8356
8357
8358
8359
8360
8361
8362

8363

8364
8365
8366
8367
8368
8369

8370
8371
8372
8373
8374
8375
8376
8377
8378
8379
8380
8381
8382
 */
#ifdef USE_MANUAL
#include "tool_hugehelp.h"
#include <zlib.h>
#include "memdebug.h" /* keep this as LAST include */
static const unsigned char hugehelpgz[] = {
  /* This mumbo-jumbo is the huge help text compressed with gzip.
     Thanks to this operation, the size of this data shrank from 169779
     to 47597 bytes. You can disable the use of compressed help
     texts by NOT passing -c to the mkhelp.pl tool. */
  0x1f, 0x8b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xed, 0xbd,
  0x6b, 0x77, 0xdb, 0x46, 0x96, 0x2e, 0xfc, 0x3d, 0xbf, 0x02, 0xcd, 0x5e,
  0x7d, 0x24, 0x4d, 0x93, 0xd4, 0xdd, 0x8e, 0x15, 0x39, 0x13, 0x45, 0x96,

  0x63, 0x4d, 0x64, 0x49, 0x23, 0xca, 0x49, 0xfa, 0x24, 0x59, 0x5e, 0x20,
  0x09, 0x52, 0x68, 0x91, 0x00, 0x1b, 0x00, 0x75, 0xe9, 0x9e, 0x3e, 0xbf,
  0xfd, 0xdd, 0xd7, 0xaa, 0x02, 0xaa, 0x40, 0x29, 0xe9, 0x38, 0x73, 0x2e,
  0x6f, 0xcf, 0x9a, 0xd8, 0x96, 0x80, 0x42, 0x5d, 0x76, 0xed, 0xfb, 0x7e,
  0x76, 0x14, 0x3d, 0xf5, 0xbf, 0x8f, 0xf4, 0xff, 0x1f, 0xe1, 0x7f, 0xf0,
  0xe7, 0x67, 0x51, 0x74, 0x59, 0xe4, 0x7f, 0x4d, 0x46, 0x55, 0xf8, 0xd9,
  0x8f, 0x1f, 0xff, 0x2b, 0xe2, 0xff, 0x83, 0x77, 0x7e, 0x82, 0x3f, 0x3f,
  0x5b, 0x39, 0xf6, 0x66, 0x64, 0x5f, 0xf8, 0xaf, 0x8f, 0x1b, 0xd1, 0x53,
  0x2f, 0xfc, 0x57, 0xb4, 0x4e, 0x2f, 0x7c, 0x94, 0x2f, 0x1c, 0xe2, 0xdf,
  0x3f, 0x7e, 0x5c, 0xfd, 0x91, 0x9f, 0x70, 0x56, 0xf8, 0x9f, 0x4d, 0x7c,
  0xef, 0xa7, 0x8f, 0xf8, 0x57, 0xf8, 0xc9, 0x67, 0x9f, 0x9d, 0x1f, 0xbd,
  0x3f, 0xd1, 0x57, 0x47, 0xcb, 0x62, 0x16, 0xf5, 0xa2, 0xaa, 0x88, 0xb3,


  0x72, 0x92, 0x14, 0x51, 0x1c, 0x7d, 0xb8, 0x3a, 0xfb, 0xec, 0xb3, 0xc1,
  0x5f, 0xce, 0x2f, 0x2e, 0x07, 0xa7, 0x83, 0xda, 0x63, 0x3f, 0xe6, 0x8b,
  0x2a, 0xcd, 0xb3, 0x12, 0xa6, 0x0f, 0x0f, 0x95, 0x3f, 0x7f, 0xf6, 0xd9,
  0x9b, 0x93, 0xc1, 0xf1, 0xd5, 0xe9, 0xe5, 0xf5, 0xe9, 0xc5, 0x79, 0xed,
  0xc9, 0x28, 0x2d, 0x23, 0x18, 0xaa, 0xca, 0xf3, 0x19, 0xfc, 0xc7, 0x8e,
  0x3e, 0x8e, 0xab, 0x38, 0x9a, 0x14, 0xf9, 0x3c, 0xca, 0x0b, 0xfc, 0x45,


  0x1c, 0x95, 0x49, 0x71, 0x97, 0x14, 0xdd, 0x68, 0x59, 0xa6, 0xd9, 0x34,

  0xca, 0xb3, 0x24, 0xca, 0x27, 0x51, 0x75, 0x93, 0xe8, 0x70, 0xe5, 0x72,

  0xb1, 0xc8, 0x8b, 0x2a, 0x19, 0x47, 0x8b, 0x22, 0xaf, 0xf2, 0x51, 0x3e,
  0x2b, 0xa3, 0xf5, 0x37, 0xa7, 0xc7, 0xd7, 0xdd, 0xe8, 0xed, 0xe9, 0xd9,
  0x09, 0xfc, 0xf7, 0xfa, 0x92, 0xfe, 0x33, 0xe8, 0x46, 0xdf, 0x5c, 0x5c,
  0xbe, 0x3b, 0xb9, 0xea, 0x46, 0xef, 0xae, 0xf1, 0x67, 0xf8, 0x5f, 0xf8,
  0x61, 0x74, 0xfa, 0xfe, 0xe8, 0xb2, 0xab, 0xc3, 0xe1, 0x3f, 0xf0, 0x87,
  0x67, 0x6f, 0xe0, 0x87, 0xfc, 0x07, 0xfe, 0xf3, 0xf2, 0xe2, 0x72, 0x57,
  0xfe, 0xc0, 0x7f, 0x5e, 0x5d, 0xbf, 0x87, 0xdf, 0x5e, 0x5d, 0x0f, 0xe0,
  0xbf, 0x83, 0x63, 0xfc, 0x0f, 0x7d, 0x65, 0xf0, 0xfe, 0x6b, 0xfa, 0xcf,
  0xc0, 0x0c, 0x37, 0x78, 0xcf, 0x3f, 0xa7, 0x2f, 0x5d, 0x9f, 0x9c, 0x9d,
  0x9f, 0x5c, 0x47, 0x71, 0x36, 0x8e, 0xae, 0xe1, 0xf9, 0x8d, 0x7e, 0x74,
  0x7d, 0x93, 0x44, 0xa3, 0x7c, 0x3e, 0xc7, 0x1f, 0xc1, 0x8e, 0x8c, 0x93,
  0x32, 0x9d, 0x66, 0xb0, 0x14, 0x58, 0xf9, 0x7d, 0x5e, 0xdc, 0x46, 0xd1,
  0x7d, 0x5a, 0xdd, 0xe4, 0xcb, 0x4a, 0x87, 0x5b, 0xc2, 0x6e, 0x44, 0x69,
  0x56, 0x25, 0x45, 0x3c, 0xc2, 0x9d, 0xee, 0x7f, 0x56, 0xdb, 0xd5, 0x7c,
  0x02, 0x7b, 0x58, 0xc2, 0xa6, 0x0d, 0x97, 0xe5, 0x2c, 0x8f, 0xc7, 0xb8,
  0x55, 0xf0, 0xca, 0x64, 0x09, 0x9b, 0x5c, 0xa4, 0xa3, 0xdb, 0x32, 0x9a,
  0xa5, 0xb7, 0x09, 0x6e, 0xd4, 0xc3, 0xa3, 0x6e, 0x5c, 0x97, 0x07, 0x8d,

  0x97, 0xb0, 0xa7, 0x59, 0x4f, 0x87, 0xab, 0xd2, 0x51, 0x8c, 0x1f, 0xa0,
  0x9d, 0x8b, 0x96, 0x0b, 0x1c, 0x8d, 0x77, 0x2c, 0x5a, 0xe4, 0x25, 0xbc,
  0x34, 0x18, 0x9c, 0xc1, 0xcc, 0xb3, 0x2c, 0xa1, 0x79, 0x94, 0x5d, 0xf8,
  0x47, 0x7e, 0x9b, 0x26, 0xf0, 0x97, 0x49, 0x3a, 0x4b, 0x22, 0x3e, 0x51,
  0x33, 0x1c, 0x1e, 0x6d, 0x54, 0x24, 0xe5, 0x72, 0x9e, 0xc0, 0xee, 0xbd,
  0x4f, 0xaa, 0x78, 0x96, 0x66, 0xb7, 0xf0, 0x57, 0x5c, 0xf8, 0x3c, 0x2f,

  0x92, 0x7e, 0x74, 0x54, 0x46, 0x8f, 0xf9, 0x12, 0x16, 0x3c, 0x9b, 0xc1,
  0x99, 0x27, 0xd1, 0x30, 0x99, 0xe5, 0xf7, 0x5d, 0x3c, 0xe9, 0x28, 0x5b,
  0xce, 0x87, 0x30, 0x40, 0x3e, 0xb1, 0xc3, 0xc5, 0xd5, 0x12, 0x86, 0xe3,
  0xa7, 0xe7, 0x31, 0xac, 0x09, 0xde, 0x2d, 0xa2, 0x9b, 0x04, 0xd6, 0x5c,
  0x2e, 0xd2, 0xec, 0x0f, 0xf5, 0x7d, 0x81, 0xad, 0x5d, 0xe4, 0xf7, 0x49,
  0x01, 0x3b, 0x3b, 0x7c, 0x8c, 0x60, 0x13, 0x86, 0x4c, 0x84, 0x13, 0x20,
  0xb2, 0x28, 0x86, 0x21, 0x0c, 0x01, 0xf6, 0x8a, 0x64, 0x16, 0x23, 0x31,
  0x99, 0x6f, 0xf4, 0xe1, 0x10, 0x13, 0x43, 0x6d, 0xf2, 0xea, 0xfa, 0xee,
  0x06, 0xbd, 0x3c, 0x86, 0x95, 0xa4, 0xb3, 0x12, 0x8e, 0x01, 0x2f, 0x85,

  0x3c, 0x83, 0x87, 0x8a, 0xf4, 0x0f, 0xb4, 0xf9, 0x98, 0x55, 0xf1, 0x03,
  0x7d, 0x5e, 0x68, 0xb3, 0x37, 0x4e, 0x16, 0x49, 0x36, 0x4e, 0xb2, 0xaa,
  0x1f, 0xfd, 0x25, 0x5f, 0xae, 0xc1, 0xb7, 0x27, 0x29, 0xec, 0x41, 0x2c,
  0x43, 0xc1, 0x97, 0x81, 0x08, 0x46, 0x45, 0xba, 0x70, 0x8e, 0x22, 0xcf,
  0xe0, 0xcc, 0xa3, 0xab, 0xb7, 0xc7, 0xd1, 0xee, 0xab, 0xcf, 0x5f, 0xd8,

  0x33, 0x87, 0x01, 0xa2, 0x51, 0x9c, 0xc1, 0x8a, 0x93, 0x51, 0x3a, 0x79,
  0x8c, 0xe6, 0xcb, 0x59, 0x95, 0x2e, 0x60, 0xf7, 0xf1, 0xf2, 0xe1, 0x05,
  0x5a, 0xc4, 0x45, 0x55, 0x22, 0x11, 0xd0, 0x0f, 0x68, 0xed, 0xf7, 0x45,
  0x5a, 0xe1, 0x45, 0xa2, 0xdf, 0xc1, 0x0c, 0x93, 0xaa, 0xd4, 0xe1, 0x90,
  0xd6, 0xe0, 0x3b, 0x43, 0xa0, 0x2d, 0xd8, 0xda, 0xb8, 0x84, 0x8f, 0x1e,
  0x7c, 0x66, 0x39, 0xc8, 0x4d, 0x55, 0x2d, 0x0e, 0x36, 0x37, 0xcb, 0xb4,
  0x4a, 0xfa, 0xff, 0x80, 0x7b, 0xd8, 0xad, 0xee, 0xf3, 0x6e, 0x75, 0x53,
  0x24, 0xc9, 0x3f, 0xfb, 0x40, 0xc3, 0xe6, 0x49, 0xf8, 0xee, 0xa3, 0x4c,

  0x6c, 0x9a, 0x54, 0xf0, 0x85, 0xbf, 0x2d, 0x93, 0x0c, 0x47, 0x84, 0x79,
  0xc4, 0xb3, 0xc5, 0x4d, 0x0c, 0xc7, 0x99, 0x00, 0x35, 0xe2, 0xcd, 0x06,
  0x82, 0xc1, 0x59, 0xf1, 0xdd, 0xfe, 0xf1, 0x67, 0xff, 0xa3, 0x13, 0xfa,
  0x26, 0xfc, 0xb7, 0x9f, 0x3c, 0xc4, 0x73, 0x58, 0x1b, 0x7e, 0x6a, 0x13,
  0x49, 0xec, 0xc7, 0xed, 0xde, 0xf6, 0xd6, 0xd6, 0xcf, 0xfd, 0xea, 0xa1,
  0x7a, 0xde, 0xf3, 0x5b, 0x5b, 0xf6, 0x0d, 0x7c, 0x74, 0x1d, 0xd7, 0x1b,
  0xcd, 0x80, 0x64, 0xf0, 0xe3, 0x7f, 0x4f, 0x8a, 0xbc, 0xdc, 0x78, 0xde,
  0x48, 0x71, 0xef, 0xef, 0xf5, 0xef, 0x9e, 0x27, 0x25, 0xd1, 0x8c, 0x5d,
  0x6b, 0x14, 0x17, 0x40, 0xb7, 0x79, 0x65, 0xd9, 0x53, 0x17, 0x2e, 0x65,
  0x65, 0x76, 0x06, 0xee, 0x1c, 0x3c, 0x0d, 0x8c, 0x2d, 0x9e, 0x21, 0x4f,
  0x2b, 0xa3, 0x2c, 0x79, 0x30, 0xb7, 0x1c, 0x6e, 0x7f, 0x12, 0x8f, 0x6e,
  0xa2, 0x1c, 0x88, 0xbf, 0x08, 0x1c, 0x81, 0x3b, 0xa1, 0xb8, 0x18, 0xdd,
  0xa4, 0x77, 0xb0, 0x1b, 0xaf, 0x5e, 0xbd, 0xe8, 0xc1, 0x7f, 0x5e, 0xfd,
  0xbc, 0x79, 0x97, 0xcf, 0x60, 0x73, 0xf6, 0x7e, 0xde, 0xc4, 0x23, 0xfe,
  0x47, 0xdc, 0x1d, 0x76, 0x47, 0xff, 0xec, 0xdf, 0x54, 0xf3, 0x59, 0x2b,
  0xe1, 0xc4, 0x19, 0xfc, 0xff, 0x3c, 0x5f, 0x66, 0x95, 0x21, 0x16, 0xa0,

  0xb9, 0xca, 0x61, 0x4e, 0x70, 0x5d, 0xe1, 0x8e, 0x22, 0x69, 0x23, 0x0d,
  0xe1, 0xad, 0x83, 0x0b, 0x6a, 0xaf, 0x63, 0x35, 0xba, 0xc1, 0xf5, 0x03,
  0xf5, 0xc4, 0xb2, 0x09, 0x55, 0x1a, 0xe3, 0xcd, 0x04, 0x06, 0x81, 0x0c,
  0x8b, 0xc6, 0xe2, 0xaf, 0xa5, 0xf0, 0x60, 0x5e, 0x8c, 0x93, 0xa2, 0xdf,
  0x9c, 0x86, 0xb9, 0xb2, 0xce, 0x37, 0x23, 0x95, 0x28, 0xf8, 0x03, 0x9a,
  0xd8, 0x3c, 0x7d, 0x80, 0x11, 0x88, 0x61, 0x66, 0x34, 0x71, 0x1e, 0x2d,
  0xc2, 0x19, 0xd3, 0x67, 0xf4, 0x7d, 0x7b, 0x65, 0x61, 0xea, 0xb5, 0xa5,
  0xd3, 0x47, 0xed, 0xe2, 0x23, 0x38, 0xbc, 0x05, 0xbc, 0xb5, 0x44, 0xbe,
  0x4a, 0xd7, 0x1a, 0x87, 0x01, 0x86, 0x30, 0x85, 0x73, 0x81, 0xb3, 0x40,
  0x2a, 0xc6, 0xa3, 0x7a, 0x8c, 0xce, 0x81, 0x60, 0x98, 0x19, 0x39, 0xc4,
  0x3e, 0x4b, 0xaa, 0xea, 0xc9, 0x63, 0xb2, 0x14, 0x7b, 0xb0, 0xed, 0x11,
  0x6d, 0xdb, 0xf3, 0x40, 0x67, 0x07, 0x3b, 0xf5, 0x87, 0xbf, 0x07, 0x26,
  0x6d, 0xaf, 0x0b, 0x7c, 0xfd, 0x1f, 0xff, 0x74, 0xa8, 0xee, 0x1e, 0x7f,
  0x9b, 0x66, 0x77, 0xf9, 0x2d, 0x6c, 0x11, 0x49, 0xd1, 0xb8, 0xbe, 0x9b,
  0xc8, 0x87, 0xe6, 0x8b, 0xca, 0x88, 0x27, 0x24, 0x47, 0xf8, 0xd1, 0x30,
  0x1e, 0xce, 0x1e, 0xa3, 0x9b, 0xf8, 0x2e, 0xc1, 0xf5, 0x2e, 0x80, 0x4e,
  0x71, 0x07, 0x40, 0x6c, 0xcc, 0x88, 0x8f, 0x09, 0x63, 0x18, 0xe7, 0xcb,
  0x21, 0x30, 0x97, 0xbf, 0x2d, 0xf3, 0x8a, 0x37, 0x26, 0xbe, 0xcb, 0xd3,
  0x71, 0x4d, 0x16, 0xdf, 0x24, 0xc8, 0xd0, 0xf0, 0xc3, 0x24, 0xa4, 0x80,
  0xa1, 0xe2, 0x4c, 0xe9, 0xa2, 0xa5, 0x15, 0x8a, 0x3b, 0x60, 0x85, 0xf1,
  0xac, 0xcc, 0xa3, 0x68, 0x9a, 0xe3, 0x2d, 0x21, 0x06, 0x4c, 0x64, 0x0e,
  0x87, 0x72, 0x13, 0xa3, 0x54, 0x03, 0x01, 0x66, 0xee, 0x41, 0x91, 0x10,
  0x2f, 0xa6, 0x93, 0x8a, 0x67, 0x5d, 0x96, 0x5e, 0xf8, 0x8e, 0x6c, 0x55,
  0xb4, 0xf6, 0x3f, 0xd6, 0xba, 0xd1, 0xda, 0xbf, 0xaf, 0x11, 0x3d, 0xac,

  0xfd, 0xdb, 0x9a, 0x3d, 0x67, 0x50, 0xc6, 0xee, 0xd2, 0x71, 0xc2, 0x24,

  0x71, 0x7a, 0x79, 0xf7, 0x22, 0xfa, 0x3b, 0xea, 0x0e, 0xc0, 0x6b, 0x93,
  0x07, 0x25, 0x48, 0x5d, 0x1b, 0xbc, 0x1d, 0x01, 0xd3, 0x8d, 0x17, 0xa8,
  0x44, 0x24, 0xc5, 0x08, 0xa8, 0x37, 0x9e, 0x02, 0xbd, 0x82, 0x2c, 0xd6,
  0xe1, 0x70, 0x7c, 0x7c, 0x85, 0x97, 0x05, 0x0c, 0x32, 0xca, 0xe2, 0x39,
  0xdc, 0x88, 0x33, 0x9c, 0x51, 0x9a, 0xf9, 0x87, 0xf9, 0xe3, 0x24, 0xf9,
  0x7c, 0xeb, 0xe0, 0x60, 0xf7, 0x4f, 0x3b, 0xfb, 0x49, 0x75, 0xb3, 0xf5,
  0xf3, 0xa6, 0x79, 0xe4, 0x74, 0x42, 0xdb, 0xae, 0xe4, 0xa7, 0x93, 0x00,
  0x29, 0x6f, 0xa4, 0x04, 0xbc, 0x0f, 0x7f, 0x4f, 0x26, 0xe9, 0x43, 0x57,
  0xf5, 0x25, 0xbe, 0x73, 0x31, 0x90, 0x1a, 0x9c, 0x1f, 0xb2, 0x08, 0x1d,
  0x6e, 0xba, 0x4c, 0x4a, 0xd8, 0xc9, 0xfb, 0x9b, 0xb8, 0x8a, 0xcc, 0x00,

  0x7c, 0xb2, 0xf3, 0x74, 0x7a, 0x53, 0x45, 0xf7, 0x31, 0x0a, 0x9b, 0xd3,
  0x8a, 0x87, 0x40, 0x29, 0x0f, 0x22, 0x66, 0x12, 0x83, 0xac, 0xc0, 0x33,
  0x24, 0x91, 0x3e, 0xb4, 0x1a, 0x46, 0x05, 0x64, 0xce, 0x07, 0x62, 0xd5,
  0xa9, 0x61, 0x5c, 0xe2, 0xa5, 0xcd, 0x80, 0x39, 0x54, 0xa0, 0x23, 0x2c,
  0xf1, 0x5f, 0x37, 0xa0, 0x05, 0xd0, 0x1e, 0xc8, 0x44, 0x49, 0x50, 0xbe,
  0xc5, 0xe3, 0xc4, 0xb3, 0x31, 0xc2, 0x0b, 0x0e, 0xa9, 0x2b, 0xc7, 0x6c,
  0xde, 0x28, 0xe1, 0xc2, 0x01, 0x67, 0x32, 0x94, 0xd1, 0x41, 0x26, 0xdb,
  0xe1, 0x75, 0xd2, 0x1c, 0xe3, 0x12, 0x15, 0x05, 0x56, 0x07, 0x60, 0xf2,
  0xce, 0x62, 0x61, 0xd3, 0xe2, 0x5b, 0x54, 0x49, 0x1a, 0x8a, 0x0f, 0xbd,
  0x36, 0xce, 0x81, 0xc8, 0x60, 0xb6, 0xc0, 0x8c, 0x71, 0x65, 0xc8, 0x62,
  0x69, 0x57, 0x88, 0xc8, 0x61, 0x4c, 0xfc, 0x61, 0x5a, 0xa1, 0x8c, 0x21,
  0x1d, 0x16, 0xe6, 0x0b, 0x9b, 0x42, 0x8a, 0x28, 0x30, 0x6a, 0x67, 0xfd,
  0x24, 0x1e, 0xe1, 0xd9, 0xe8, 0x0e, 0xb4, 0x14, 0x50, 0x48, 0x13, 0xf3,

  0x16, 0xc9, 0xf3, 0x11, 0xea, 0x46, 0x33, 0xb8, 0x2f, 0xa3, 0xbc, 0x28,

  0x50, 0xdf, 0xc7, 0x13, 0x1c, 0x32, 0x13, 0x9d, 0x27, 0xa0, 0x46, 0xb8,
  0xdb, 0x99, 0xa2, 0x40, 0x03, 0xfe, 0x02, 0x7a, 0x09, 0x71, 0x10, 0xd0,

  0x1f, 0x88, 0xe7, 0xd3, 0xc2, 0x69, 0x76, 0x38, 0xf6, 0x68, 0x94, 0x2c,
  0xaa, 0x32, 0xb4, 0x26, 0x3d, 0x70, 0x98, 0x4e, 0x91, 0xe0, 0xce, 0xbb,
  0x4a, 0x17, 0xed, 0xab, 0x11, 0xfa, 0xa4, 0x77, 0xa9, 0x1e, 0x03, 0x7a,
  0x58, 0x69, 0x76, 0xad, 0x22, 0xda, 0x00, 0x36, 0x46, 0x7b, 0x3e, 0xc7,
  0x89, 0xe2, 0xc3, 0x25, 0xdf, 0x54, 0x62, 0xcd, 0x78, 0x90, 0xac, 0x69,
  0xf3, 0x77, 0x51, 0x74, 0xc1, 0x7e, 0x9a, 0xc1, 0xe1, 0xab, 0xe6, 0x4c,
  0xf1, 0xf3, 0xa8, 0xe2, 0x83, 0x24, 0x1f, 0x97, 0x37, 0xa0, 0x7c, 0x95,
  0x72, 0xb3, 0xd3, 0x39, 0xd0, 0xcc, 0x1d, 0x9e, 0xef, 0x22, 0x49, 0xc6,
  0xfd, 0xe8, 0x62, 0x82, 0x5c, 0xb5, 0x80, 0x49, 0x57, 0xf4, 0x6b, 0x94,
  0x2a, 0xb0, 0x6f, 0x63, 0x52, 0xe2, 0xcd, 0xd5, 0xe2, 0xa9, 0x38, 0xd2,
  0x81, 0x38, 0x79, 0x0c, 0x3f, 0x81, 0xd9, 0xce, 0xea, 0x22, 0x88, 0xee,

  0x21, 0x70, 0x6f, 0x9c, 0xde, 0x30, 0x89, 0x88, 0x12, 0x87, 0x49, 0x75,
  0x9f, 0x24, 0x66, 0xb8, 0x32, 0x01, 0xb1, 0x87, 0x87, 0xc6, 0x9a, 0x1f,
  0x31, 0x43, 0xdc, 0xda, 0xcb, 0xab, 0x8b, 0x6f, 0xae, 0x4e, 0x06, 0x83,
  0xe8, 0xfd, 0xc9, 0xf5, 0xc9, 0x55, 0x6d, 0xa7, 0xb3, 0xbc, 0x98, 0xd3,
  0x89, 0x8e, 0xd3, 0x72, 0x31, 0x8b, 0x1f, 0xf1, 0xa8, 0x61, 0x25, 0xd3,

  0x02, 0x6f, 0xd6, 0x3c, 0x41, 0xa9, 0x30, 0x5e, 0x12, 0x27, 0x03, 0x71,

  0x04, 0xc7, 0x27, 0x1a, 0x2f, 0x32, 0x13, 0x52, 0x93, 0xb3, 0xa9, 0xdd,
  0x69, 0xe0, 0x38, 0x22, 0x49, 0x51, 0x94, 0x9a, 0xf3, 0x40, 0xd5, 0x93,
  0x8c, 0x9b, 0xae, 0xfd, 0x19, 0x6f, 0x13, 0x8b, 0x36, 0xa0, 0xd9, 0x74,
  0x4e, 0xcc, 0x0e, 0xfe, 0xb4, 0xda, 0x66, 0x32, 0x01, 0x55, 0x1b, 0xa4,
  0x2b, 0x5b, 0x0a, 0xcd, 0x39, 0xe9, 0x6c, 0x8d, 0x7e, 0x0c, 0x64, 0x88,
  0xac, 0x19, 0x07, 0xe4, 0xa9, 0xf0, 0x17, 0x0c, 0x13, 0x03, 0x9d, 0x04,
  0x79, 0x9f, 0x3c, 0xb6, 0xc0, 0x29, 0x24, 0x70, 0xb2, 0x63, 0x1e, 0xbe,
  0x5c, 0x4e, 0xe8, 0x22, 0x47, 0xeb, 0xa0, 0x99, 0xbf, 0x07, 0x6b, 0x09,
  0x2c, 0x96, 0x6e, 0x74, 0xb9, 0x41, 0xef, 0x6d, 0x6f, 0xed, 0xec, 0x31,
  0x23, 0xe8, 0xeb, 0x70, 0x6f, 0x1d, 0x46, 0xbc, 0x7d, 0x8b, 0xc7, 0xcb,
  0x0f, 0xe1, 0xe0, 0xfd, 0x68, 0xfb, 0x3d, 0xff, 0x64, 0xef, 0xf3, 0xfd,
  0x97, 0x2f, 0xe4, 0x87, 0x75, 0x02, 0x37, 0xf3, 0x27, 0xea, 0x20, 0xcb,
  0x0f, 0x4d, 0x41, 0x98, 0x09, 0xac, 0x6e, 0x9e, 0x66, 0x70, 0x4d, 0xe0,
  0x5a, 0x09, 0xaf, 0x42, 0x7a, 0x86, 0xc9, 0x4f, 0x98, 0xb3, 0xc9, 0xb9,
  0xd6, 0x4d, 0x4a, 0x78, 0x19, 0x48, 0x16, 0x78, 0xb9, 0x39, 0x24, 0x56,
  0x13, 0x2a, 0x9c, 0x48, 0x3c, 0x44, 0x06, 0x8b, 0x76, 0x15, 0x28, 0xc0,
  0x49, 0xf0, 0x6b, 0x46, 0x2a, 0xc2, 0x1b, 0x30, 0x37, 0x90, 0x89, 0x28,
  0xe6, 0xfc, 0x7d, 0x07, 0x56, 0x40, 0x1c, 0xf2, 0x3e, 0x2d, 0x89, 0x35,
  0xdc, 0xe7, 0xcb, 0x19, 0x58, 0x31, 0xf8, 0xc0, 0x72, 0x41, 0x2f, 0xc0,
  0xa7, 0x16, 0x96, 0x07, 0x80, 0xc6, 0x82, 0xb4, 0xd3, 0x1c, 0x05, 0xa6,
  0x06, 0xff, 0x5c, 0x00, 0x29, 0xf1, 0x74, 0xfa, 0x4d, 0x09, 0x41, 0xbc,
  0xcf, 0xa3, 0x44, 0xbc, 0xf3, 0xc4, 0xb4, 0x2f, 0x2f, 0x06, 0xd7, 0xa8,
  0x01, 0x5c, 0x7e, 0xb8, 0x86, 0x81, 0x40, 0x05, 0x28, 0x2b, 0x20, 0x4a,
  0x7c, 0x31, 0x4b, 0xc8, 0x84, 0xd4, 0xe1, 0x80, 0xf6, 0x52, 0x62, 0x54,
  0xa4, 0xd6, 0xe8, 0x27, 0x79, 0x8e, 0x6c, 0x63, 0xe3, 0x15, 0x54, 0x0b,
  0x9b, 0x65, 0xb8, 0x79, 0x27, 0x5a, 0xff, 0x72, 0x03, 0x68, 0xb6, 0x97,
  0x9b, 0xdd, 0xe9, 0xf5, 0xe4, 0x55, 0xf8, 0x76, 0x99, 0xce, 0xd3, 0x59,
  0x5c, 0x38, 0x53, 0x67, 0x8e, 0x8a, 0xf7, 0xd3, 0xf0, 0x95, 0x11, 0x50,
  0x0d, 0x4d, 0xdb, 0x9a, 0x92, 0xb8, 0x87, 0xc4, 0x95, 0xec, 0x51, 0x8d,

  0x51, 0x21, 0x20, 0x8d, 0x79, 0x91, 0x9a, 0xad, 0xc3, 0x33, 0x43, 0x76,
  0x55, 0xdb, 0xa8, 0xe6, 0xb9, 0x79, 0x1b, 0x87, 0x12, 0x89, 0x3c, 0x15,
  0x66, 0xeb, 0xa2, 0xce, 0x30, 0x2e, 0x3a, 0x91, 0xe1, 0xc5, 0x7c, 0x37,
  0xf1, 0x86, 0x14, 0xc9, 0x74, 0x09, 0x2b, 0x88, 0x78, 0x77, 0x71, 0xa5,
  0x7f, 0x74, 0x56, 0xaa, 0x03, 0xf4, 0x86, 0xf8, 0x48, 0x5a, 0xb2, 0x99,
  0x39, 0x01, 0xbb, 0x05, 0x2f, 0x8d, 0xea, 0xaf, 0xa4, 0xd1, 0x08, 0xc5,
  0x04, 0x08, 0xc6, 0xd1, 0x6b, 0xe1, 0xaa, 0x54, 0x09, 0x30, 0x1a, 0x62,
  0xff, 0xf8, 0x64, 0x0f, 0x8e, 0xac, 0xd7, 0x2b, 0x61, 0xff, 0x51, 0xf7,
  0x5e, 0x88, 0x4d, 0x7f, 0x41, 0x0e, 0x13, 0xe3, 0x5b, 0xb9, 0x10, 0x1d,
  0x98, 0xc4, 0x26, 0xbf, 0x4b, 0x2c, 0x14, 0x14, 0xd5, 0x7b, 0xf8, 0x70,


  0x0c, 0x47, 0x06, 0x17, 0xee, 0x3d, 0x6e, 0x14, 0xfb, 0x46, 0x22, 0xa3,
  0x36, 0x13, 0x65, 0xa4, 0x78, 0xef, 0x63, 0xab, 0xcb, 0x8c, 0xc7, 0x29,
  0xfe, 0x16, 0xee, 0x17, 0x48, 0xb8, 0x65, 0x42, 0xb6, 0x87, 0x6c, 0xea,
  0xdc, 0x6e, 0x26, 0x99, 0xb1, 0xe5, 0x4d, 0x8e, 0x66, 0x62, 0x87, 0x79,

  0x71, 0x0f, 0xbf, 0xd5, 0x21, 0x79, 0x3e, 0x8f, 0xf4, 0x5b, 0xf2, 0x29,
  0x58, 0xc7, 0xd8, 0xd5, 0xcd, 0xba, 0x20, 0x68, 0x1e, 0x1d, 0x23, 0x81,
  0x78, 0x35, 0xcf, 0xbd, 0x30, 0x0a, 0x0f, 0x88, 0xd4, 0x05, 0x2a, 0x53,
  0xc2, 0xc3, 0x49, 0x18, 0xd2, 0x95, 0x2d, 0x79, 0x6a, 0x5d, 0xd8, 0x5b,
  0x7c, 0x72, 0x7a, 0xa3, 0x8f, 0x3a, 0x82, 0x35, 0x86, 0xc5, 0xa1, 0x70,
  0x40, 0x7b, 0x7a, 0xac, 0x7c, 0x3f, 0x2f, 0x98, 0x99, 0xcd, 0x72, 0xa0,
  0xe5, 0x0e, 0xab, 0xac, 0x32, 0x6d, 0x9c, 0x35, 0xce, 0x12, 0x77, 0x9c,
  0xfd, 0x4c, 0xb9, 0x39, 0x1b, 0x33, 0x69, 0xd9, 0xaf, 0xf2, 0xc9, 0xa9,
  0xd9, 0x8d, 0x1a, 0xd0, 0x1e, 0x81, 0xe8, 0x2c, 0x91, 0x8e, 0x75, 0xe7,
  0x89, 0xbc, 0x41, 0xd4, 0xad, 0x55, 0x7c, 0x1f, 0xc9, 0xc6, 0x6a, 0xec,

  0x7c, 0x49, 0xe4, 0x23, 0x82, 0xcc, 0xac, 0x0c, 0x56, 0x34, 0x4e, 0x63,
  0xa2, 0x13, 0x3e, 0x1a, 0x52, 0x46, 0xac, 0x45, 0x18, 0xd0, 0x83, 0x1f,
  0x9b, 0x06, 0xdd, 0x6c, 0xe6, 0x8a, 0x24, 0x9d, 0x53, 0xef, 0x02, 0xd6,
  0x7e, 0x46, 0xeb, 0xe8, 0xdd, 0x45, 0x78, 0xfd, 0xc0, 0x6c, 0xc0, 0xbb,
  0xd8, 0xbb, 0x38, 0xbb, 0x73, 0xae, 0x11, 0x5a, 0xee, 0x19, 0xea, 0x29,
  0x5d, 0xf2, 0x8e, 0x0c, 0xf3, 0x1c, 0xcc, 0x64, 0xbb, 0x34, 0x94, 0x07,
  0x49, 0x86, 0xd4, 0x2e, 0x27, 0x0a, 0x2c, 0x61, 0x61, 0xf8, 0xed, 0x23,
  0x98, 0x4b, 0xf1, 0x34, 0x4e, 0x0d, 0xbd, 0xc9, 0xcd, 0x18, 0x47, 0xfa,
  0x70, 0x96, 0xcb, 0xf3, 0x78, 0x54, 0xa8, 0x02, 0x09, 0xdf, 0x5a, 0x96,
  0x7c, 0x7d, 0x60, 0x55, 0xc0, 0x79, 0x88, 0x77, 0xc8, 0xb8, 0xa8, 0x36,
  0xea, 0x70, 0x43, 0x52, 0x94, 0x51, 0xe7, 0x24, 0xe6, 0x4b, 0x1a, 0x24,

  0x8c, 0xd8, 0xe9, 0x47, 0xef, 0xf2, 0xfb, 0x84, 0x7c, 0x85, 0xa4, 0xdf,
  0xa7, 0xe8, 0xed, 0x02, 0x55, 0xf0, 0x3e, 0x89, 0xe6, 0xa0, 0x7a, 0xc2,
  0x6e, 0x92, 0xf6, 0x41, 0x3f, 0x73, 0xcc, 0x43, 0xa0, 0xf0, 0x7b, 0xde,
  0x25, 0xb3, 0x0a, 0x73, 0x94, 0x13, 0xbe, 0x12, 0xd1, 0x3a, 0xa9, 0x37,
  0x23, 0xdc, 0xad, 0x45, 0x65, 0x57, 0x61, 0x36, 0xe4, 0x3e, 0x2e, 0x9d,
  0xcb, 0x95, 0x90, 0x69, 0xfa, 0xb2, 0xbf, 0xfd, 0xaa, 0xbf, 0xd5, 0x07,
  0x43, 0x24, 0xb9, 0x4b, 0xf3, 0x65, 0x09, 0x9f, 0xc6, 0x69, 0xd8, 0x77,
  0x12, 0xbc, 0x95, 0x55, 0x3e, 0x9d, 0xce, 0x58, 0xe7, 0xd9, 0xcc, 0x27,
  0x13, 0xd6, 0x7d, 0x40, 0xd3, 0x33, 0xfa, 0x33, 0x5b, 0x40, 0xb8, 0x33,
  0x72, 0xdd, 0x98, 0xa5, 0xfa, 0x26, 0x72, 0xdf, 0x3a, 0x2f, 0x7a, 0xbd,
  0x78, 0x58, 0x56, 0x68, 0x4c, 0xf5, 0x96, 0x59, 0xfa, 0xd0, 0x2b, 0xf3,
  0xd1, 0x2d, 0x1c, 0xca, 0xe1, 0x22, 0xae, 0x6e, 0xbe, 0x6c, 0xb8, 0x84,
  0xd7, 0x51, 0x96, 0x6c, 0x44, 0xd1, 0x31, 0xab, 0x95, 0xb8, 0x13, 0x05,
  0xdf, 0x37, 0x38, 0x4d, 0x19, 0x25, 0xfa, 0x00, 0xa3, 0x00, 0x2d, 0xcf,

  0xe1, 0x50, 0x23, 0x1e, 0xac, 0xab, 0xac, 0xb4, 0x31, 0x1c, 0x39, 0x1c,
  0x51, 0x8c, 0x90, 0xdf, 0x0e, 0xae, 0x4e, 0x5e, 0xdc, 0x82, 0xa2, 0x7d,
  0x0e, 0x26, 0xe3, 0x01, 0xfe, 0x1b, 0x58, 0x58, 0x45, 0x5b, 0x2e, 0x92,
  0x15, 0x66, 0xc4, 0xcc, 0x18, 0x2d, 0xf2, 0x78, 0xd8, 0x6b, 0x0c, 0x27,
  0xdf, 0x97, 0x8f, 0x46, 0x6a, 0x6b, 0x28, 0x29, 0x45, 0x6b, 0x5f, 0x81,
  0xfd, 0x77, 0xc3, 0xc7, 0x4e, 0x03, 0xf2, 0x1a, 0x81, 0x42, 0xa7, 0x60,
  0x41, 0x64, 0x55, 0x73, 0xb8, 0x1b, 0x12, 0xd5, 0x28, 0x65, 0xd8, 0xd8,
  0x25, 0x22, 0x11, 0x0f, 0x90, 0xb1, 0x3f, 0xfb, 0x9f, 0x35, 0x5e, 0x3b,
  0xb2, 0x67, 0xba, 0xbf, 0x0b, 0x67, 0xea, 0x6e, 0xf4, 0xac, 0xea, 0x95,
  0x77, 0xa3, 0xe8, 0x90, 0xb4, 0x6f, 0x24, 0xd3, 0xe0, 0x06, 0x0f, 0x36,
  0xa2, 0xef, 0x8f, 0xae, 0xce, 0x4f, 0xcf, 0xbf, 0x39, 0xe0, 0x8f, 0x0a,
  0xa5, 0xc1, 0xdf, 0x92, 0x87, 0x05, 0xfa, 0xc1, 0x70, 0xb6, 0x20, 0xca,
  0xa2, 0xe8, 0x4d, 0x4e, 0xf6, 0x08, 0x31, 0x4c, 0x14, 0x58, 0x8d, 0xe1,
  0x40, 0xb4, 0x8c, 0x97, 0x0d, 0xdf, 0xaf, 0x61, 0xd8, 0x76, 0x60, 0xbe,
  0x9e, 0xbc, 0xc9, 0x3a, 0x47, 0xe0, 0x8f, 0xec, 0x3e, 0x26, 0x7d, 0xa9,
  0x8f, 0xd2, 0x92, 0xcc, 0x7c, 0x9d, 0x79, 0xf3, 0x4b, 0x39, 0x18, 0xbb,
  0x6c, 0xe7, 0xc3, 0x78, 0x0f, 0x70, 0x6d, 0x70, 0x97, 0x74, 0xb0, 0x11,
  0xb0, 0xa3, 0x44, 0x14, 0x07, 0x62, 0x75, 0x64, 0x36, 0x08, 0x2b, 0xeb,
  0x47, 0x47, 0x93, 0xe6, 0x51, 0xa2, 0xee, 0x82, 0x5a, 0xbd, 0x4a, 0xc1,
  0xb1, 0x55, 0x84, 0xd9, 0xcb, 0xcb, 0x23, 0xea, 0x30, 0x25, 0x9c, 0xcf,
  0x58, 0x25, 0x3d, 0x7e, 0xa6, 0x31, 0x1c, 0x99, 0x9e, 0xc4, 0x66, 0x50,
  0x29, 0x4c, 0xf1, 0x40, 0xd1, 0xf4, 0x03, 0x46, 0x3d, 0xcf, 0xc7, 0x64,
  0x47, 0x78, 0xfb, 0x33, 0x30, 0x0e, 0x9f, 0x4e, 0xc7, 0xae, 0x3a, 0x5a,
  0x47, 0xd7, 0x1f, 0x50, 0x41, 0x36, 0xad, 0x6e, 0x36, 0xac, 0x5b, 0x03,
  0xd5, 0x14, 0x58, 0xf0, 0x26, 0x4c, 0x84, 0xd6, 0x9d, 0x35, 0x49, 0x9d,
  0xdc, 0xce, 0xa4, 0x79, 0xfe, 0x75, 0x59, 0x56, 0x64, 0x0d, 0x89, 0xf8,
  0xe7, 0x95, 0xc0, 0xcc, 0xe6, 0xc9, 0x3c, 0x2f, 0x1e, 0xbd, 0x89, 0x9c,
  0x92, 0xf2, 0x81, 0x86, 0xa7, 0x9c, 0x16, 0xd2, 0x01, 0xc9, 0x47, 0x75,
  0x09, 0xa2, 0x11, 0x80, 0x3e, 0x75, 0x63, 0x07, 0x92, 0xd2, 0x04, 0x0c,
  0x08, 0xec, 0x6f, 0xeb, 0xb0, 0x55, 0x03, 0x8a, 0x1c, 0x3d, 0x6c, 0xdb,
  0x8b, 0x35, 0x35, 0x14, 0x17, 0x0e, 0xfe, 0xff, 0x2c, 0x46, 0xae, 0x93,
  0x25, 0xb5, 0x13, 0x22, 0xe9, 0xc1, 0x4b, 0x5b, 0x45, 0xee, 0x2f, 0xf6,
  0xfa, 0xdb, 0x35, 0x72, 0xcf, 0x1e, 0x31, 0x50, 0x10, 0xe6, 0x21, 0xd7,
  0xa0, 0x38, 0x96, 0x3c, 0x67, 0xd8, 0xc5, 0x49, 0x3a, 0x5d, 0x16, 0x09,
  0x6b, 0x70, 0x14, 0x5b, 0xd0, 0x90, 0x02, 0x2a, 0x45, 0x37, 0x39, 0x79,
  0xe2, 0x41, 0x98, 0x26, 0xb3, 0x49, 0xb7, 0x31, 0x1c, 0x99, 0x2f, 0x44,
  0xfd, 0x38, 0x7d, 0x62, 0x9a, 0x60, 0xa6, 0xd0, 0x60, 0x59, 0x22, 0x4a,

  0xec, 0x1c, 0x18, 0x4a, 0x84, 0xae, 0xe8, 0x68, 0x34, 0x8b, 0xd3, 0x39,
  0x91, 0xa9, 0xb8, 0x5a, 0xfb, 0xa1, 0x6b, 0x81, 0x06, 0x06, 0xbe, 0x3d,
  0x44, 0xd3, 0xb7, 0x28, 0x51, 0x32, 0xd3, 0xa9, 0xaa, 0xe6, 0xcc, 0x86,
  0xe5, 0x4d, 0x32, 0xba, 0x55, 0xe6, 0xa5, 0x2a, 0x67, 0x93, 0x8e, 0x31,
  0xc6, 0x40, 0xf6, 0x35, 0x3c, 0xb5, 0x2c, 0xf1, 0x9a, 0x94, 0x65, 0x8a,
  0xee, 0x33, 0x34, 0x07, 0x97, 0x23, 0xb2, 0x12, 0xe9, 0xc2, 0x00, 0x75,
  0x2b, 0x07, 0x8c, 0x80, 0xa5, 0x66, 0xe3, 0x5e, 0x55, 0xa4, 0x8b, 0xb6,
  0xd9, 0xf1, 0xa9, 0xd4, 0x15, 0xd4, 0x52, 0x2c, 0x76, 0x32, 0x86, 0xd9,
  0x3c, 0x1e, 0x45, 0x8d, 0xdd, 0x6c, 0x12, 0x25, 0xed, 0x6d, 0x17, 0xfd,
  0x41, 0x29, 0xe8, 0x0b, 0x6c, 0x2c, 0x91, 0xbb, 0x13, 0x4c, 0x23, 0x11,
  0x5c, 0x60, 0xc5, 0xa5, 0x23, 0x52, 0x82, 0xd2, 0x69, 0x82, 0xb1, 0x1c,
  0x90, 0x65, 0xd5, 0x0c, 0x54, 0x23, 0x9f, 0xc6, 0xe1, 0x37, 0xc9, 0x34,

  0xaf, 0x50, 0x1b, 0xf1, 0xc8, 0xe4, 0x03, 0xf1, 0x79, 0x43, 0x13, 0xaa,
  0xf6, 0xbb, 0x3a, 0x59, 0xca, 0xfa, 0x38, 0x7c, 0x9a, 0xd5, 0x7e, 0xf1,



  0x38, 0x94, 0x15, 0xdc, 0xac, 0xe6, 0xa9, 0xc3, 0x68, 0xa3, 0x84, 0x6c,

  0x2f, 0x52, 0x1c, 0x55, 0x6f, 0x55, 0x85, 0x1f, 0x59, 0x02, 0xea, 0xc8,
  0xd5, 0x7d, 0x3a, 0x4a, 0xd4, 0x1d, 0x27, 0x3e, 0xea, 0x59, 0xea, 0xb3,
  0xfa, 0x39, 0xde, 0x49, 0x78, 0x89, 0x75, 0x72, 0xf4, 0x9e, 0xdc, 0xa7,
  0xa8, 0xb3, 0x0b, 0xd3, 0x23, 0x95, 0x4c, 0xc4, 0x41, 0x5c, 0xa4, 0xe4,
  0x2a, 0x82, 0xe1, 0x64, 0x9e, 0x8e, 0x45, 0xef, 0xde, 0x31, 0x9e, 0x37,
  0xbd, 0x2f, 0x66, 0x8c, 0x35, 0x5f, 0xe8, 0x72, 0x4d, 0xe2, 0x74, 0x16,
  0xd8, 0x27, 0x62, 0x64, 0xd3, 0x84, 0xbc, 0x6a, 0x7c, 0x06, 0x4b, 0xdc,
  0x74, 0x8c, 0xbb, 0xf9, 0x4c, 0x2a, 0x49, 0xd8, 0x9e, 0x20, 0xe3, 0xe3,
  0xe1, 0xd1, 0x6c, 0x2f, 0x29, 0x6d, 0x7c, 0x76, 0xf2, 0x77, 0x3e, 0x3e,
  0xe7, 0x7a, 0xc6, 0x38, 0x6a, 0xbc, 0xc0, 0x00, 0x53, 0xf3, 0x86, 0xa2,
  0xe9, 0x85, 0x31, 0xca, 0x0d, 0xf5, 0x20, 0x27, 0xe2, 0x3f, 0x37, 0xb1,
  0x3d, 0x62, 0x48, 0xc8, 0xd3, 0xe4, 0x0a, 0xf3, 0x38, 0xc2, 0x81, 0x9b,
  0xbc, 0x1c, 0xe4, 0x2b, 0x88, 0x63, 0xe2, 0xa1, 0x35, 0x8a, 0xcd, 0x81,

  0x7d, 0x99, 0x08, 0x13, 0x7a, 0x7c, 0x85, 0xd7, 0x91, 0xa1, 0x45, 0x77,
  0x36, 0xc4, 0xcb, 0xd1, 0xf4, 0x43, 0x3d, 0x99, 0xa5, 0x4c, 0x37, 0x62,
  0xbd, 0x8e, 0x99, 0xd5, 0x88, 0x7d, 0xc0, 0xa2, 0x43, 0xb0, 0xa8, 0xa1,
  0xa9, 0x4e, 0x66, 0xf1, 0x94, 0xdc, 0x6b, 0xd3, 0xe6, 0x0d, 0xcd, 0x72,
  0x09, 0xf4, 0x95, 0x39, 0xb0, 0x77, 0x5c, 0xb5, 0xb8, 0xb6, 0xca, 0x68,
  0x1d, 0x88, 0x6c, 0xb6, 0x24, 0x71, 0x7f, 0x01, 0xcb, 0x1b, 0x0c, 0xde,
  0x6d, 0xb8, 0xec, 0x8d, 0x76, 0xf7, 0x39, 0xcc, 0x0d, 0xb9, 0x13, 0x19,
  0xe1, 0x5f, 0xf3, 0x79, 0xd4, 0x19, 0x9c, 0xb1, 0xee, 0x5c, 0x4d, 0x4e,
  0xe9, 0x12, 0x57, 0x81, 0xae, 0xd0, 0xbe, 0xb9, 0xfa, 0xf8, 0xa4, 0x7a,
  0x64, 0x99, 0xb0, 0x6b, 0x0a, 0xc2, 0xb2, 0x5c, 0x92, 0x73, 0x8a, 0xe4,
  0x71, 0x73, 0x38, 0x60, 0xf6, 0xc0, 0x8a, 0x96, 0x19, 0xfe, 0x69, 0x74,
  0xe8, 0x94, 0xac, 0x39, 0x3c, 0x8b, 0x02, 0x5d, 0xe0, 0x68, 0x07, 0x1b,
  0x1d, 0x14, 0x78, 0x8a, 0x8e, 0x8d, 0x7b, 0xd9, 0xbc, 0x84, 0xa0, 0xa1,
  0x11, 0xbb, 0x01, 0x11, 0x0a, 0x82, 0x19, 0x2f, 0x5c, 0x0b, 0xf7, 0x5e,
  0x2f, 0x97, 0xc0, 0x5f, 0xd0, 0x74, 0x10, 0xe6, 0x81, 0xf4, 0xd8, 0x9c,

  0x1d, 0xb3, 0x17, 0x90, 0x34, 0x0e, 0x1f, 0xd9, 0xf8, 0xad, 0x2f, 0x08,
  0x1d, 0x9a, 0x7b, 0x8a, 0x20, 0x7e, 0x13, 0x30, 0xc8, 0x48, 0x25, 0xf3,
  0xb4, 0xb1, 0xeb, 0xb3, 0x41, 0xe8, 0x30, 0xeb, 0xf1, 0x29, 0x7c, 0x1f,
  0x99, 0x2d, 0xba, 0x11, 0xd9, 0xad, 0x9a, 0xa3, 0x51, 0xe0, 0xc4, 0xa8,
  0x5c, 0x7f, 0xdf, 0x22, 0xc1, 0x60, 0x16, 0xdb, 0xcb, 0x1c, 0xfc, 0x46,
  0x06, 0x86, 0xc2, 0x1a, 0xb5, 0x13, 0xe3, 0x42, 0x3d, 0x3e, 0x72, 0xc7,
  0x25, 0x9f, 0x69, 0xf3, 0x22, 0x38, 0xbf, 0x5f, 0x2f, 0x37, 0x0c, 0x0f,
  0x83, 0x51, 0x2e, 0x4f, 0xde, 0x93, 0xfd, 0x1a, 0x03, 0xdd, 0x9c, 0xab,
  0xbb, 0x52, 0x63, 0xdb, 0xc3, 0x65, 0x3a, 0xab, 0xc5, 0x04, 0xac, 0xc9,


  0x4d, 0x81, 0x65, 0x26, 0x2d, 0x9a, 0x1a, 0x47, 0xb7, 0x52, 0x72, 0x0f,
  0x37, 0x09, 0xad, 0x7a, 0x5c, 0x88, 0x67, 0x7b, 0x59, 0xd6, 0x1c, 0x48,
  0x2a, 0x97, 0x67, 0x15, 0x69, 0xd9, 0x68, 0xd7, 0x3a, 0x63, 0x7a, 0x27,
  0x44, 0xd3, 0x42, 0x31, 0x30, 0xcd, 0xd2, 0xbf, 0x8b, 0x0e, 0x9a, 0x64,
  0x77, 0x69, 0x91, 0x67, 0xa8, 0xe5, 0x82, 0xe9, 0x5b, 0xa4, 0xc4, 0x96,
  0x51, 0xfd, 0x02, 0xc6, 0xb1, 0x76, 0xfc, 0xe1, 0xea, 0xec, 0xe3, 0xf1,
  0xd1, 0xc7, 0xaf, 0x3f, 0x9c, 0xbf, 0x39, 0x3b, 0x59, 0x6b, 0x0c, 0x87,
  0x3e, 0xbf, 0x54, 0x1c, 0xf5, 0x25, 0x5a, 0x1e, 0x74, 0x49, 0x60, 0x8a,
  0x3c, 0xf2, 0x34, 0xbd, 0x03, 0x86, 0x46, 0x86, 0x04, 0xf9, 0xe8, 0xe9,
  0x6f, 0xe4, 0xd5, 0x92, 0x0d, 0x6f, 0x0c, 0x37, 0x5c, 0xa2, 0x9e, 0xd6,
  0xaf, 0x69, 0xcb, 0x7a, 0x55, 0xc4, 0x6a, 0xd7, 0x09, 0x06, 0x34, 0x6c,
  0xd4, 0xa2, 0xb2, 0x31, 0x9a, 0x2f, 0x8e, 0x91, 0xe8, 0xb8, 0xeb, 0x97,
  0x15, 0x58, 0x49, 0x1a, 0x20, 0x00, 0xad, 0x2d, 0xbf, 0xd5, 0x2c, 0x03,
  0x30, 0xb1, 0x8e, 0x02, 0xc7, 0x5d, 0x5a, 0x4d, 0x74, 0x1c, 0xad, 0xe1,
  0x48, 0x40, 0xbf, 0x3d, 0x99, 0xe4, 0xa8, 0xa8, 0xc0, 0xbe, 0x49, 0x52,
  0xba, 0x18, 0x1a, 0x45, 0x45, 0x9d, 0x95, 0x9c, 0x73, 0x9e, 0x86, 0x0d,
  0xba, 0x26, 0xee, 0x01, 0x69, 0xf7, 0xc9, 0x43, 0x42, 0x37, 0x4f, 0xde,
  0x3a, 0x5e, 0x16, 0x74, 0x9b, 0xbf, 0x07, 0x6d, 0x04, 0xb9, 0xdf, 0x1b,




  0xf2, 0xee, 0xc1, 0x0b, 0xfa, 0x10, 0x88, 0x99, 0xa6, 0xc8, 0xcb, 0x67,
  0x18, 0x57, 0x8d, 0xc9, 0x93, 0x42, 0x7e, 0xaf, 0xcb, 0xa3, 0xeb, 0x77,
  0x41, 0x65, 0xd6, 0xa6, 0xf4, 0x08, 0x29, 0x92, 0x62, 0x5e, 0x56, 0x72,
  0x41, 0xce, 0x07, 0x83, 0x88, 0x12, 0x46, 0x66, 0xe9, 0xb0, 0x88, 0xf1,
  0x9b, 0xf8, 0x63, 0xfc, 0x29, 0x90, 0x75, 0x63, 0xb8, 0xcb, 0x6f, 0x8f,
  0x07, 0x7f, 0xdc, 0xde, 0x46, 0x2d, 0x7e, 0x09, 0xfb, 0xb2, 0x0e, 0xaf,
  0x64, 0x25, 0xdc, 0xcc, 0x79, 0xbf, 0xcc, 0x37, 0x48, 0x6c, 0x97, 0xa2,
  0x0e, 0xc4, 0x77, 0x20, 0x6d, 0x89, 0x8e, 0x94, 0xa8, 0xe1, 0x38, 0xbd,
  0x3d, 0x21, 0x46, 0x27, 0xd9, 0x34, 0xc0, 0x2f, 0x40, 0x5e, 0xcf, 0x7c,
  0x85, 0x7c, 0x3d, 0xbd, 0x18, 0x48, 0x2e, 0x4a, 0x3c, 0x82, 0xbf, 0xa2,
  0xa3, 0x60, 0x03, 0x57, 0x56, 0xbf, 0x61, 0xba, 0xaa, 0x01, 0x6b, 0xa3,
  0xd7, 0x68, 0xbe, 0x50, 0x0a, 0x8d, 0xcf, 0x15, 0xb2, 0xe6, 0xe5, 0xb2,


  0x69, 0x4a, 0x44, 0x0e, 0xc3, 0x78, 0x74, 0x7b, 0x1f, 0x17, 0x63, 0xb6,
  0x87, 0x80, 0x62, 0x86, 0xe9, 0x2c, 0xad, 0x1e, 0xd9, 0xae, 0x6d, 0xda,
  0xd4, 0x1c, 0x1f, 0xc5, 0x0d, 0x84, 0x7b, 0x34, 0x05, 0x93, 0x1f, 0xb5,
  0x4f, 0x54, 0xf1, 0xd3, 0xca, 0x35, 0x69, 0x49, 0x45, 0xaa, 0x8c, 0x8a,
  0x63, 0xbe, 0xed, 0x89, 0xc7, 0x8a, 0xef, 0x11, 0x4d, 0xd3, 0xd2, 0xae,
  0xb2, 0x41, 0x97, 0x49, 0x29, 0xf9, 0x44, 0xe5, 0x23, 0x48, 0xf9, 0x79,
  0x14, 0x50, 0x11, 0x29, 0x7b, 0x28, 0xfa, 0x36, 0x79, 0x04, 0xfb, 0x39,
  0xcd, 0x2c, 0xa7, 0x64, 0xfb, 0x3e, 0x41, 0xeb, 0x8e, 0x75, 0xd1, 0x54,
  0x9d, 0xe9, 0x89, 0xc4, 0x43, 0x58, 0x92, 0xf8, 0x0e, 0x04, 0x7e, 0x5f,
  0xf5, 0x70, 0x1c, 0x62, 0xad, 0xac, 0xb1, 0x64, 0xfa, 0x92, 0x7f, 0x88,
  0x03, 0xf8, 0x79, 0x96, 0x25, 0x33, 0x39, 0xbe, 0xeb, 0x55, 0x07, 0x60,
  0x9e, 0x85, 0x29, 0x7f, 0xcf, 0x37, 0xba, 0x31, 0xdc, 0x4b, 0x0e, 0xee,

  0xc7, 0x95, 0xca, 0x24, 0xcd, 0x1a, 0x02, 0xab, 0x68, 0xcb, 0xfc, 0xaa,
  0xdf, 0xfa, 0x19, 0xef, 0x36, 0x15, 0xf6, 0xd0, 0xeb, 0x67, 0xce, 0x4e,
  0x51, 0x3a, 0x64, 0x3c, 0x63, 0x39, 0xe2, 0x2f, 0x8c, 0x66, 0x45, 0x01,
  0x8c, 0xc6, 0x70, 0xae, 0x96, 0xad, 0x32, 0x4c, 0xd6, 0xb1, 0x06, 0x7a,
  0x6a, 0x5e, 0x90, 0xbf, 0xa8, 0xc8, 0xe1, 0xac, 0x6b, 0xe7, 0xb9, 0xce,
  0xca, 0x46, 0xf3, 0x9a, 0x08, 0x37, 0x77, 0x36, 0x66, 0x23, 0x74, 0xd1,
  0x3d, 0xcd, 0xc4, 0x37, 0x59, 0x5b, 0x2d, 0xce, 0xba, 0x84, 0x26, 0x2e,
  0x7d, 0x08, 0x6c, 0xec, 0x5f, 0x17, 0xd0, 0xcc, 0x0c, 0x89, 0xf9, 0xf9,
  0x32, 0x4b, 0x68, 0xb1, 0x26, 0xa8, 0xdf, 0xab, 0x44, 0xc6, 0x49, 0x18,
  0x17, 0xec, 0x82, 0x13, 0x06, 0x58, 0x71, 0x64, 0x5f, 0xb2, 0x6f, 0x06,
  0xa0, 0x3b, 0x50, 0x5c, 0x8e, 0x07, 0x9d, 0x68, 0x3d, 0xe9, 0x4f, 0x61,
  0xbc, 0x0e, 0x8e, 0xb3, 0x7d, 0x80, 0xff, 0xdd, 0xa1, 0xff, 0xee, 0x76,
  0x34, 0xb5, 0xcf, 0xdd, 0x7a, 0x94, 0xe6, 0x4d, 0x59, 0xc4, 0xf1, 0x38,
  0x2b, 0xdc, 0xbb, 0xec, 0x63, 0x6e, 0x63, 0x3c, 0xac, 0xb3, 0x9e, 0xf1,
  0x2e, 0xfb, 0xea, 0x96, 0x6e, 0xc3, 0x9c, 0xfd, 0x11, 0x77, 0x09, 0x3b,
  0x44, 0x60, 0x65, 0x23, 0x50, 0x0f, 0xc9, 0x8d, 0xa8, 0xb7, 0x6a, 0xf4,
  0xb1, 0x48, 0x6e, 0xe2, 0xf2, 0x26, 0x5a, 0x56, 0x4c, 0x84, 0x40, 0xb7,
  0xcd, 0xe1, 0x16, 0xb3, 0xd4, 0x7a, 0xda, 0xe4, 0xd3, 0x7d, 0xb5, 0xfb,
  0xec, 0x29, 0x72, 0x04, 0x64, 0x96, 0xdf, 0xeb, 0x33, 0x3d, 0xc9, 0xb5,
  0x0b, 0xa9, 0x05, 0x70, 0x9a, 0xe4, 0x37, 0xc1, 0xc7, 0xdc, 0x48, 0xf6,
  0x1c, 0xb5, 0x49, 0x4c, 0x04, 0x04, 0x16, 0x37, 0x81, 0x1d, 0x43, 0x8b,
  0x6e, 0x46, 0xe7, 0x86, 0xb6, 0x2b, 0xcd, 0xdb, 0x33, 0x4d, 0x45, 0xcf,
  0x4b, 0x27, 0xe2, 0xbd, 0x95, 0x7f, 0x93, 0x3c, 0x15, 0xed, 0xab, 0xe4,
  0x68, 0x77, 0x53, 0xf5, 0x7a, 0x9a, 0xb4, 0x95, 0x41, 0x1a, 0x4d, 0x47,
  0x16, 0xcb, 0x01, 0x13, 0xa5, 0xeb, 0x74, 0x4a, 0xb6, 0x46, 0xc8, 0x81,
  0xc1, 0x4e, 0xa9, 0x7f, 0xe9, 0x92, 0xc0, 0x8c, 0x7b, 0xe8, 0x2f, 0x5d,
  0x96, 0xcf, 0xb8, 0x23, 0x0e, 0xd3, 0xe5, 0x77, 0x8c, 0xbf, 0x98, 0xa3,
  0xfa, 0xee, 0x06, 0x34, 0xa9, 0xf0, 0xd1, 0x21, 0x8c, 0x63, 0xe7, 0x66,
  0x0d, 0x78, 0xa0, 0x2b, 0x71, 0x91, 0xac, 0xc7, 0xb7, 0x71, 0x3f, 0xba,
  0x38, 0x1e, 0x5c, 0xe2, 0x27, 0x80, 0x3a, 0xb2, 0x29, 0xcc, 0xe2, 0x6c,
  0xd0, 0x18, 0x2e, 0x79, 0xa8, 0x92, 0xac, 0x0c, 0x39, 0x28, 0xfd, 0x6d,

  0xd6, 0x28, 0x82, 0xa6, 0xd7, 0xc8, 0x64, 0xc1, 0xd2, 0xa7, 0xb8, 0x38,
  0x86, 0x79, 0x31, 0x07, 0x23, 0xe2, 0xab, 0xe6, 0x7d, 0x68, 0x01, 0x37,
  0x7f, 0xbc, 0x61, 0x5c, 0x35, 0x5d, 0xa5, 0x05, 0x13, 0x2e, 0x2c, 0x97,
  0x53, 0xb4, 0x41, 0x4a, 0xb5, 0x1b, 0xcd, 0x17, 0x60, 0x37, 0x7c, 0x55,
  0x41, 0x96, 0x6d, 0x3c, 0x89, 0x60, 0x35, 0x61, 0x26, 0x15, 0xa9, 0x48,
  0x59, 0x6e, 0x47, 0xc5, 0x6c, 0x0a, 0xca, 0x1a, 0x4d, 0x29, 0xc0, 0x36,
  0x4a, 0x40, 0x05, 0x1d, 0x07, 0x94, 0x00, 0x3e, 0x14, 0x35, 0x9c, 0x26,




  0x92, 0x29, 0x1a, 0xf0, 0xff, 0xd0, 0x40, 0x23, 0x56, 0xd1, 0x90, 0xea,
  0x29, 0x50, 0x91, 0xa2, 0x9f, 0x14, 0x15, 0x66, 0x36, 0xd5, 0x71, 0x3c,
  0x73, 0xff, 0xbf, 0xc9, 0x96, 0xb0, 0xf1, 0x01, 0x69, 0x8c, 0x4a, 0x15,
  0x8a, 0x19, 0xdc, 0xc0, 0x55, 0x8e, 0xbd, 0xbd, 0xed, 0xba, 0x1f, 0x9b,
  0x88, 0x0d, 0x0c, 0x80, 0x24, 0x3a, 0xc4, 0xff, 0x3e, 0xc9, 0x95, 0x29,
  0x75, 0x85, 0x9e, 0x97, 0x78, 0x27, 0xf3, 0x4e, 0xf1, 0xc5, 0x44, 0x75,
  0x06, 0xed, 0x49, 0x2f, 0x22, 0xb7, 0x3e, 0xf2, 0xbd, 0x6e, 0xf4, 0x06,
  0x13, 0xb2, 0x4f, 0xce, 0xbf, 0x21, 0x1a, 0xb8, 0xdc, 0xde, 0xa1, 0xe8,
  0x92, 0xb1, 0x1e, 0xc6, 0xf4, 0x91, 0x92, 0x1d, 0x09, 0x1c, 0x1d, 0xf6,
  0x15, 0x5f, 0x92, 0x09, 0x5d, 0x62, 0xa3, 0x18, 0x16, 0xa4, 0xec, 0xa1,

  0xf1, 0xa7, 0x93, 0x5f, 0x9e, 0x21, 0x7a, 0xd2, 0x95, 0x1d, 0x14, 0xc7,
  0xcc, 0x6d, 0xf2, 0x68, 0xff, 0x46, 0xbb, 0xea, 0x6c, 0xb5, 0x7d, 0xf8,
  0xd0, 0xd9, 0xa4, 0x1f, 0x0f, 0x30, 0x43, 0x09, 0xb4, 0xd4, 0xf1, 0xcf,
  0xbf, 0x4e, 0x22, 0x86, 0x77, 0x3e, 0xe0, 0x6c, 0x21, 0x3f, 0x97, 0xe6,
  0x02, 0x71, 0xe8, 0x9f, 0x59, 0xbc, 0xa4, 0xc3, 0x63, 0xa6, 0x3c, 0x12,
  0x7c, 0x9c, 0x19, 0x95, 0xa4, 0xc7, 0x09, 0x60, 0x94, 0x10, 0xd6, 0xdc,
  0xfb, 0x51, 0x3e, 0xf3, 0x64, 0x5d, 0xcd, 0x70, 0x25, 0x7d, 0x7e, 0x47,

  0xe4, 0x1b, 0x19, 0x73, 0xcc, 0x6c, 0x44, 0x8b, 0x6e, 0x5e, 0x07, 0xa3,
  0x53, 0x93, 0xfa, 0x65, 0x25, 0x23, 0xbe, 0xc9, 0x2f, 0x52, 0x98, 0x9b,
  0xa6, 0xc6, 0x9a, 0x52, 0x3f, 0xb2, 0x1a, 0x6f, 0x48, 0xfd, 0x87, 0xb3,
  0xd5, 0xbd, 0x85, 0x43, 0x47, 0x3f, 0x93, 0xd9, 0xb5, 0xae, 0xeb, 0x69,
  0x02, 0x26, 0x57, 0xa4, 0xaa, 0x9f, 0x4b, 0x32, 0xa9, 0x1f, 0xc3, 0xe0,
  0x8c, 0x03, 0xf1, 0x46, 0x49, 0x66, 0x55, 0xcd, 0x97, 0xcf, 0xe4, 0x87,
  0x96, 0x68, 0xc7, 0xd9, 0x92, 0x4e, 0xe8, 0x28, 0x2a, 0x0e, 0x7e, 0xca,
  0x15, 0x4a, 0xef, 0x70, 0xeb, 0x94, 0x76, 0xac, 0x63, 0xb3, 0xae, 0xfa,
  0xe6, 0x19, 0xfe, 0x99, 0xa1, 0x4f, 0xec, 0x0f, 0x01, 0x82, 0x0c, 0xd2,
  0x22, 0xfa, 0xc6, 0x25, 0xf6, 0x41, 0x0a, 0x0c, 0x26, 0x41, 0x4a, 0x16,
  0xfa, 0xec, 0xf1, 0x59, 0x06, 0x9d, 0x2a, 0x20, 0x6a, 0xb7, 0x39, 0xc6,
  0x9c, 0x67, 0xed, 0x34, 0x09, 0x04, 0xd8, 0x78, 0x85, 0x29, 0x25, 0x4c,
  0xbb, 0xe8, 0x7b, 0x4d, 0x47, 0xb7, 0x14, 0x79, 0x11, 0x09, 0xe5, 0xae,
  0x4f, 0xf3, 0xf6, 0x38, 0xe3, 0x34, 0x70, 0x04, 0x64, 0x4b, 0xa2, 0x53,

  0x18, 0x69, 0x12, 0xa5, 0x73, 0x9a, 0xb1, 0xce, 0xd6, 0xea, 0x65, 0x80,
  0xb9, 0x7e, 0x7c, 0x73, 0x7a, 0x15, 0xad, 0xa3, 0x06, 0xde, 0x34, 0x72,
  0x55, 0xbc, 0x6f, 0x26, 0xd5, 0x68, 0x73, 0x71, 0x9b, 0x6e, 0x82, 0xb1,

  0x39, 0x1e, 0x6e, 0x18, 0x23, 0x8a, 0x3e, 0x87, 0x54, 0x68, 0x0c, 0x53,
  0xb5, 0x4c, 0xc9, 0x34, 0xf5, 0x5c, 0x8f, 0xd6, 0x54, 0xe5, 0x0a, 0x17,
  0x63, 0xa3, 0xf2, 0x36, 0x31, 0x41, 0x53, 0x88, 0x86, 0xb3, 0x23, 0x28,
  0xb0, 0x93, 0xb0, 0x5f, 0x1a, 0x6c, 0xec, 0xe6, 0x5d, 0xe5, 0xec, 0x47,
  0x71, 0xe4, 0xb0, 0x03, 0x47, 0x53, 0xf6, 0x44, 0x5c, 0x58, 0xed, 0xb7,
  0x8b, 0xc9, 0x96, 0xb8, 0x29, 0x0b, 0x14, 0x49, 0x63, 0x74, 0x03, 0x36,
  0x87, 0x23, 0x4d, 0xae, 0xd3, 0xdf, 0xec, 0x44, 0x26, 0xbd, 0x14, 0x76,
  0x99, 0xf3, 0xa7, 0x4d, 0xe0, 0x0b, 0x48, 0x6c, 0xb2, 0x2c, 0x8d, 0x1f,
  0x33, 0x36, 0xe7, 0xd5, 0x0f, 0x31, 0x54, 0xe7, 0x38, 0x8d, 0xce, 0x05,
  0xba, 0x31, 0xdd, 0x2c, 0xd7, 0x5a, 0x97, 0x49, 0xd1, 0x51, 0x75, 0x7e,
  0xea, 0x44, 0x4e, 0x7a, 0x62, 0x2d, 0x4b, 0x31, 0xb5, 0x09, 0x44, 0x8e,
  0x10, 0x00, 0x89, 0x6c, 0xee, 0xf0, 0x38, 0x99, 0xa5, 0xf3, 0x94, 0x6c,
  0x2f, 0x77, 0x0a, 0xbd, 0x50, 0x80, 0xd0, 0x4e, 0xe9, 0x27, 0x7f, 0x4a,
  0x9a, 0xf2, 0x1b, 0xe3, 0xaf, 0x61, 0x4a, 0xe4, 0x11, 0xe3, 0x8c, 0xcc,
  0xb0, 0xd5, 0x5c, 0x9f, 0x90, 0x49, 0x1a, 0x5e, 0x11, 0x39, 0x36, 0x77,
  0xa9, 0x4d, 0x95, 0xb7, 0x2e, 0x11, 0xbd, 0xf4, 0xcc, 0xd4, 0xa2, 0xc5,
  0xed, 0xa8, 0xdc, 0xde, 0x6e, 0x0a, 0xba, 0xd2, 0x52, 0x94, 0xd8, 0xef,
  0xb1, 0x21, 0xcc, 0x0f, 0x57, 0xa7, 0xd1, 0x3a, 0x16, 0x89, 0xbc, 0xdc,

  0xdf, 0xde, 0xd9, 0x70, 0x33, 0x4b, 0x94, 0x01, 0xf8, 0x72, 0xf3, 0x91,
  0x43, 0xb2, 0xce, 0x05, 0x9c, 0xe5, 0xa3, 0x58, 0x34, 0x0e, 0x3b, 0xf4,
  0x38, 0xb9, 0x4b, 0x47, 0x58, 0xa3, 0x83, 0x01, 0x79, 0xe4, 0xc1, 0xc3,
  0x04, 0x26, 0xe9, 0xed, 0xb8, 0xcd, 0xe8, 0xe5, 0xd9, 0x83, 0x89, 0x64,
  0x34, 0x65, 0xcc, 0x9b, 0x06, 0x1a, 0xa8, 0x64, 0xef, 0xdc, 0x59, 0x4b,
  0x94, 0x20, 0x6e, 0xf1, 0x04, 0xe1, 0xba, 0xb8, 0x82, 0x86, 0x74, 0x8c,
  0xae, 0x0d, 0xfc, 0xf4, 0x7a, 0xb2, 0x59, 0xc2, 0x7a, 0x4d, 0xec, 0x18,
  0x33, 0x50, 0x9a, 0x07, 0x28, 0x73, 0xea, 0xa0, 0x20, 0xc9, 0x48, 0xb8,
  0xc7, 0x76, 0x50, 0xb3, 0xfb, 0xae, 0x26, 0x54, 0x1f, 0xd5, 0xf7, 0x94,
  0x13, 0xe1, 0x80, 0xe6, 0x12, 0x1e, 0xf2, 0x77, 0x72, 0x32, 0xd5, 0xd9,
  0xa7, 0x1c, 0x0f, 0x9e, 0xbd, 0x78, 0x0d, 0x87, 0xac, 0x28, 0x28, 0xbf,
  0x8d, 0xf5, 0x71, 0x4f, 0x8e, 0xc3, 0xeb, 0x9b, 0x2a, 0x84, 0x48, 0x0a,
  0xa9, 0xbf, 0x91, 0x3d, 0x3f, 0xc0, 0x3c, 0xc9, 0xd3, 0x73, 0x2b, 0x8e,
  0x1e, 0x52, 0x8a, 0x4d, 0x0a, 0x87, 0xef, 0x2b, 0x56, 0xc1, 0x0f, 0x47,
  0x34, 0xca, 0xc7, 0x0d, 0x93, 0x1d, 0x37, 0xc1, 0x11, 0x78, 0xc4, 0xfd,
  0x38, 0x54, 0x49, 0x1c, 0x2f, 0xec, 0xc9, 0x46, 0x4a, 0x65, 0xf7, 0xfa,
  0x2f, 0xe2, 0x81, 0x21, 0x8f, 0x1a, 0xb1, 0xc0, 0x5f, 0xc5, 0x01, 0x9f,


  0xf0, 0x39, 0x1d, 0x7b, 0x12, 0xbb, 0x34, 0xca, 0x90, 0xd5, 0xd5, 0x30,
  0x59, 0x3c, 0xa2, 0x8d, 0xf3, 0x2d, 0x1a, 0x4c, 0x1b, 0xa4, 0x94, 0x00,
  0xcc, 0xf9, 0x6a, 0xdc, 0x4d, 0x76, 0xec, 0xc0, 0x75, 0x59, 0x3f, 0xe3,

  0x20, 0x65, 0x74, 0xf9, 0xf6, 0x07, 0xe5, 0x96, 0x21, 0x03, 0x9e, 0x1c,
  0x51, 0x5f, 0x98, 0xec, 0x30, 0xb0, 0x28, 0x30, 0x53, 0x2d, 0x95, 0xac,
  0x4f, 0x76, 0x13, 0x51, 0x38, 0x7c, 0xc3, 0x26, 0x33, 0xe2, 0x56, 0x77,
  0x0e, 0xe9, 0x77, 0xcd, 0x58, 0x53, 0xce, 0x96, 0xcc, 0x97, 0x3f, 0xf1,
  0xaf, 0x99, 0xc7, 0xc2, 0xbf, 0xaa, 0x9b, 0xe5, 0x7c, 0x08, 0xe7, 0x99,
  0x55, 0x5f, 0x76, 0x22, 0x0e, 0xb6, 0x4e, 0x64, 0x3f, 0x57, 0x98, 0x9d,
  0xa9, 0xd6, 0xeb, 0xa8, 0x6f, 0xb1, 0xb6, 0x6b, 0x3c, 0x3b, 0xad, 0x1d,
  0xb0, 0xf9, 0x79, 0x70, 0x78, 0xec, 0xcb, 0xf6, 0x54, 0xbd, 0x0f, 0x40,

  0x9e, 0x3f, 0xbd, 0xff, 0xcb, 0x4f, 0xaf, 0x76, 0xf7, 0xe2, 0x97, 0xf1,
  0xe8, 0xc5, 0xe4, 0xf3, 0x78, 0x7f, 0xbc, 0xff, 0xf2, 0xd5, 0xce, 0xe7,
  0xfb, 0xf1, 0xcb, 0xbd, 0x49, 0xfc, 0x62, 0x3b, 0xd9, 0x7e, 0x35, 0xd9,
  0xd9, 0x1d, 0x8f, 0x27, 0xc9, 0xe7, 0xe3, 0x97, 0x71, 0xa7, 0x4f, 0xe6,
  0x97, 0x4e, 0xdd, 0x67, 0xb5, 0x1a, 0x78, 0x8b, 0xa3, 0xc1, 0xbb, 0xa3,
  0xde, 0x76, 0x74, 0x93, 0x3c, 0xe8, 0x05, 0x63, 0x8f, 0xa6, 0xc9, 0xba,
  0x4b, 0x24, 0xaf, 0xba, 0x7d, 0xb1, 0x5a, 0x28, 0x88, 0x59, 0xd3, 0xe8,
  0x2b, 0x21, 0x0d, 0x98, 0x77, 0x51, 0xb7, 0x95, 0xf3, 0xea, 0x8c, 0xff,
  0xf0, 0x40, 0x7d, 0xf6, 0xb8, 0xae, 0xe6, 0xe5, 0x3f, 0x83, 0x77, 0x66,
  0xef, 0xe3, 0x11, 0x28, 0x49, 0xb0, 0x27, 0xf2, 0xe0, 0x00, 0x4c, 0x5b,
  0x60, 0xd3, 0xdd, 0x48, 0xfe, 0x82, 0x5e, 0x62, 0x67, 0x8c, 0x6f, 0x8a,
  0x7c, 0xb9, 0xb8, 0xcc, 0x67, 0xe9, 0xe8, 0x71, 0xd5, 0x70, 0xee, 0x63,
  0xb5, 0x5f, 0x9c, 0x30, 0x0b, 0x4f, 0xcb, 0xe4, 0x77, 0x34, 0xad, 0x1c,
  0x76, 0xfc, 0x0c, 0xdb, 0xaa, 0x37, 0x4a, 0x17, 0x37, 0x18, 0xe7, 0x3d,
  0xa4, 0x2c, 0x3f, 0x0c, 0xcd, 0xf0, 0x0f, 0xc2, 0x36, 0xd5, 0x40, 0x6e,
  0x64, 0x29, 0xe7, 0xa9, 0x6f, 0x8b, 0xc6, 0x95, 0x6a, 0x09, 0x9c, 0xba,
  0xa9, 0x24, 0xb3, 0x34, 0xf5, 0xfc, 0x78, 0xf6, 0x43, 0x7c, 0xdb, 0x55,
  0xdb, 0x66, 0xe7, 0x85, 0xfc, 0xaa, 0x1f, 0x5d, 0x51, 0x9c, 0x7c, 0xb9,
  0x60, 0xf3, 0x82, 0xfc, 0xf9, 0xfc, 0xbb, 0xe6, 0x45, 0xc3, 0xc9, 0x0b,
  0xc5, 0x70, 0x21, 0x1e, 0xec, 0xe8, 0x87, 0xab, 0xb3, 0x83, 0xe6, 0x3e,
  0x51, 0xb1, 0x51, 0x79, 0xb0, 0xb9, 0x49, 0x21, 0x9f, 0x9b, 0xf8, 0xe1,
  0xa1, 0x5f, 0x26, 0x9b, 0xe3, 0x7c, 0x54, 0x6e, 0x96, 0xe5, 0x4c, 0x77,
  0xa3, 0x5e, 0xfb, 0xf7, 0x09, 0xbc, 0xb9, 0xf9, 0x9c, 0xd8, 0x56, 0x32,
  0xee, 0x95, 0xa5, 0x97, 0x1b, 0x34, 0x38, 0xd6, 0xcc, 0x83, 0x13, 0xc9,
  0x49, 0x23, 0x39, 0xd7, 0x83, 0xdd, 0x1d, 0x0c, 0xde, 0x45, 0xfa, 0x32,
  0x6d, 0xaf, 0x09, 0x89, 0x9b, 0xbc, 0x9c, 0x6e, 0x40, 0x0d, 0x8b, 0x85,
  0x61, 0x7f, 0xe1, 0x3a, 0x74, 0x50, 0x9d, 0xce, 0xf9, 0x0f, 0xa9, 0x5d,


  0x49, 0xab, 0x95, 0x89, 0x7c, 0x2f, 0x1a, 0x0e, 0x10, 0xb3, 0x88, 0x70,
  0xfc, 0x5f, 0x9d, 0x60, 0x71, 0x64, 0x9f, 0xb4, 0x1e, 0xa1, 0x66, 0x71,


  0x3a, 0x50, 0xef, 0x34, 0x2f, 0x40, 0x78, 0xcc, 0xcb, 0x90, 0x17, 0x54,


  0x6f, 0x79, 0xc9, 0x6a, 0x5f, 0xc9, 0xb9, 0x88, 0x30, 0x4c, 0xe6, 0x0c,

  0x0e, 0xc7, 0x48, 0x39, 0x8c, 0x7d, 0xf7, 0xb0, 0x82, 0xf1, 0x2d, 0x3d,
  0xbc, 0x36, 0x2f, 0xda, 0x32, 0xb3, 0xc1, 0x0f, 0x12, 0xc7, 0x30, 0x59,
  0x29, 0x2c, 0xf3, 0x2c, 0x04, 0xca, 0xfd, 0x27, 0x31, 0x81, 0x3a, 0x44,
  0x51, 0xe4, 0x8e, 0x52, 0xdb, 0xfb, 0x96, 0x8c, 0x4b, 0x90, 0x8e, 0xe9,
  0x54, 0xc3, 0xeb, 0x2d, 0x39, 0x76, 0x28, 0xba, 0x2a, 0xca, 0x5d, 0x96,
  0x72, 0x70, 0x14, 0x0a, 0x98, 0xc2, 0x46, 0xa9, 0x25, 0x92, 0x9d, 0xc9,
  0xe9, 0x40, 0xb5, 0x2a, 0x78, 0xef, 0x26, 0x60, 0xcd, 0x8f, 0x7d, 0x1c,
  0xd3, 0xa8, 0xf4, 0x5e, 0xd2, 0xf0, 0xe2, 0xbe, 0x70, 0x12, 0xdb, 0x50,
  0x2b, 0x23, 0x37, 0x03, 0x3c, 0xd3, 0xb4, 0xf6, 0x28, 0xe7, 0xd6, 0xe8,
  0x7c, 0xa1, 0x12, 0xd7, 0xe6, 0x7a, 0x34, 0xf5, 0x5e, 0xf7, 0x36, 0xa5,
  0xa2, 0xea, 0x98, 0xf2, 0xfa, 0x43, 0xa2, 0x3d, 0x77, 0x82, 0xb4, 0x38,
  0xa0, 0x2f, 0xf3, 0x2a, 0x93, 0x36, 0xa9, 0x95, 0x4a, 0xa4, 0x10, 0x00,
  0x07, 0x02, 0xb1, 0x87, 0x19, 0xe7, 0x58, 0x4a, 0x3f, 0xcb, 0xad, 0x82,
  0x05, 0x84, 0x07, 0xbc, 0x90, 0xaa, 0x11, 0xfb, 0x1e, 0xdf, 0xe6, 0x9a,
  0x24, 0x4e, 0x22, 0xe4, 0xda, 0x3a, 0xce, 0xf6, 0xe2, 0x9f, 0x91, 0xf8,
  0x1a, 0x6a, 0x8c, 0xdc, 0xf2, 0x33, 0x3c, 0xbf, 0x90, 0x6b, 0x48, 0xb2,
  0xf2, 0xb9, 0xd0, 0x31, 0xa5, 0x12, 0x5e, 0x29, 0xfa, 0xe4, 0x22, 0x03,
  0xf5, 0x6c, 0x97, 0xb9, 0xa4, 0x6c, 0xe2, 0x44, 0x71, 0x9e, 0x3c, 0xc7,
  0x26, 0xa9, 0x9b, 0x82, 0xce, 0x9a, 0x31, 0x12, 0x97, 0x36, 0x57, 0xbf,
  0xf4, 0xa3, 0x95, 0x76, 0x33, 0x43, 0xd6, 0xab, 0x57, 0xf7, 0x40, 0x13,
  0x29, 0x12, 0xfd, 0x42, 0x96, 0x37, 0x27, 0xa5, 0xf3, 0x08, 0xe5, 0xa3,
  0x6a, 0x6e, 0xbf, 0x33, 0x01, 0xcd, 0xf1, 0x37, 0xa7, 0xdc, 0x92, 0xbd,
  0x99, 0x44, 0xf6, 0x91, 0xc8, 0xda, 0x99, 0xf6, 0x18, 0xc9, 0xdf, 0x40,
  0x15, 0x1b, 0x25, 0x4f, 0xfd, 0x00, 0xe7, 0xf4, 0x7a, 0x23, 0xe4, 0x27,
  0xb6, 0x23, 0x29, 0x45, 0xe1, 0x3d, 0x9d, 0xe5, 0xa5, 0xc6, 0x5f, 0x50,
  0xb9, 0xe0, 0xba, 0x5b, 0xe0, 0x06, 0xdf, 0xcb, 0x0f, 0xf8, 0x68, 0x1a,
  0xc3, 0xf1, 0x53, 0x5d, 0x99, 0xe2, 0xc4, 0x2a, 0x1b, 0x62, 0xab, 0xda,

  0x62, 0x61, 0xd4, 0x36, 0x8c, 0x35, 0x79, 0x10, 0xfd, 0xf4, 0x53, 0x37,
  0x02, 0x23, 0xb9, 0x31, 0xdc, 0x4f, 0x15, 0xfc, 0x14, 0x68, 0xf1, 0x27,


  0x2e, 0x58, 0xfa, 0xe9, 0x0e, 0x8d, 0x40, 0x74, 0x30, 0x97, 0x33, 0x8c,
  0x1e, 0xb1, 0x9a, 0x5d, 0xf7, 0xca, 0x71, 0x3d, 0xf4, 0x8a, 0xd4, 0x2c,
  0x6b, 0xb7, 0x73, 0x2a, 0x26, 0x1c, 0xd8, 0x72, 0x9e, 0x89, 0x75, 0xc2,
  0xc4, 0x49, 0xf7, 0x9e, 0xe4, 0xc0, 0xda, 0x1f, 0xd7, 0x2c, 0x21, 0x85,
  0xf6, 0xae, 0x48, 0x58, 0xd2, 0x93, 0xa8, 0x4a, 0x1d, 0x31, 0xa5, 0xd5,
  0xc3, 0x64, 0x6e, 0x46, 0x1c, 0x2e, 0x45, 0x66, 0x7a, 0x81, 0xce, 0x75,
  0x2e, 0x03, 0x6b, 0x8a, 0x71, 0x6b, 0x4a, 0x62, 0x6d, 0xdc, 0xe2, 0xe6,
  0xb1, 0xc4, 0x4c, 0x0e, 0x99, 0x8d, 0x77, 0x7b, 0x5a, 0x13, 0x8c, 0x65,
  0xef, 0xb1, 0xa8, 0x07, 0xf9, 0x00, 0x32, 0xbf, 0x1a, 0xeb, 0x84, 0x19,
  0xad, 0xf5, 0xd6, 0x4c, 0x2c, 0x4c, 0xf2, 0x65, 0xbc, 0x5c, 0x7a, 0x93,
  0x9c, 0x6d, 0x93, 0x0f, 0xbd, 0x4f, 0x3a, 0x49, 0x71, 0xb9, 0x9b, 0xee,
  0x68, 0x8b, 0xdb, 0xb1, 0x3a, 0x55, 0xa3, 0xf8, 0xf2, 0x7d, 0xe1, 0x3f,
  0x01, 0x87, 0x13, 0xa5, 0x45, 0x92, 0xe9, 0xa1, 0x03, 0x90, 0x37, 0xc4,
  0x86, 0x87, 0x7a, 0x3d, 0xc2, 0x19, 0x59, 0x30, 0x36, 0x08, 0x92, 0x04,
  0x65, 0x1e, 0x3c, 0x62, 0x25, 0xd8, 0x62, 0xe6, 0xf1, 0x5b, 0x49, 0x05,
  0xd4, 0x62, 0x6b, 0xbc, 0xe0, 0x08, 0x48, 0x71, 0x9f, 0x09, 0xa0, 0xc0,
  0x20, 0x27, 0xaf, 0xcc, 0x88, 0x72, 0x18, 0x24, 0x5d, 0x46, 0x6a, 0xca,
  0x02, 0x56, 0x20, 0xca, 0x40, 0x4f, 0x07, 0xc2, 0xf9, 0xbc, 0x8e, 0x3a,
  0xed, 0x9a, 0x50, 0xa7, 0xf9, 0x06, 0x65, 0x40, 0x5a, 0x17, 0xa7, 0xd4,
  0xcb, 0xd3, 0x44, 0xd6, 0x25, 0x93, 0xae, 0xf7, 0x37, 0x4e, 0x68, 0xe3,



  0x92, 0x2e, 0x91, 0xaf, 0x1b, 0x9c, 0x20, 0x5c, 0x06, 0x22, 0xfb, 0x36,
  0xcb, 0xca, 0xa1, 0x0f, 0x9b, 0xa7, 0x94, 0x92, 0xfb, 0x9a, 0xa4, 0x17,
  0x4b, 0x3b, 0xe7, 0x69, 0x2f, 0x14, 0xaf, 0x6f, 0x63, 0xc5, 0x09, 0x7e,
  0x4f, 0x5c, 0xd2, 0x2a, 0x3a, 0xcc, 0x8d, 0x5e, 0xcc, 0x08, 0xa7, 0x43,
  0x6b, 0x5d, 0x48, 0x25, 0xf2, 0x76, 0x67, 0x7b, 0xc3, 0x54, 0x47, 0x12,
  0xd8, 0x06, 0x67, 0x66, 0x8b, 0x9e, 0xd0, 0xb9, 0xc9, 0x39, 0x97, 0xa8,
  0x73, 0x80, 0x85, 0x7b, 0x72, 0x1b, 0x69, 0x8d, 0x0a, 0x83, 0xd0, 0x18,
  0x8e, 0x32, 0xb5, 0xde, 0x5d, 0xbc, 0x3f, 0xa9, 0x67, 0xe0, 0xd2, 0x4f,
  0x42, 0xce, 0x57, 0x60, 0x57, 0x6f, 0x81, 0xc3, 0x30, 0x0d, 0xc4, 0x9e,
  0x36, 0xc7, 0xb4, 0x05, 0xd3, 0x9a, 0x26, 0xd5, 0xe2, 0x7e, 0x99, 0x8e,
  0xd7, 0x37, 0x90, 0x46, 0xb0, 0xdc, 0xa4, 0x47, 0x35, 0x4e, 0x6c, 0x1a,
  0x96, 0xd1, 0x3a, 0x2b, 0xe8, 0x45, 0x52, 0x2d, 0x8b, 0x8c, 0x1d, 0xe6,


  0x38, 0xf7, 0xa6, 0x91, 0x05, 0xd2, 0x99, 0x45, 0x9d, 0xeb, 0x1c, 0x10,

  0xcc, 0x1c, 0x4e, 0x61, 0xe2, 0x01, 0xc1, 0xdc, 0xbd, 0x30, 0x79, 0x1f,

  0x74, 0xf0, 0xb4, 0x16, 0x4f, 0x7e, 0xb9, 0x3b, 0x11, 0x1d, 0x5d, 0x5e,
  0xbe, 0x39, 0xba, 0x3e, 0x32, 0x6b, 0x23, 0x01, 0x4d, 0xcc, 0x85, 0x34,
  0x64, 0xe0, 0x43, 0xa8, 0x35, 0xe1, 0x93, 0x6b, 0x7f, 0xfa, 0x30, 0x38,


  0xb9, 0x6a, 0x1e, 0xec, 0xe5, 0xd5, 0x05, 0x02, 0x12, 0xfd, 0xe9, 0xa7,
  0xa3, 0xc5, 0x62, 0xa6, 0x41, 0xc1, 0x37, 0x71, 0x15, 0xaf, 0x79, 0xb7,
  0x7a, 0x67, 0x03, 0xe7, 0x77, 0x6f, 0xe6, 0x37, 0x11, 0x21, 0x47, 0xa6,
  0x7e, 0xd4, 0xc7, 0x03, 0x2d, 0x46, 0x9a, 0x7e, 0x6b, 0x76, 0x83, 0x36,
  0x80, 0xb2, 0x67, 0xdb, 0x17, 0x92, 0x5b, 0x4e, 0xa6, 0x89, 0x64, 0xba,
  0x59, 0x33, 0x30, 0xb2, 0x93, 0xd1, 0xb2, 0x52, 0x92, 0x27, 0xfa, 0xc2,

  0x2a, 0xee, 0xe6, 0xbe, 0x78, 0xc7, 0x63, 0xc3, 0x28, 0xcc, 0x05, 0x08,
  0x44, 0x00, 0x08, 0x8d, 0x52, 0xa4, 0x75, 0xb6, 0xcc, 0xc5, 0x02, 0x34,
  0x35, 0x4e, 0x38, 0xac, 0x42, 0xa0, 0x02, 0x3c, 0x25, 0x6f, 0x43, 0xfe,
  0x08, 0xb7, 0xb1, 0x17, 0x9d, 0x48, 0xb5, 0x1b, 0x2d, 0x1c, 0x7e, 0xe0,

  0x3d, 0x54, 0x19, 0xf3, 0x41, 0xd8, 0x7d, 0x98, 0x57, 0x38, 0x40, 0x1b,

  0x9d, 0xa6, 0x08, 0xe0, 0xd2, 0x56, 0x78, 0x08, 0xa7, 0x8d, 0x9b, 0x4e,
  0xd6, 0x53, 0x27, 0x90, 0xf4, 0xd4, 0x8b, 0xa7, 0x48, 0x5e, 0xf0, 0x28,
  0x68, 0xd7, 0x60, 0x34, 0xe1, 0xbf, 0x36, 0xb7, 0xfb, 0x5b, 0x1d, 0x7f,
  0xf2, 0x78, 0x59, 0x08, 0x24, 0xc5, 0x44, 0xd5, 0x90, 0x1b, 0x56, 0x79,
  0xfe, 0xe4, 0xfc, 0x98, 0x85, 0x81, 0x7e, 0xba, 0x80, 0xf1, 0x83, 0x53,
  0xe9, 0x5d, 0x78, 0x59, 0x20, 0x98, 0xb9, 0x5b, 0x28, 0x53, 0x04, 0x9e,
  0x98, 0xe5, 0xf7, 0xb8, 0x12, 0x20, 0xb5, 0xd9, 0xac, 0x86, 0x66, 0xd3,
  0x09, 0x6f, 0x73, 0x46, 0xc0, 0x51, 0x49, 0x73, 0xb7, 0x83, 0x91, 0x6b,

  0x55, 0x3e, 0x5d, 0x0d, 0xcf, 0xa4, 0xbc, 0x92, 0x15, 0x69, 0x28, 0xc1,
  0x05, 0x13, 0x00, 0x2e, 0xe7, 0xf1, 0xbd, 0x99, 0x9b, 0x99, 0xd1, 0xd3,
  0xf4, 0x90, 0x1e, 0x0e, 0x82, 0x5a, 0xe9, 0x21, 0xd7, 0xaa, 0x7b, 0xb6,
  0xfc, 0xfb, 0xf8, 0x21, 0x9d, 0x2f, 0xe7, 0xf4, 0x31, 0xa4, 0x6d, 0x79,
  0x4c, 0xe2, 0x09, 0xe4, 0x55, 0xe4, 0xf4, 0x14, 0x22, 0xf2, 0xb5, 0x32,
  0x72, 0x2c, 0xfa, 0x90, 0x90, 0x01, 0x91, 0xdc, 0xb7, 0xcb, 0x23, 0x65,
  0x81, 0x02, 0x0e, 0x65, 0xc3, 0x1b, 0x00, 0xfa, 0x41, 0x8c, 0x39, 0x07,
  0x65, 0x6e, 0x12, 0x76, 0x02, 0xec, 0x9c, 0xc1, 0x12, 0x44, 0x87, 0x73,
  0xf2, 0x55, 0x93, 0x22, 0xcd, 0xc7, 0xe6, 0xde, 0xa0, 0xfe, 0x98, 0x66,
  0x4b, 0xd8, 0x67, 0xf6, 0x25, 0x73, 0x10, 0x02, 0x7f, 0xe5, 0x79, 0x08,
  0x29, 0xab, 0x7e, 0x40, 0xc5, 0x12, 0x9a, 0x82, 0xfa, 0xb2, 0xbf, 0xbb,
  0xd3, 0xdf, 0xea, 0xd6, 0x0c, 0x7a, 0xc1, 0x94, 0x80, 0xdb, 0x35, 0x4a,
  0xe7, 0xa6, 0xde, 0xb4, 0xff, 0xbb, 0x39, 0x6e, 0x28, 0x23, 0x7c, 0x1e,
  0x3f, 0xd0, 0xf1, 0x05, 0x8f, 0x35, 0x8f, 0x0e, 0xdf, 0x5d, 0x0c, 0xae,
  0xb7, 0x0f, 0x2e, 0x2f, 0xae, 0xe0, 0xbf, 0xf8, 0xf7, 0x1d, 0xfa, 0xfb,
  0x8e, 0x67, 0x55, 0xbe, 0x95, 0x0c, 0x5a, 0x2d, 0xd6, 0x21, 0x0d, 0x85,
  0x34, 0x1a, 0xde, 0xcd, 0xc8, 0x19, 0x08, 0xf5, 0x72, 0x62, 0x83, 0x23,
  0x53, 0xd1, 0xd8, 0x3c, 0x62, 0xe7, 0x53, 0x9a, 0x64, 0xd7, 0x8f, 0xfc,
  0x44, 0xbe, 0xb4, 0x52, 0x6d, 0x4a, 0x6a, 0xe1, 0xb5, 0xca, 0xbe, 0xe9,
  0xeb, 0xe6, 0x3a, 0x66, 0xa9, 0xcf, 0x51, 0xbc, 0x3a, 0xca, 0x0d, 0xab,
  0xff, 0x6a, 0x34, 0x03, 0xed, 0x3e, 0xc1, 0x5c, 0x92, 0x71, 0xc2, 0x01,
  0x16, 0xfc, 0x49, 0xc8, 0x30, 0x81, 0xeb, 0x27, 0x25, 0x0b, 0x5e, 0x82,
  0x21, 0x51, 0xa4, 0x46, 0x75, 0x60, 0x36, 0x30, 0xc7, 0x14, 0x34, 0x71,
  0xde, 0x8e, 0x2c, 0xf1, 0x2a, 0x04, 0x18, 0x47, 0xce, 0x75, 0x62, 0x51,

  0x91, 0x3e, 0x95, 0xdb, 0x9f, 0x5f, 0x5c, 0x47, 0xf1, 0x64, 0xa2, 0xd8,
  0x00, 0x58, 0x96, 0x80, 0x1a, 0xeb, 0xe6, 0x82, 0x25, 0x59, 0x5c, 0x85,




  0x52, 0x37, 0x44, 0x1f, 0xb9, 0x3e, 0x1b, 0x6c, 0xa2, 0x0b, 0x8b, 0x93,


  0xe0, 0x06, 0xe7, 0xa7, 0xdd, 0x9a, 0xaf, 0xda, 0x4d, 0x7d, 0xd9, 0x40,
  0x49, 0x19, 0x56, 0x28, 0x62, 0x47, 0x16, 0x5a, 0xc4, 0x19, 0x4c, 0xaa,
  0xa3, 0x23, 0xed, 0x48, 0x35, 0x58, 0x87, 0x8e, 0xb6, 0x13, 0x69, 0xd4,
  0x94, 0xec, 0xe2, 0xf9, 0xa2, 0x7a, 0xf4, 0xeb, 0x45, 0xc9, 0xb7, 0x81,
  0x38, 0x2c, 0xa8, 0x74, 0x74, 0xd0, 0x2c, 0xc1, 0x65, 0xd1, 0x92, 0x3a,

  0x7d, 0x1e, 0x76, 0xa7, 0x43, 0xa3, 0xd2, 0xa0, 0xf0, 0x77, 0x1c, 0x93,
  0x88, 0x76, 0x98, 0x84, 0xd2, 0xfb, 0xf9, 0x43, 0xce, 0xe0, 0x91, 0x19,


  0x1e, 0x26, 0x66, 0xea, 0xd4, 0x94, 0x3a, 0x90, 0xc1, 0xe4, 0x45, 0x3a,
  0xc5, 0x3c, 0x81, 0x66, 0xe9, 0x98, 0x9d, 0x88, 0xe7, 0x99, 0x42, 0x65,
  0xac, 0xac, 0x3a, 0x8e, 0x2b, 0xa1, 0xf2, 0x12, 0xf4, 0x29, 0x6d, 0xb4,
  0x50, 0x93, 0x46, 0xa7, 0x83, 0xfc, 0xa7, 0x0a, 0xe8, 0xf1, 0xac, 0xec,
  0xc1, 0xea, 0x50, 0xee, 0xd8, 0x20, 0x90, 0x96, 0xfe, 0xe8, 0x5d, 0x22,
  0x24, 0x9c, 0xd3, 0x4a, 0x19, 0x38, 0x87, 0x8d, 0x9a, 0xc3, 0x31, 0x62,
  0x1b, 0x70, 0x04, 0xad, 0xfa, 0xe8, 0x6c, 0xef, 0xbc, 0xec, 0x6f, 0xc1,
  0xff, 0xc1, 0xa1, 0x88, 0x7e, 0x44, 0x70, 0x51, 0x16, 0x16, 0xc8, 0x3c,

  0x99, 0x3c, 0x34, 0x49, 0x92, 0x05, 0x50, 0x5e, 0x4c, 0x3b, 0x2b, 0x6b,
  0x58, 0x6b, 0x22, 0x05, 0x0f, 0xd2, 0x88, 0x93, 0x78, 0x2c, 0x3f, 0xd1,
  0x3b, 0x5e, 0x2c, 0x67, 0x81, 0xb4, 0x3e, 0xc7, 0x8d, 0x8c, 0xda, 0xd9,

  0xec, 0x4e, 0x9c, 0xc8, 0xef, 0x90, 0x37, 0x71, 0x1d, 0x5f, 0xbf, 0x96,
  0x14, 0xf5, 0xaa, 0xe6, 0x13, 0x3c, 0x16, 0x93, 0x8d, 0x38, 0x73, 0x0f,
  0x2e, 0xc3, 0x61, 0x3e, 0x99, 0x94, 0x49, 0xd5, 0x14, 0x40, 0xc7, 0xf2,
  0xc8, 0xe6, 0x15, 0x01, 0x1c, 0x12, 0xa7, 0xd2, 0x8a, 0x9b, 0xa8, 0x0e,
  0xcb, 0x13, 0x49, 0x16, 0x1a, 0xb3, 0x2d, 0x1e, 0xae, 0x1f, 0x28, 0x32,
  0x70, 0x7f, 0xaf, 0x19, 0x22, 0x5c, 0x15, 0xaf, 0x60, 0x2f, 0x54, 0x6e,
  0xc5, 0x38, 0x2e, 0x22, 0xe9, 0x9a, 0xa8, 0x6c, 0x7a, 0x25, 0x6e, 0xd3,
  0xc5, 0x02, 0xcd, 0x1b, 0x46, 0x38, 0x23, 0xb2, 0x35, 0x01, 0x34, 0x8a,
  0xe3, 0x12, 0x29, 0x6b, 0xb6, 0x20, 0x28, 0xc9, 0x23, 0x91, 0xf9, 0xc3,




  0x64, 0xe2, 0x07, 0x81, 0x38, 0xa9, 0xd1, 0x85, 0xb5, 0x91, 0x1a, 0xdd,
  0x31, 0x42, 0xd8, 0x64, 0xb1, 0xb2, 0x98, 0x89, 0x03, 0xf8, 0x20, 0xc5,
  0x7f, 0xdd, 0xc0, 0xfd, 0xb7, 0xc5, 0x59, 0xc6, 0x0f, 0x37, 0x38, 0xfd,
  0x9f, 0x27, 0x16, 0x84, 0xc8, 0xa0, 0xfc, 0x70, 0xb9, 0x4b, 0xa8, 0x78,
  0x08, 0x6e, 0x61, 0xef, 0x18, 0xce, 0xab, 0x43, 0x53, 0xb1, 0xa9, 0x26,
  0x79, 0xa3, 0x1c, 0x83, 0xec, 0x1e, 0xd4, 0x24, 0x48, 0x1b, 0xda, 0xc4,
  0xba, 0x7f, 0x4f, 0x34, 0x30, 0x46, 0x25, 0xfb, 0x17, 0x65, 0x8d, 0x74,

  0x3b, 0x2a, 0xa9, 0x9a, 0x73, 0x6b, 0x4e, 0x44, 0x59, 0xdc, 0x4c, 0x33,
  0x54, 0x19, 0x59, 0x81, 0xf1, 0x4a, 0x32, 0xb4, 0x0e, 0x96, 0xd1, 0x4e,
  0x96, 0xd5, 0xef, 0x18, 0x3b, 0x29, 0x90, 0x7e, 0x09, 0xc6, 0xce, 0x21,
  0xea, 0x11, 0x13, 0x35, 0x62, 0x75, 0xf6, 0xfe, 0x0a, 0x56, 0xf6, 0xa1,
  0xba, 0x29, 0xda, 0x80, 0x01, 0xd4, 0xa9, 0x81, 0x45, 0x14, 0x64, 0x84,
  0x11, 0x6d, 0x18, 0x7c, 0x1a, 0xdd, 0x6a, 0x86, 0xd5, 0x89, 0x49, 0x97,
  0x21, 0x20, 0xd0, 0xe6, 0x9d, 0x9f, 0x10, 0xe8, 0x8d, 0x53, 0xfe, 0x6d,
  0x6a, 0x27, 0xfb, 0x18, 0xa5, 0x9a, 0xf1, 0x08, 0x25, 0x27, 0x56, 0xca,
  0x18, 0x6a, 0x34, 0xa4, 0x9e, 0xcc, 0x4d, 0xb3, 0x1e, 0x17, 0x57, 0xeb,
  0xb3, 0x14, 0x4c, 0x43, 0xd4, 0x36, 0x21, 0x47, 0x3e, 0x22, 0x36, 0xc3,
  0x2b, 0x49, 0xac, 0x20, 0xb5, 0x96, 0x3e, 0x1b, 0x72, 0xa3, 0xb3, 0x2f,
  0x92, 0x1c, 0x88, 0xfc, 0x71, 0x74, 0x90, 0xdd, 0x82, 0xee, 0x9c, 0x75,
  0xf1, 0xa7, 0x54, 0x88, 0x6a, 0x2e, 0x19, 0xfb, 0x36, 0xaa, 0x84, 0x83,
  0x16, 0x49, 0x40, 0x97, 0x75, 0x9e, 0x95, 0x47, 0x1d, 0x37, 0xca, 0x79,
  0x52, 0x49, 0xea, 0x08, 0x4f, 0x5e, 0x6b, 0xb3, 0xa8, 0xbe, 0xeb, 0x74,

  0xd2, 0x18, 0x8e, 0xe0, 0xe2, 0x92, 0xaa, 0x5e, 0xad, 0x2f, 0x31, 0x5c,

  0xc6, 0xc8, 0x42, 0x5f, 0x68, 0x17, 0xae, 0x41, 0x47, 0xfd, 0xb2, 0xbc,
  0x82, 0x70, 0xea, 0x82, 0x4e, 0x07, 0xdd, 0x44, 0xd5, 0x38, 0x44, 0x93,
  0xac, 0xfb, 0xea, 0x85, 0x14, 0xe8, 0x40, 0x37, 0x1d, 0x02, 0x41, 0xd0,
  0x28, 0x7a, 0x6f, 0xbf, 0xa6, 0x89, 0x2b, 0x81, 0xaa, 0x42, 0xa7, 0xaa,
  0x14, 0x53, 0x68, 0x8a, 0xb1, 0x7a, 0x46, 0x74, 0xa2, 0xc0, 0x85, 0xc5,
  0x2e, 0xba, 0x8f, 0x89, 0xd2, 0xcc, 0xf8, 0xa1, 0xda, 0x07, 0x27, 0xff,
  0xb1, 0x37, 0xb4, 0xe4, 0x6c, 0xe1, 0x73, 0x82, 0x69, 0x4a, 0xf2, 0x10,
  0xd2, 0x3c, 0x08, 0x96, 0xb5, 0xca, 0x29, 0x2e, 0x25, 0x44, 0x1a, 0xb3,
  0x29, 0xbc, 0x85, 0xf7, 0x37, 0xf9, 0x2c, 0x09, 0x85, 0x48, 0x9c, 0x92,
  0x5f, 0x02, 0x77, 0xc1, 0xb4, 0x5e, 0xf2, 0x36, 0xdf, 0x51, 0xc6, 0x70,
  0x2d, 0x74, 0x02, 0xfa, 0x5d, 0x12, 0x63, 0xc1, 0x91, 0x49, 0x9a, 0xbf,


  0xeb, 0x7a, 0x69, 0xec, 0x70, 0xcf, 0x87, 0x79, 0x69, 0xe8, 0x05, 0x0b,


  0x6b, 0x51, 0x82, 0xdc, 0xc7, 0x05, 0x31, 0x66, 0x41, 0xc9, 0x52, 0x00,
  0x51, 0x37, 0x67, 0x10, 0x55, 0xc1, 0x66, 0xbd, 0x43, 0x8a, 0xc5, 0xe8,
  0x40, 0x26, 0xa0, 0x00, 0xa0, 0x9b, 0x96, 0x68, 0x07, 0x87, 0x14, 0xfc,

  0xab, 0x1b, 0x82, 0xc2, 0x95, 0x8a, 0x75, 0xb8, 0x87, 0x37, 0x28, 0xd3,

  0xd3, 0x6a, 0x19, 0x57, 0xcf, 0x4b, 0xd8, 0x6e, 0xe3, 0x4d, 0xcc, 0x9c,
  0xdc, 0x7c, 0xd4, 0x36, 0xcc, 0x86, 0x96, 0x28, 0xa2, 0x7b, 0x90, 0x87,
  0x78, 0xd7, 0xfe, 0xeb, 0x09, 0xc6, 0x74, 0x49, 0x88, 0x7e, 0x37, 0x75,

  0x48, 0x28, 0xaa, 0xc9, 0x15, 0x79, 0xa2, 0x95, 0x6f, 0x3c, 0xa6, 0x8a,
  0xfb, 0xd3, 0x40, 0xa0, 0x9f, 0xa2, 0x63, 0x30, 0x9d, 0xd9, 0xa3, 0x1d,
  0xd0, 0x29, 0x99, 0xd5, 0x0c, 0x6f, 0x07, 0x2e, 0xcf, 0x7c, 0xc1, 0xcb,
  0x5a, 0xea, 0x0c, 0x40, 0x05, 0xe7, 0x6f, 0x1e, 0x74, 0x14, 0x7d, 0xd4,
  0xc0, 0x29, 0x09, 0x17, 0x91, 0xa2, 0x2d, 0xad, 0xff, 0x50, 0x5f, 0x3d,

  0x5e, 0xff, 0xe6, 0x70, 0x08, 0xc5, 0xbd, 0xfd, 0xfa, 0xbb, 0xa3, 0xb3,
  0x0f, 0x27, 0xdb, 0x5f, 0x44, 0xf8, 0xaf, 0x1d, 0xfe, 0xd7, 0x4e, 0x27,
  0x74, 0x5c, 0xc0, 0xa8, 0xd6, 0x5e, 0xaf, 0x45, 0xe5, 0xe3, 0x7c, 0x98,

  0xcf, 0xcc, 0x81, 0xc9, 0x56, 0x68, 0x20, 0xad, 0x2b, 0x52, 0xdc, 0x94,
  0x6e, 0x8b, 0xab, 0xbc, 0xc9, 0xb2, 0x4b, 0x49, 0x3a, 0x54, 0x76, 0x43,

  0x11, 0x3c, 0xb7, 0x96, 0xb8, 0xa2, 0x4a, 0x6b, 0xe5, 0x61, 0x12, 0xcb,
  0x6b, 0x4b, 0x04, 0x25, 0xa1, 0xa4, 0x17, 0xbb, 0x0c, 0x70, 0x0e, 0x16,

  0x2f, 0x16, 0xd2, 0xd9, 0x65, 0x18, 0x7e, 0xb6, 0x19, 0x70, 0x27, 0xba,
  0x52, 0x06, 0x77, 0x9a, 0x5f, 0x17, 0x03, 0x01, 0xd1, 0x38, 0x1e, 0x05,
  0x7f, 0x60, 0xad, 0x48, 0x0c, 0xeb, 0xa5, 0x55, 0xe3, 0xbb, 0xcd, 0xe1,
  0x86, 0xa2, 0xbb, 0x38, 0xd0, 0x5c, 0x67, 0x88, 0x06, 0xd6, 0xd3, 0xf4,
  0x0c, 0xeb, 0xea, 0x40, 0x63, 0x74, 0x8c, 0x9a, 0xb5, 0xfa, 0x33, 0x22,
  0x07, 0xfc, 0xd9, 0xc0, 0x48, 0x0a, 0x0e, 0x63, 0x54, 0x0b, 0x09, 0xb2,
  0xaf, 0xd9, 0x87, 0x5e, 0x61, 0x20, 0x18, 0xd8, 0x1c, 0x4a, 0x37, 0x99,
  0x7b, 0xd9, 0x59, 0x19, 0x68, 0x92, 0xeb, 0xc0, 0xde, 0x37, 0x5c, 0x4c,



  0x10, 0x3d, 0x3e, 0x71, 0x4b, 0x54, 0x26, 0xa2, 0xda, 0x12, 0x2b, 0xb8,
  0xbe, 0xa9, 0x09, 0x1a, 0x55, 0xf9, 0xb4, 0xc0, 0x99, 0xe3, 0xb3, 0x22,
  0x39, 0x78, 0x18, 0x26, 0x53, 0xcc, 0xde, 0x9c, 0xc5, 0x1e, 0x12, 0x0d,
  0xdd, 0x35, 0x85, 0xc3, 0xc0, 0x40, 0xbf, 0x21, 0x7c, 0xf8, 0xfe, 0xe3,
  0x2c, 0xd9, 0x50, 0xc3, 0x40, 0x85, 0xdd, 0xe6, 0xfb, 0xfc, 0xef, 0x30,
  0xef, 0x58, 0x3e, 0x12, 0x92, 0x99, 0x22, 0x02, 0x5b, 0x67, 0x6e, 0xf9,
  0x0b, 0x97, 0x89, 0xbb, 0x5c, 0xa3, 0x66, 0x1b, 0x53, 0x10, 0x18, 0xf5,
  0x32, 0x4a, 0xd5, 0xf6, 0x48, 0x47, 0xb4, 0x0b, 0x4f, 0x42, 0x3b, 0x78,

  0x33, 0x40, 0xca, 0xb9, 0x64, 0xe8, 0x18, 0x12, 0x13, 0xb1, 0xd3, 0x64,
  0xe1, 0x4d, 0x9d, 0xaa, 0x45, 0x10, 0x9d, 0x3c, 0x24, 0xc5, 0x08, 0xa1,
  0x26, 0x46, 0xa0, 0x97, 0x12, 0x3f, 0x9d, 0x88, 0x7b, 0x0a, 0x73, 0xa9,
  0x24, 0x2b, 0xbe, 0x8e, 0x0b, 0x43, 0xe2, 0x57, 0xe9, 0xac, 0x95, 0xc4,
  0x28, 0xf7, 0x61, 0x04, 0x84, 0xd1, 0x37, 0x10, 0x78, 0x2a, 0x20, 0xeb,
  0xec, 0x43, 0x8b, 0xcc, 0x28, 0x9c, 0xe0, 0x65, 0xec, 0xd1, 0x0e, 0xeb,
  0x8b, 0xce, 0x69, 0x0a, 0xb9, 0xd0, 0x5c, 0x18, 0xd0, 0xcc, 0x46, 0x87,
  0x10, 0x2a, 0x80, 0x70, 0xa1, 0xda, 0xd3, 0x13, 0xcd, 0xe9, 0x10, 0x7e,
  0x07, 0x45, 0x4b, 0xb2, 0x47, 0x45, 0x93, 0x5a, 0x27, 0xb1, 0xc9, 0xca,
  0xa1, 0x62, 0x0e, 0x92, 0xe6, 0xe5, 0x17, 0x23, 0xcf, 0xf2, 0x7b, 0x8c,
  0xc1, 0xd4, 0x11, 0x40, 0x15, 0xec, 0x87, 0x73, 0xea, 0x98, 0x2f, 0xf7,
  0x50, 0x57, 0xe2, 0xcf, 0xf6, 0x35, 0x5a, 0x1b, 0xa4, 0x00, 0x2d, 0xa7,
  0x6d, 0x56, 0x22, 0xc5, 0x36, 0x83, 0xa2, 0x62, 0x67, 0x32, 0xeb, 0x17,
  0x16, 0x80, 0x2b, 0x24, 0xd8, 0x68, 0xc5, 0xc3, 0xbc, 0xba, 0x71, 0xf2,
  0x50, 0x11, 0xd4, 0x0f, 0xfd, 0x3c, 0x93, 0x65, 0x45, 0x46, 0x80, 0x9a,
  0x81, 0x95, 0xa4, 0x1a, 0x8b, 0xb3, 0xc8, 0xcb, 0x7a, 0xb8, 0x45, 0xf0,
  0x37, 0x5c, 0xa2, 0x01, 0xb0, 0xc5, 0x04, 0xda, 0x8c, 0x32, 0xc5, 0x91,
  0x2e, 0xc1, 0x00, 0x26, 0x7c, 0x41, 0xf8, 0x26, 0x26, 0x2a, 0x95, 0x25,
  0x62, 0xc9, 0x51, 0x4a, 0x2a, 0x6c, 0xac, 0x07, 0x39, 0x41, 0x20, 0x49,
  0x99, 0x7b, 0xa4, 0xeb, 0x0c, 0x7f, 0x63, 0x81, 0x9b, 0x18, 0x17, 0x03,

  0xad, 0xf6, 0xa1, 0x1c, 0x4d, 0x49, 0xf7, 0x17, 0xe9, 0x21, 0xe0, 0x14,
  0x31, 0xfa, 0x6b, 0xcb, 0x85, 0xfd, 0x97, 0x8d, 0x1a, 0xcf, 0xc8, 0x2b,
  0x4a, 0x06, 0xd0, 0x25, 0x08, 0x62, 0x93, 0x18, 0x4f, 0xdb, 0xed, 0x33,
  0xae, 0xd8, 0xc6, 0xdf, 0x42, 0x71, 0xde, 0xe5, 0x62, 0x4c, 0x6a, 0x9f,
  0xbe, 0x43, 0x8a, 0x92, 0x03, 0x84, 0x59, 0xe6, 0x72, 0x1b, 0x69, 0x78,
  0x64, 0x32, 0x96, 0xcb, 0x84, 0x40, 0x72, 0x9a, 0xf7, 0xdf, 0x0d, 0xb0,
  0xd4, 0x90, 0xda, 0xd8, 0x87, 0x33, 0x77, 0x79, 0x03, 0xbc, 0x48, 0xc2,
  0xb7, 0x07, 0xb4, 0x5f, 0x86, 0x02, 0x95, 0x2a, 0xc0, 0x81, 0xc3, 0xff,
  0x75, 0x99, 0x8d, 0x1a, 0x32, 0x2a, 0xef, 0x3a, 0x78, 0x9c, 0x12, 0x95,
  0x35, 0x12, 0xa2, 0x49, 0xf4, 0xf4, 0x21, 0x81, 0xbf, 0xc1, 0x8a, 0x50,
  0xac, 0xde, 0x40, 0xf1, 0x36, 0x73, 0x4a, 0x68, 0x6f, 0x52, 0x38, 0xa1,
  0x62, 0x74, 0x43, 0x48, 0x02, 0xe4, 0x47, 0x4a, 0xd4, 0x39, 0xea, 0x29,
  0xc2, 0xe2, 0xf9, 0xa7, 0x61, 0x45, 0x17, 0x4b, 0x91, 0x1d, 0x21, 0x5a,
  0x48, 0x9e, 0x29, 0x93, 0x6e, 0x9b, 0xa7, 0x9f, 0xd9, 0x75, 0x83, 0x7b,
  0x9e, 0xcc, 0x4a, 0x2b, 0x20, 0xcd, 0x3b, 0x56, 0x52, 0x92, 0x11, 0x9e,
  0x91, 0x4f, 0x96, 0x45, 0x71, 0x1a, 0xbc, 0xe1, 0x34, 0x13, 0x50, 0x73,
  0x64, 0x32, 0x68, 0x57, 0x22, 0x9d, 0x3c, 0x2a, 0xc6, 0x8c, 0x8c, 0xd0,
  0x84, 0x99, 0xf1, 0x24, 0x4f, 0x6e, 0xf6, 0x4d, 0x00, 0x6c, 0x74, 0xab,
  0x52, 0xc5, 0x5b, 0x67, 0x52, 0x41, 0x47, 0x06, 0x96, 0x4f, 0x53, 0x1f,
  0x10, 0x8c, 0x7f, 0xf5, 0x7a, 0x93, 0xca, 0x4b, 0xd7, 0x72, 0xce, 0xba,
  0x4e, 0x02, 0xb3, 0x89, 0x60, 0xf4, 0xbc, 0x57, 0x34, 0xbe, 0x3b, 0xac,
  0xe1, 0x89, 0xce, 0xde, 0xb2, 0x17, 0xef, 0xf8, 0x0a, 0xff, 0x96, 0x1a,
  0x84, 0x22, 0xaa, 0xc3, 0xa5, 0xc6, 0x1e, 0x9c, 0x20, 0xfb, 0xfe, 0xbb,
  0x66, 0x19, 0xe6, 0xfa, 0xc5, 0x60, 0x73, 0xf7, 0xd5, 0xd6, 0x46, 0x20,
  0x67, 0x19, 0xbe, 0xe1, 0xe2, 0x14, 0xee, 0x6d, 0xf5, 0xb7, 0x36, 0x1a,
  0xb3, 0xc1, 0xed, 0x5e, 0x01, 0xa0, 0xa2, 0xe8, 0xea, 0x46, 0x68, 0x50,
  0x32, 0xb2, 0x2d, 0xd6, 0x92, 0xbc, 0x69, 0xb7, 0x98, 0xf4, 0x2a, 0xb9,
  0x03, 0x52, 0x0b, 0xe6, 0xaf, 0x9d, 0xa5, 0xa5, 0x18, 0x36, 0x28, 0xc9,
  0x54, 0xb6, 0x60, 0xb5, 0x76, 0x3d, 0x27, 0x98, 0x1e, 0x41, 0x61, 0xc9,
  0xb9, 0x0e, 0x81, 0x68, 0x4b, 0x09, 0x93, 0x2a, 0x28, 0x31, 0x8f, 0x62,
  0xfa, 0x9f, 0xdc, 0xd9, 0x72, 0x54, 0x43, 0x7b, 0x7c, 0xe9, 0x9e, 0x29,
  0x6a, 0xfa, 0xbd, 0xb8, 0x1c, 0xa5, 0x29, 0xdb, 0x33, 0x2d, 0x66, 0x8c,
  0x66, 0x3c, 0x12, 0x86, 0x1c, 0x55, 0x52, 0xa7, 0x31, 0x87, 0x6a, 0x2d,




  0x50, 0xa9, 0x37, 0x2c, 0x2a, 0xab, 0x40, 0x62, 0xab, 0xc6, 0x15, 0x1b,
  0x1e, 0x9b, 0xb5, 0x08, 0xb6, 0xb2, 0xd1, 0x2f, 0xcb, 0xa6, 0x1a, 0x05,
  0x77, 0x81, 0xe1, 0xca, 0x16, 0x85, 0x5f, 0xdf, 0x87, 0xb9, 0x99, 0x94,
  0xf1, 0x1c, 0x57, 0x65, 0x8e, 0xfb, 0x14, 0xda, 0x54, 0xf2, 0x50, 0x10,
  0x3a, 0xad, 0x31, 0xa0, 0xcc, 0xdd, 0x97, 0x7c, 0xa0, 0xaf, 0xba, 0x36,
  0x5d, 0xa7, 0x66, 0x00, 0xc5, 0x01, 0x45, 0x90, 0xc1, 0xf5, 0x23, 0x0a,
  0x8f, 0x73, 0x25, 0x15, 0x2e, 0x44, 0x5a, 0x4c, 0x90, 0xdb, 0x83, 0x73,
  0x44, 0xa4, 0xc1, 0x04, 0xc2, 0x10, 0x99, 0xdd, 0x0a, 0x80, 0x4b, 0x75,
  0x61, 0x7d, 0x04, 0xdd, 0x49, 0x14, 0x94, 0x25, 0xf7, 0xc8, 0x8d, 0x4b,
  0x51, 0x25, 0x8a, 0x22, 0x45, 0xbf, 0x91, 0x49, 0x2e, 0x60, 0x75, 0x0c,
  0xb3, 0x30, 0x51, 0x38, 0x8f, 0x03, 0xb5, 0xdd, 0x23, 0xba, 0x9d, 0xa5,

  0xc9, 0xd9, 0xce, 0x08, 0x7e, 0x12, 0xf1, 0xe5, 0xbc, 0xbd, 0xa1, 0xfe,
  0x00, 0x34, 0x39, 0x05, 0x9d, 0xad, 0xea, 0xe9, 0x1f, 0xa8, 0xb5, 0x73,
  0x7e, 0x33, 0xc3, 0x9b, 0xe5, 0x35, 0x03, 0xb3, 0x6c, 0x0f, 0x97, 0x6c,
  0x3e, 0xf4, 0xee, 0xef, 0xef, 0x7b, 0x78, 0xe1, 0x30, 0x27, 0x47, 0xca,
  0x2c, 0xfa, 0x35, 0xf0, 0x68, 0xb2, 0x2b, 0xd9, 0xe4, 0x44, 0x26, 0xe2,
  0xc7, 0x37, 0x9c, 0x14, 0xa9, 0x62, 0x98, 0x56, 0x54, 0xcf, 0x27, 0xc4,
  0x45, 0xaf, 0x49, 0x5d, 0x9d, 0x4c, 0x87, 0x34, 0x1c, 0x75, 0x44, 0x05,
  0x6e, 0x9f, 0x5d, 0x0b, 0xc2, 0x4f, 0x8d, 0xaa, 0x04, 0xeb, 0xd7, 0xe1,

  0x13, 0xf3, 0x83, 0xa8, 0xf7, 0x2e, 0xea, 0x1c, 0xcb, 0x6a, 0xaf, 0xe1,
  0x89, 0x83, 0xfa, 0x5a, 0xf8, 0x61, 0x3f, 0x98, 0x03, 0xef, 0x76, 0x9e,
  0x07, 0x9f, 0xd8, 0x7a, 0x91, 0xa9, 0xbb, 0x8a, 0xcd, 0x9a, 0xa9, 0x02,
  0xce, 0x3a, 0x4c, 0x7b, 0x61, 0xb7, 0x16, 0x63, 0x9e, 0xd1, 0xd2, 0xe3,

  0x52, 0x3a, 0xf1, 0x0c, 0xf9, 0x86, 0xaf, 0xb8, 0x8e, 0x45, 0x7c, 0xff,
  0xf4, 0x1d, 0x77, 0x6e, 0xa2, 0x50, 0xef, 0x8c, 0x5c, 0x5d, 0x0e, 0x1e,
  0x31, 0xfa, 0x77, 0x4c, 0x12, 0x66, 0x60, 0xa6, 0xd2, 0x07, 0xc3, 0x16,
  0x53, 0xb1, 0x61, 0x2a, 0x7a, 0xe9, 0x57, 0x2b, 0xea, 0xd0, 0xac, 0x53,
  0xd8, 0xae, 0xa2, 0x16, 0xf9, 0x68, 0xc0, 0x9a, 0xd2, 0xb2, 0x0c, 0x55,
  0x3d, 0x83, 0xd1, 0xd8, 0xd5, 0x75, 0xcd, 0xe5, 0x14, 0x5a, 0x66, 0xc7,
  0x9e, 0xb3, 0x4c, 0x41, 0xc0, 0x0d, 0xa5, 0x77, 0x72, 0x9c, 0x03, 0xaf,
  0xaa, 0x02, 0x94, 0x89, 0xcb, 0x2a, 0x29, 0x90, 0xd0, 0x29, 0x0b, 0xbe,
  0xa7, 0x29, 0xcc, 0x21, 0x61, 0x0d, 0x0c, 0xe5, 0xf8, 0x9b, 0x53, 0xca,
  0xe6, 0x06, 0x46, 0x9a, 0x09, 0x88, 0x03, 0xcf, 0x9f, 0x5b, 0x1e, 0x19,

  0xa3, 0x76, 0x8a, 0xac, 0x84, 0x4b, 0x22, 0xe3, 0x28, 0x04, 0x80, 0xaa,
  0x36, 0x47, 0xa4, 0xc6, 0x85, 0x24, 0xad, 0x8a, 0x8d, 0x20, 0x97, 0xd7,
  0x84, 0x77, 0x63, 0x5b, 0x22, 0x10, 0xdc, 0x2f, 0xfa, 0xba, 0x82, 0x8d,
  0xc4, 0xa5, 0x44, 0x70, 0x49, 0x59, 0xf3, 0xd2, 0xc7, 0x2d, 0xbd, 0x72,
  0x0b, 0xa9, 0xc4, 0xcf, 0x7b, 0x93, 0xcf, 0x87, 0x3b, 0xbc, 0xd1, 0x99,
  0x34, 0x3c, 0x29, 0x66, 0xeb, 0x12, 0xd7, 0x63, 0xc0, 0xb5, 0x58, 0xe8,
  0x4b, 0x0b, 0x79, 0x6e, 0x4d, 0x62, 0x24, 0x30, 0xe3, 0xff, 0x40, 0x09,
  0x45, 0x72, 0x17, 0x78, 0x1e, 0x6a, 0x1e, 0x5a, 0x2f, 0xe9, 0x8e, 0xa6,
  0x50, 0x7e, 0x92, 0x10, 0x1b, 0x1e, 0x0e, 0xed, 0xbf, 0xd7, 0xa8, 0x2d,
  0x7d, 0x25, 0x8e, 0x2a, 0xcc, 0x83, 0x2f, 0x1d, 0x6b, 0x44, 0x8a, 0x65,
  0x69, 0xee, 0x5a, 0x23, 0x84, 0xdb, 0x10, 0x1e, 0x8e, 0x23, 0x9c, 0xce,
  0xee, 0x31, 0xc5, 0x21, 0xec, 0x7c, 0xc9, 0x6d, 0xc4, 0xfe, 0xd0, 0xdc,
  0xbc, 0xd7, 0x4f, 0xef, 0xde, 0x2f, 0xdd, 0xbe, 0xd5, 0xbb, 0xc7, 0xed,
  0x1b, 0x34, 0x59, 0xf6, 0xb5, 0xe3, 0xa0, 0xa3, 0x64, 0x0f, 0xb6, 0xbe,
  0x8c, 0xa3, 0xae, 0xce, 0x65, 0x1c, 0x23, 0xf3, 0xf5, 0x6f, 0x75, 0xea,
  0x44, 0x8c, 0x64, 0xd1, 0xe3, 0xe4, 0xc3, 0xc3, 0x71, 0x58, 0x91, 0xce,
  0xde, 0xc5, 0x5e, 0x14, 0x3d, 0x9c, 0x46, 0x10, 0xfc, 0xe2, 0x51, 0xc5,

  0xc4, 0x3c, 0xa4, 0x34, 0xcf, 0x5e, 0x78, 0x38, 0x2d, 0x04, 0x14, 0x45,
  0xdc, 0x5b, 0xdf, 0x57, 0x2a, 0xf8, 0x9f, 0xbf, 0x38, 0x4a, 0x2b, 0xb2,
  0x2d, 0x03, 0xdd, 0x8c, 0x10, 0x0e, 0xc1, 0xac, 0xfb, 0x7e, 0x43, 0xbd,
  0x3e, 0x02, 0x03, 0xc9, 0x2d, 0xa4, 0x54, 0x25, 0xd8, 0xe8, 0xd6, 0x37,
  0x0c, 0xa1, 0xee, 0x48, 0x18, 0xe8, 0x29, 0xa7, 0xad, 0x67, 0xac, 0x67,
  0x87, 0x6d, 0x19, 0x82, 0x67, 0xf7, 0x7f, 0xd3, 0xfa, 0x88, 0x9e, 0x2d,

  0x19, 0x60, 0x84, 0xa1, 0x64, 0x0c, 0x6f, 0x4a, 0xba, 0x8f, 0xa8, 0x5a,
  0x01, 0x45, 0x7c, 0xcb, 0xec, 0x08, 0x7d, 0x00, 0x95, 0x22, 0x8c, 0xb7,
  0xce, 0x04, 0x2e, 0x94, 0x61, 0xde, 0x5f, 0x5b, 0x65, 0xa6, 0x87, 0x8b,
  0xec, 0x09, 0xc9, 0xf6, 0x89, 0x08, 0x57, 0x50, 0xaa, 0xa1, 0xcc, 0x30,
  0x51, 0x7a, 0xe4, 0xd7, 0x2e, 0x1a, 0x15, 0x5f, 0x55, 0x64, 0x7b, 0x4d,
  0x52, 0x6e, 0x7f, 0x5e, 0x93, 0x94, 0xf6, 0x9d, 0x55, 0x32, 0x72, 0x90,
  0x70, 0x42, 0x9a, 0xeb, 0xc0, 0xa4, 0x97, 0xb8, 0xca, 0x1a, 0x1b, 0x79,

  0xf8, 0xa9, 0x4d, 0xf8, 0xaa, 0x57, 0x74, 0xcc, 0xb9, 0x45, 0x4e, 0xed,
  0x24, 0x25, 0x98, 0x63, 0xd4, 0x4c, 0xac, 0xa3, 0x68, 0x58, 0xe4, 0xf7,
  0x25, 0xa9, 0xa3, 0x6a, 0xa0, 0xc6, 0x9c, 0x02, 0x7b, 0xe3, 0x95, 0x44,
  0xc3, 0xf6, 0xce, 0x0c, 0x0e, 0xec, 0xbb, 0xeb, 0xf7, 0x67, 0xdc, 0xd8,
  0x81, 0xab, 0x73, 0xb1, 0x08, 0x49, 0xe6, 0xbc, 0x1c, 0xce, 0xc1, 0x92,
  0x06, 0xed, 0xa4, 0x62, 0x56, 0xa6, 0xdc, 0xd1, 0x2b, 0x21, 0xa6, 0x90,
  0x9e, 0x04, 0x84, 0x17, 0xa1, 0xf8, 0x8c, 0x28, 0x92, 0x0e, 0x0e, 0x95,
  0xa3, 0x01, 0xff, 0x72, 0x5d, 0x17, 0xec, 0x64, 0xca, 0x88, 0x21, 0x3d,
  0xea, 0x2d, 0x1e, 0x05, 0x3e, 0xe2, 0xdd, 0x3e, 0x47, 0x4d, 0xa3, 0xfe,
  0x63, 0x04, 0x29, 0x6d, 0x3c, 0x34, 0xa8, 0x75, 0x99, 0xe6, 0x23, 0x84,
  0x9a, 0x15, 0xd7, 0x35, 0x2d, 0xaf, 0xac, 0xd6, 0x68, 0x5e, 0xb6, 0x8d,
  0x88, 0xab, 0x7c, 0xa1, 0x1e, 0x82, 0xfa, 0x90, 0x04, 0x92, 0x96, 0x05,
  0x3a, 0xf3, 0x58, 0xab, 0xee, 0x06, 0x72, 0xee, 0x45, 0x21, 0x51, 0x6f,
  0xbe, 0x09, 0x6d, 0xd6, 0x4c, 0x3d, 0xed, 0x97, 0x80, 0x63, 0x3b, 0x37,
  0x38, 0xa0, 0x24, 0x32, 0x42, 0x15, 0x15, 0x53, 0xd0, 0x69, 0x02, 0xb1,
  0xc1, 0xe8, 0xd4, 0x0e, 0x2c, 0x26, 0xe7, 0xb8, 0xa7, 0xde, 0x05, 0x15,
  0x6c, 0xdb, 0x4c, 0xa4, 0xb4, 0xfd, 0x23, 0xd4, 0x5e, 0x26, 0xa0, 0x2e,
  0x82, 0xe6, 0xa2, 0x06, 0x12, 0x79, 0xdd, 0xdf, 0xe5, 0xfb, 0x1f, 0xc5,
  0xff, 0xd5, 0x75, 0xc2, 0x6b, 0x29, 0x7a, 0xa0, 0xdc, 0x78, 0xa1, 0x8d,
  0xac, 0xcf, 0x93, 0x62, 0xca, 0x65, 0x08, 0x0c, 0x09, 0x1b, 0x44, 0xb1,
  0x88, 0x23, 0x07, 0xa5, 0x2d, 0x8a, 0xfe, 0x47, 0x8f, 0x25, 0x2a, 0xb9,
  0xaa, 0x96, 0x58, 0xff, 0x22, 0xfe, 0xf4, 0xb5, 0xde, 0x98, 0xd9, 0xca,
  0x38, 0xce, 0x60, 0x27, 0xe0, 0xc6, 0xfa, 0xf9, 0x31, 0xb3, 0xd9, 0xeb,
  0x59, 0xbe, 0x2c, 0x1f, 0xd7, 0x22, 0xe9, 0xe5, 0x23, 0xed, 0x2f, 0x2a,
  0xc9, 0xe5, 0xc1, 0xb3, 0x84, 0xf3, 0x5d, 0x66, 0xb7, 0x2a, 0x14, 0xb1,
  0x52, 0xa1, 0x64, 0x47, 0x6d, 0x63, 0xb8, 0x35, 0xe7, 0x63, 0xff, 0xc3,
  0x1d, 0x3b, 0xb8, 0xcb, 0xe4, 0xfe, 0x67, 0xc3, 0xf9, 0x79, 0x96, 0xb3,
  0x0d, 0xc9, 0x84, 0xcc, 0xe6, 0xa8, 0x16, 0xa9, 0x33, 0x03, 0xa2, 0xf0,
  0x60, 0x18, 0x5e, 0x0d, 0x39, 0xd8, 0xd4, 0x0d, 0xe2, 0x37, 0x2d, 0xc5,
  0x27, 0x56, 0xf2, 0x70, 0x40, 0xc9, 0x22, 0xe7, 0x31, 0x84, 0x89, 0xe9,
  0x7d, 0xe3, 0x96, 0xc0, 0xf5, 0xa3, 0x4b, 0xd8, 0x2f, 0x0f, 0x6a, 0x02,
  0x23, 0xd9, 0x66, 0xb8, 0xb8, 0x06, 0x7a, 0x3a, 0xc9, 0xf3, 0x61, 0x5c,
  0xac, 0xc9, 0xde, 0x13, 0xaa, 0x3a, 0x0c, 0x38, 0x66, 0xe7, 0x0b, 0x9e,
  0x75, 0x6f, 0xdc, 0x0d, 0xde, 0x68, 0xd4, 0x19, 0xe8, 0xdd, 0xbe, 0x16,
  0x75, 0xe8, 0xcf, 0x31, 0x40, 0x9e, 0xcf, 0xc6, 0x66, 0x2b, 0xdc, 0xaf,
  0x06, 0x0e, 0x8d, 0x6a, 0x13, 0xac, 0x2b, 0x40, 0x3d, 0x01, 0x54, 0xde,
  0xa2, 0xce, 0x02, 0xe3, 0xd4, 0x47, 0x14, 0x77, 0x84, 0x0d, 0xc1, 0xc4,
  0x89, 0x30, 0x6c, 0x8b, 0x04, 0x49, 0x8c, 0x09, 0xee, 0x30, 0x07, 0x9c,
  0x51, 0x88, 0xc7, 0x58, 0x9e, 0xe2, 0x3b, 0xdc, 0x5d, 0xf6, 0x25, 0xd9,
  0xaa, 0x2b, 0x32, 0xdd, 0x5c, 0xae, 0xe1, 0xc8, 0x31, 0x6b, 0xcc, 0x35,
  0x85, 0xdb, 0x0a, 0xd7, 0xae, 0xc5, 0xc5, 0x25, 0xf6, 0x2a, 0xfc, 0x95,
  0x9d, 0x20, 0xbd, 0x53, 0xcd, 0xa2, 0xe3, 0x7f, 0x5e, 0x13, 0x62, 0x33,
  0x39, 0x27, 0x7b, 0x01, 0xd2, 0xac, 0x59, 0x97, 0xc9, 0x2c, 0x99, 0xf2,
  0x6a, 0x0f, 0xcf, 0x4e, 0xbe, 0x3b, 0x39, 0xf3, 0xc4, 0xe6, 0x37, 0x83,
  0xc1, 0xe6, 0x6d, 0x52, 0x0c, 0xa9, 0x29, 0x2b, 0x06, 0x2e, 0x22, 0x7a,
  0xce, 0x24, 0x78, 0x39, 0xb2, 0xe4, 0xde, 0x42, 0xb6, 0x48, 0xa2, 0xb7,
  0xe7, 0xb3, 0xc1, 0x0c, 0x5e, 0xfe, 0xa4, 0xc0, 0xbc, 0x53, 0xc9, 0x91,
  0xe4, 0x12, 0x92, 0x6c, 0x1c, 0x15, 0xc9, 0x98, 0x7b, 0x96, 0xfa, 0x59,
  0x84, 0x84, 0xec, 0x81, 0x7d, 0x39, 0xf0, 0x50, 0x39, 0x93, 0x9c, 0x02,
  0x58, 0x66, 0x11, 0xde, 0x1b, 0x0b, 0xaa, 0x9e, 0x8f, 0xde, 0xc8, 0x37,
  0xa5, 0x1e, 0x15, 0x77, 0x89, 0x81, 0xdd, 0xd8, 0x4a, 0xb9, 0xf8, 0xb6,
  0x77, 0x34, 0xe8, 0xbd, 0x39, 0x39, 0x3b, 0xf9, 0xe6, 0xe8, 0xfa, 0xc4,
  0xe0, 0x99, 0x97, 0x49, 0x8b, 0x0a, 0x26, 0xfa, 0xd7, 0xb7, 0xb2, 0x2d,
  0xb4, 0x7e, 0xc4, 0xc2, 0xaf, 0x52, 0x6e, 0xc8, 0xa2, 0x90, 0xff, 0xdc,
  0x59, 0x1b, 0xad, 0xa2, 0x8a, 0xf3, 0x04, 0xc3, 0xc3, 0xc1, 0xbd, 0x98,
  0xcd, 0x65, 0xaa, 0xde, 0x0a, 0xe2, 0xd9, 0x3d, 0x36, 0x66, 0xfb, 0x90,
  0x61, 0x2a, 0x7d, 0x6a, 0x4a, 0x49, 0x79, 0xf5, 0xae, 0x47, 0xc8, 0xee,
  0x6c, 0xed, 0x80, 0x09, 0x99, 0xbe, 0xc5, 0x5f, 0xa0, 0x65, 0xe0, 0x14,
  0x3f, 0x7e, 0x43, 0x4f, 0x36, 0x30, 0xc6, 0x2d, 0x34, 0x3a, 0x32, 0x18,
  0xf9, 0x55, 0x00, 0xb0, 0x04, 0x09, 0xa8, 0x1c, 0xdd, 0x24, 0x73, 0x51,
  0x65, 0x31, 0x35, 0x81, 0x82, 0xe0, 0x5c, 0x53, 0x29, 0x78, 0x41, 0x9c,


  0x42, 0x36, 0x4c, 0x18, 0x72, 0x81, 0x30, 0xd2, 0x90, 0xae, 0x43, 0xa9,
  0xbe, 0xf7, 0xd8, 0x71, 0x00, 0x63, 0x2d, 0x98, 0xb6, 0x43, 0x05, 0xc6,
  0x7d, 0x4a, 0x30, 0x74, 0xf2, 0x06, 0xfc, 0x3c, 0x01, 0xee, 0x1e, 0xd8,
  0xbc, 0xb3, 0x06, 0xc0, 0xdc, 0xa0, 0xad, 0xe7, 0xe4, 0x3a, 0xa3, 0x1f,
  0x71, 0xf3, 0x12, 0xd1, 0xb9, 0x71, 0x92, 0xbf, 0xd2, 0x51, 0x2d, 0xe5,
  0x09, 0x52, 0x6e, 0x88, 0x6e, 0x2c, 0x32, 0x83, 0xc3, 0x59, 0xdb, 0x41,
  0xa6, 0x21, 0xdd, 0x58, 0x9d, 0xe9, 0x32, 0x7b, 0x60, 0x68, 0xf5, 0xb1,
  0x9c, 0x0e, 0xfd, 0x48, 0x1a, 0x11, 0x98, 0x14, 0x8f, 0xa0, 0x2b, 0xdf,
  0x72, 0x8c, 0x7a, 0xaf, 0x02, 0xc4, 0x88, 0xd7, 0xbf, 0xfa, 0x1d, 0x25,
  0x4c, 0xa9, 0x5d, 0x2f, 0x59, 0x78, 0x80, 0xdd, 0xeb, 0x6f, 0x15, 0x7f,
  0xdf, 0xe8, 0x96, 0x6e, 0xaf, 0x35, 0xa7, 0x35, 0xd2, 0xc9, 0xe5, 0x15,
  0x77, 0x57, 0x3f, 0xc3, 0xbf, 0x48, 0xe4, 0xad, 0x0c, 0xe1, 0xdf, 0x49,
  0xf7, 0x0f, 0x4c, 0x46, 0x49, 0x28, 0x74, 0x63, 0x82, 0xe9, 0x9a, 0x8c,
  0xc8, 0xf9, 0xa7, 0x02, 0xb4, 0x2e, 0xd7, 0x81, 0xb6, 0xd8, 0x4b, 0xfe,
  0x37, 0x0d, 0x3a, 0x71, 0x26, 0x38, 0x05, 0x41, 0x28, 0xa2, 0x49, 0x70,
  0x0e, 0xad, 0x06, 0x48, 0x2e, 0xf0, 0x97, 0xa8, 0x6f, 0xb2, 0x5c, 0xab,
  0xda, 0x38, 0x2f, 0xb7, 0x40, 0x10, 0x95, 0x08, 0x87, 0xc5, 0x37, 0xa3,
  0x82, 0xda, 0xb9, 0xc6, 0x30, 0x95, 0x7e, 0x63, 0xa9, 0xd4, 0x90, 0x0b,
  0x61, 0x37, 0xfd, 0x78, 0x08, 0xb5, 0x22, 0x13, 0x47, 0x9c, 0x64, 0xa5,
  0xd3, 0x82, 0x35, 0xd7, 0xbe, 0x2b, 0x39, 0x06, 0x68, 0x41, 0x50, 0xdb,

  0x21, 0xae, 0x17, 0xa0, 0xe4, 0x03, 0x4f, 0xc3, 0x97, 0x9a, 0x04, 0xcd,
  0x44, 0x4b, 0x1e, 0x25, 0x6c, 0xce, 0x0a, 0xe1, 0x44, 0xc2, 0x93, 0x31,
  0x01, 0xca, 0x92, 0x69, 0x33, 0x64, 0x0d, 0x86, 0xb2, 0xfa, 0x6e, 0xe2,
  0x2c, 0x70, 0xe7, 0x60, 0xe3, 0x4d, 0x4f, 0x34, 0x5a, 0xa5, 0x1c, 0x5b,

  0x40, 0x89, 0x47, 0xda, 0x68, 0xc2, 0x5a, 0x81, 0xa1, 0x07, 0x0c, 0x2c,
  0xc5, 0xb8, 0x86, 0x4c, 0x85, 0x77, 0x86, 0x1a, 0x03, 0x09, 0xbd, 0xe5,
  0x21, 0xaa, 0x12, 0xe6, 0x62, 0xa3, 0x2d, 0x35, 0x12, 0x6c, 0x2f, 0xfa,
  0x36, 0x9e, 0x79, 0xaa, 0xb0, 0x71, 0x50, 0x75, 0xb1, 0xc7, 0x70, 0xbd,
  0x04, 0x87, 0x8e, 0x8f, 0x84, 0x7d, 0xd6, 0xcc, 0x40, 0x49, 0xb8, 0xe8,
  0x02, 0xbe, 0x4d, 0xd3, 0x45, 0x37, 0x90, 0x89, 0xc8, 0x22, 0xf1, 0x78,
  0xdf, 0x7f, 0x43, 0x93, 0xc3, 0xef, 0xd0, 0x0b, 0x74, 0xef, 0x11, 0x7a,
  0x68, 0xaa, 0x3d, 0x9e, 0x98, 0x94, 0x87, 0x09, 0x7c, 0x2f, 0xc5, 0x1e,
  0x78, 0x6e, 0x18, 0xc0, 0x4f, 0x73, 0x2e, 0x81, 0x00, 0xa9, 0x2a, 0x20,

  0x67, 0x07, 0x10, 0xbe, 0x8b, 0xb9, 0x14, 0x49, 0xe4, 0x36, 0x90, 0x24,
  0x82, 0x20, 0x8b, 0xe1, 0xb2, 0x2b, 0xf1, 0x4c, 0x4a, 0x6f, 0xcc, 0x0b,
  0xbf, 0x04, 0x76, 0x64, 0xb0, 0x96, 0xf4, 0xc9, 0xb8, 0xbc, 0x0b, 0xdf,
  0xf0, 0xf2, 0x2e, 0x78, 0xc3, 0x9f, 0x71, 0xcf, 0xad, 0xbd, 0x75, 0x72,
  0x39, 0xf8, 0x2e, 0x6a, 0x01, 0x8d, 0xe0, 0x4e, 0x2e, 0x7c, 0xc5, 0xed,
  0xea, 0x90, 0xe8, 0xdd, 0x6b, 0xde, 0x7e, 0xcf, 0x83, 0xf1, 0x01, 0xef,
  0x9e, 0xc3, 0xf7, 0xe5, 0x72, 0x5f, 0x1e, 0x0d, 0xbe, 0x73, 0xae, 0xb5,
  0x43, 0x02, 0xa1, 0x62, 0x4c, 0x93, 0xd9, 0x8e, 0x41, 0x62, 0x26, 0x1d,
  0x1c, 0x2c, 0x48, 0xef, 0xe5, 0xdd, 0x73, 0xe8, 0x1d, 0x66, 0xe2, 0xd1,
  0xbb, 0xb7, 0xc7, 0xab, 0xe8, 0xdd, 0x3d, 0xa8, 0x7a, 0xd2, 0xac, 0x43,
  0xed, 0x19, 0x77, 0xd1, 0xc6, 0x02, 0x8f, 0x36, 0x32, 0xc7, 0x40, 0xa2,
  0x90, 0xb6, 0x9f, 0x4a, 0x48, 0xf3, 0xfc, 0x65, 0x84, 0x0e, 0x2f, 0x78,
  0x84, 0xae, 0xe7, 0x19, 0xa6, 0xf4, 0x36, 0x42, 0xd7, 0x94, 0xe2, 0x84,
  0x89, 0xdc, 0xa5, 0x71, 0x9f, 0xbe, 0x1d, 0xaa, 0x75, 0xcb, 0xc0, 0xfd,
  0x1d, 0xd2, 0x4c, 0x33, 0x0b, 0x65, 0x60, 0x81, 0x1c, 0x02, 0xe0, 0x22,
  0x0a, 0xca, 0xc0, 0x05, 0xb1, 0xbe, 0x3b, 0xdf, 0x94, 0xe6, 0xd7, 0xaa,
  0x1f, 0x0a, 0xd5, 0xb0, 0xb9, 0xb1, 0x1a, 0x0a, 0x6d, 0x72, 0x0f, 0xb8,
  0x80, 0x02, 0x13, 0xef, 0x46, 0xd6, 0xd0, 0x83, 0x92, 0x60, 0x75, 0x7a,
  0x99, 0x60, 0x9e, 0x07, 0xc1, 0x90, 0x35, 0xef, 0x29, 0xaa, 0x79, 0xa4,
  0x0d, 0xa0, 0xa2, 0xd2, 0x4b, 0xb3, 0x9e, 0x9f, 0x06, 0xed, 0x86, 0xb6,
  0xaa, 0x1a, 0x36, 0x2d, 0x96, 0x28, 0x92, 0xc2, 0x2b, 0x41, 0x0e, 0x54,
  0x46, 0xc9, 0xd2, 0x94, 0x98, 0x00, 0x7b, 0x25, 0x03, 0x05, 0xb5, 0x41,
  0x84, 0xb5, 0x7a, 0xbb, 0x97, 0x2a, 0xaf, 0x39, 0xe3, 0x5e, 0x34, 0x50,
  0x8c, 0xc7, 0x59, 0xd9, 0xb3, 0x1d, 0xda, 0x0f, 0xcd, 0x5f, 0x3d, 0xfb,
  0xe2, 0xcd, 0xf9, 0x00, 0x23, 0x57, 0x09, 0xd5, 0x1a, 0xa8, 0x19, 0x5c,
  0x26, 0x5c, 0x1f, 0x32, 0x25, 0xce, 0x01, 0x8f, 0x98, 0x82, 0x3f, 0xd3,
  0x14, 0xf1, 0x30, 0xe8, 0x10, 0xa2, 0x4f, 0x78, 0x85, 0x7a, 0x31, 0x17,

  0xdc, 0x80, 0x6d, 0x47, 0x71, 0x71, 0x5c, 0x81, 0x9d, 0x9b, 0x56, 0xb4,
  0x93, 0xe7, 0x29, 0x80, 0x71, 0xa4, 0x65, 0x79, 0x38, 0x8d, 0x0d, 0x6d,
  0xcf, 0xbc, 0x60, 0x44, 0x76, 0xc1, 0x20, 0x33, 0x1d, 0xae, 0xb2, 0x46,
  0x57, 0xfa, 0xe6, 0x62, 0x05, 0x33, 0x49, 0x72, 0xc6, 0x36, 0x56, 0x1a,
  0x8f, 0xb8, 0x81, 0x8b, 0xbb, 0xbd, 0x1e, 0x3e, 0x2c, 0xe9, 0x87, 0xe6,
  0xa7, 0x2f, 0xe8, 0xa7, 0x7d, 0x6f, 0xa3, 0xbd, 0x12, 0x1a, 0xe9, 0xa0,
  0x6a, 0xd0, 0x71, 0x31, 0xbb, 0x31, 0x1b, 0x63, 0xe7, 0x0d, 0x3a, 0x7b,
  0x6d, 0xa4, 0x80, 0x68, 0x89, 0x8c, 0x79, 0x68, 0x9b, 0xb7, 0x45, 0x1e,
  0x4e, 0x0b, 0xe8, 0x36, 0x65, 0xed, 0xd0, 0x77, 0x77, 0x03, 0x87, 0x6e,

  0xe6, 0x7c, 0x28, 0xcb, 0x0c, 0x1f, 0x79, 0x4d, 0xba, 0x0c, 0x53, 0xee,
  0x6f, 0x75, 0x98, 0x2e, 0x7a, 0xfa, 0x16, 0x0b, 0x8f, 0x79, 0x7c, 0x2b,

  0x22, 0x7d, 0x4f, 0xe8, 0xa0, 0xe7, 0xc1, 0xac, 0x70, 0xbb, 0x65, 0xea,
  0x4a, 0x6d, 0xd7, 0x59, 0x23, 0x1a, 0xd1, 0xb7, 0x2a, 0x03, 0xda, 0x8a,

  0x44, 0xc1, 0xdf, 0x09, 0xd5, 0x7c, 0x69, 0x76, 0xb6, 0xeb, 0xe3, 0xd1,
  0xfa, 0x0e, 0x9a, 0x89, 0x79, 0xf7, 0x89, 0xf3, 0xb3, 0x44, 0xb6, 0xfa,
  0xfc, 0x74, 0xcf, 0xfe, 0xf7, 0x38, 0xbf, 0x17, 0x9f, 0xe4, 0xfc, 0x5e,
  0xfc, 0x6f, 0x73, 0x7e, 0x2f, 0xfe, 0xe5, 0xf3, 0xdb, 0xf3, 0xce, 0xef,

  0xc5, 0xff, 0x2e, 0xe7, 0xa7, 0xfd, 0xd5, 0xf4, 0xf4, 0x12, 0xef, 0xfc,
  0x06, 0x92, 0x36, 0xa2, 0xc0, 0x7c, 0xb8, 0xd3, 0xfa, 0x16, 0x07, 0x69,
  0x24, 0xd1, 0x91, 0xbd, 0xe0, 0x9a, 0x6b, 0xcb, 0xd0, 0x90, 0x2d, 0x0d,
  0x4b, 0xfa, 0x5a, 0x56, 0xa1, 0x83, 0x9e, 0x5e, 0x46, 0x66, 0x02, 0xce,
  0x31, 0x58, 0xa0, 0x2d, 0x52, 0xd0, 0x82, 0x2e, 0xea, 0x12, 0xfd, 0x96,
  0xb0, 0x7e, 0x2e, 0xaf, 0x2c, 0x6d, 0x51, 0x70, 0x08, 0x49, 0x0b, 0x36,
  0xee, 0xe0, 0x10, 0xb7, 0xab, 0xc7, 0x8f, 0x7f, 0x19, 0x2c, 0x76, 0xa3,
  0x8e, 0xcd, 0x76, 0x4a, 0xa1, 0xb0, 0x84, 0xb3, 0x75, 0xf6, 0xdc, 0x4c,
  0x34, 0xcb, 0x39, 0xb4, 0xd0, 0x99, 0x35, 0x55, 0x1d, 0x73, 0x82, 0x4f,
  0x1f, 0x59, 0x7e, 0x43, 0x38, 0x3e, 0x87, 0x1f, 0xae, 0x7c, 0xdf, 0x1b,
  0x2c, 0xd5, 0x87, 0x46, 0x84, 0xe3, 0xea, 0xa1, 0x6d, 0xdf, 0x23, 0x94,
  0x78, 0xb8, 0x8d, 0x17, 0xef, 0x36, 0x1c, 0x27, 0x10, 0x05, 0x2d, 0xf2,
  0x50, 0xbf, 0x3b, 0x2e, 0xbb, 0x35, 0xa5, 0xe5, 0x65, 0xb7, 0xd1, 0xe3,
  0xd2, 0xa4, 0xbd, 0x5b, 0x25, 0x85, 0xbc, 0x23, 0x52, 0xb0, 0x5b, 0x78,
  0xfd, 0x2d, 0x51, 0x19, 0x4c, 0x4b, 0x41, 0x8d, 0x43, 0x18, 0x0d, 0x95,
  0x83, 0x34, 0xb3, 0xdf, 0x33, 0xe3, 0xef, 0xc5, 0x4e, 0x6d, 0x57, 0xdf,
  0x90, 0xae, 0xb8, 0x9c, 0x2f, 0xa4, 0xb4, 0xf8, 0x89, 0xd2, 0xca, 0x88,
  0xbb, 0x31, 0x52, 0xd9, 0x24, 0xbb, 0xf7, 0xa5, 0xca, 0x48, 0x2d, 0x73,
  0x53, 0x5a, 0x21, 0xe6, 0x7b, 0x2b, 0x30, 0x5a, 0x10, 0x8b, 0xea, 0xba,
  0x99, 0x20, 0xc5, 0x15, 0x31, 0x8a, 0xaf, 0x8e, 0x5c, 0xd2, 0xd1, 0x9a,


  0xa5, 0xd0, 0x81, 0x40, 0x00, 0xf8, 0xab, 0x21, 0x70, 0x6e, 0x8a, 0x12,
  0x62, 0x81, 0x15, 0xce, 0x99, 0xd1, 0x05, 0xe1, 0x55, 0x18, 0xa6, 0x2f,
  0x55, 0x56, 0xa5, 0x13, 0xa7, 0x36, 0x85, 0x21, 0x04, 0xee, 0x14, 0xaa,
  0x0e, 0xa0, 0x60, 0x0f, 0xa9, 0xb7, 0x92, 0xd5, 0x27, 0xd0, 0x1d, 0x06,
  0x9b, 0x29, 0xbb, 0xd3, 0xda, 0x9b, 0x5a, 0x8b, 0x92, 0xde, 0xd0, 0x0f,
  0x07, 0xd4, 0x4a, 0x00, 0xff, 0x40, 0xb4, 0xd1, 0x52, 0x96, 0xc1, 0xaa,
  0x99, 0xe3, 0x98, 0x08, 0xdc, 0x24, 0xb7, 0xea, 0x23, 0xe8, 0x0a, 0x40,
  0x43, 0x47, 0x17, 0x28, 0xfd, 0x2a, 0xb8, 0x09, 0x48, 0xdd, 0x25, 0xd5,
  0x30, 0x92, 0x38, 0xfb, 0xd7, 0x4b, 0x28, 0x14, 0x80, 0x81, 0xe0, 0x31,
  0xd6, 0x52, 0xc0, 0x39, 0xb7, 0xf8, 0x26, 0x71, 0xab, 0xa6, 0x0d, 0x04,


  0x25, 0x47, 0x29, 0x38, 0x79, 0x11, 0x76, 0x51, 0x32, 0x61, 0xbd, 0x86,
  0x43, 0x84, 0x8a, 0x20, 0x53, 0xef, 0x08, 0x8a, 0xd3, 0x52, 0xa0, 0x67,
  0xb9, 0xe5, 0x32, 0x81, 0xde, 0xfc, 0x7e, 0x55, 0xca, 0x4e, 0x66, 0xb8,

  0xcb, 0xa2, 0x92, 0x29, 0x87, 0xff, 0x57, 0x65, 0x21, 0x37, 0x00, 0xd7,
  0xb8, 0x99, 0xb8, 0x81, 0x5c, 0x23, 0x8f, 0x60, 0x56, 0x15, 0xf9, 0xe2,
  0x31, 0xfa, 0x26, 0xc6, 0x65, 0x91, 0x5a, 0x1f, 0x27, 0x73, 0xaf, 0x34,
  0x8d, 0xdb, 0x8b, 0x8b, 0x9a, 0xcd, 0xad, 0xc6, 0x75, 0x85, 0x64, 0x17,
  0xf0, 0xb6, 0x00, 0xb1, 0xc2, 0x7e, 0xa1, 0x33, 0x59, 0xca, 0x46, 0x38,
  0xf5, 0x7a, 0x30, 0x38, 0xf3, 0x6d, 0x39, 0x6d, 0x6c, 0xb4, 0x12, 0x93,
  0x80, 0x46, 0xeb, 0x35, 0xa3, 0x23, 0x32, 0xf8, 0x61, 0x90, 0x73, 0xc8,
  0xba, 0x93, 0x99, 0x62, 0x76, 0x28, 0x8e, 0xfc, 0xa8, 0x78, 0x5c, 0xa0,
  0xf1, 0x25, 0x45, 0xb8, 0x7c, 0xcd, 0x71, 0x7e, 0x0c, 0x02, 0xbb, 0xb2,
  0xec, 0xf9, 0x43, 0xe9, 0x60, 0xa9, 0x93, 0x2c, 0xc5, 0xf8, 0x3d, 0x82,
  0x22, 0x23, 0xb8, 0x95, 0xc8, 0x56, 0x94, 0x3a, 0x63, 0x42, 0x73, 0x69,
  0xed, 0x71, 0x26, 0x9d, 0xcb, 0x1a, 0xdd, 0x31, 0xd8, 0x9c, 0x41, 0x4b,
  0x0b, 0x11, 0x11, 0x29, 0x9c, 0xb2, 0xa1, 0xf2, 0x5d, 0xde, 0x90, 0xaa,
  0xbd, 0xe6, 0xcd, 0x30, 0xcd, 0x13, 0x62, 0x44, 0x78, 0xc8, 0x3c, 0x28,
  0x19, 0xce, 0xf2, 0xd8, 0xde, 0xda, 0x7a, 0x12, 0x23, 0x48, 0xac, 0xd5,
  0x95, 0x50, 0x41, 0xc8, 0x0e, 0x39, 0xc0, 0x61, 0x6a, 0xda, 0xe3, 0x54,
  0x0a, 0x96, 0x9a, 0xa8, 0x6a, 0xf0, 0x49, 0x03, 0xd9, 0x63, 0xaf, 0x20,

  0xb3, 0x55, 0x86, 0xd2, 0x22, 0xc0, 0x20, 0xb8, 0xdb, 0x27, 0x34, 0xc7,
  0xf2, 0xa0, 0xf6, 0x4e, 0xb0, 0xa5, 0x34, 0x4e, 0x08, 0x5f, 0x12, 0xfd,
  0xb3, 0x1f, 0x7d, 0xfd, 0x68, 0xed, 0x76, 0x62, 0x88, 0xec, 0x0f, 0xa6,
  0x59, 0xb1, 0x9f, 0x9f, 0xe7, 0xdf, 0x5f, 0xc5, 0xfa, 0xc3, 0x38, 0x40,
  0x7f, 0x60, 0xc6, 0x42, 0xc3, 0x02, 0xb7, 0x5b, 0x94, 0x34, 0x2a, 0xc1,
  0x89, 0x84, 0x1d, 0x56, 0x66, 0xb5, 0xa0, 0x7f, 0x34, 0x9b, 0x2c, 0x39,
  0xfd, 0x92, 0x98, 0x0b, 0xae, 0xc4, 0x73, 0xae, 0xa3, 0x3a, 0xd5, 0xb3,
  0x50, 0x5f, 0xd6, 0xd5, 0x14, 0x2c, 0xad, 0xee, 0x51, 0x01, 0x75, 0x13,
  0x35, 0x02, 0x6b, 0xae, 0x91, 0x77, 0x91, 0xaf, 0x21, 0xcf, 0x1c, 0x0f,
  0x0c, 0xa2, 0x89, 0x71, 0xe6, 0x8f, 0xd6, 0x5a, 0x35, 0x40, 0x6c, 0x5d,
  0xc6, 0xaa, 0xc8, 0xfb, 0x7a, 0xd3, 0xc7, 0xb9, 0x83, 0x5d, 0x65, 0xca,
  0xeb, 0x1a, 0xae, 0x1c, 0xf6, 0xe5, 0xf8, 0xb0, 0x18, 0x9c, 0x41, 0x6c,

  0xdd, 0x84, 0x5c, 0x28, 0x4e, 0xd9, 0x11, 0xa4, 0x09, 0xb2, 0xea, 0x08,
  0x1a, 0x4b, 0x37, 0x92, 0x4e, 0xe4, 0x98, 0x30, 0xce, 0xa7, 0x1c, 0x54,
  0x6f, 0x2d, 0xac, 0x1a, 0xf7, 0x19, 0xe3, 0x95, 0x94, 0x16, 0x0e, 0x0e,
  0x99, 0x36, 0xf7, 0x4c, 0x83, 0x51, 0x4b, 0x93, 0x1a, 0xe6, 0x7b, 0x44,
  0x9d, 0x0a, 0x6d, 0x78, 0x12, 0x11, 0x6a, 0xca, 0x25, 0x79, 0xaf, 0x79,
  0x78, 0x83, 0xc0, 0xc6, 0x77, 0x92, 0x2b, 0xd7, 0xd1, 0x4f, 0x26, 0x15,
  0xb8, 0x1e, 0xdb, 0xc0, 0xe8, 0x38, 0x82, 0x37, 0x46, 0x74, 0x38, 0x54,
  0x02, 0xbf, 0x2c, 0x9c, 0x18, 0x79, 0xe7, 0x26, 0x85, 0x53, 0xcd, 0x3a,
  0x04, 0x0c, 0xb9, 0x1c, 0x32, 0xe6, 0x68, 0xa5, 0x1f, 0xf5, 0x16, 0xbb,
  0x9c, 0x39, 0x8e, 0xd9, 0x70, 0x9b, 0xf1, 0x5a, 0xc2, 0x77, 0x37, 0xaa,
  0x5d, 0x08, 0xd5, 0x27, 0x39, 0x6c, 0x6f, 0x8b, 0xef, 0xf9, 0xdc, 0x82,
  0xde, 0x5c, 0x5b, 0x88, 0x87, 0x37, 0x9f, 0x3a, 0x73, 0x75, 0xdd, 0xb6,
  0x38, 0xd6, 0xd1, 0x1c, 0xcf, 0xd1, 0x89, 0xc3, 0xba, 0x2a, 0xee, 0x72,
  0xb0, 0x69, 0x09, 0x1e, 0x84, 0x40, 0xb6, 0x04, 0x30, 0x85, 0x25, 0xb5,
  0x2f, 0x7e, 0xa4, 0xaa, 0x23, 0xf3, 0x69, 0xa2, 0x6e, 0x0f, 0x00, 0x0e,
  0xc1, 0x10, 0x73, 0xd2, 0xfc, 0x85, 0x8e, 0x71, 0x0b, 0x47, 0x45, 0xba,
  0xa8, 0x38, 0x1f, 0x41, 0x92, 0xab, 0x57, 0x02, 0xe7, 0xc0, 0xdf, 0xa6,

  0xb3, 0x7c, 0x18, 0xf3, 0x1d, 0x31, 0xb9, 0x4d, 0xea, 0xf1, 0xac, 0x01,
  0x16, 0x23, 0x7b, 0x43, 0xf2, 0x0c, 0x34, 0x5c, 0x80, 0x25, 0xf7, 0x0e,
  0xa8, 0x3b, 0x3c, 0x06, 0x42, 0x57, 0x7d, 0xd0, 0x7c, 0x82, 0xe1, 0xff,
  0x7a, 0x93, 0xae, 0xdc, 0x5e, 0xad, 0xca, 0xa6, 0xd4, 0xb0, 0xd2, 0xb9,
  0x53, 0x9e, 0xce, 0x45, 0x30, 0x0a, 0xe3, 0x65, 0x52, 0xcf, 0x14, 0x5b,
  0x93, 0x30, 0xb1, 0xb4, 0xb4, 0xa3, 0x6c, 0x25, 0xd3, 0xa9, 0x40, 0xc2,
  0xb1, 0xc1, 0x2c, 0x28, 0x04, 0x08, 0x96, 0xac, 0xa5, 0x2e, 0x18, 0x1f,
  0xf7, 0x54, 0xa1, 0x91, 0xa1, 0x54, 0xb2, 0x93, 0xd3, 0xec, 0x5b, 0x67,

  0xaf, 0x18, 0x58, 0xc1, 0xa7, 0xf8, 0x09, 0x2b, 0x84, 0xe4, 0xbf, 0xe4,
  0x33, 0x59, 0xb1, 0x33, 0x2e, 0xca, 0x78, 0xdd, 0x44, 0x30, 0x9f, 0x0e,
  0x8b, 0x27, 0x62, 0x6b, 0x25, 0x1a, 0x0d, 0xe8, 0xdf, 0x5f, 0x07, 0x62,
  0x91, 0xea, 0xb7, 0x98, 0x12, 0x0f, 0x08, 0x1b, 0x53, 0xdb, 0xf9, 0x31,
  0x2f, 0x08, 0x57, 0xe6, 0xe1, 0x4d, 0xc1, 0x1c, 0xb7, 0xd9, 0x23, 0x67,
  0xd1, 0xd0, 0x99, 0x93, 0xbe, 0x2b, 0x31, 0x03, 0x25, 0xa8, 0xa4, 0x1a,
  0x39, 0xbf, 0x1c, 0x27, 0xf1, 0x2c, 0xd4, 0x2d, 0x03, 0x27, 0x8c, 0x8e,
  0x6e, 0x66, 0x6d, 0x08, 0x93, 0x92, 0x49, 0xc8, 0x44, 0x72, 0xac, 0x39,
  0xcb, 0x50, 0x8c, 0x03, 0x33, 0x43, 0xba, 0x55, 0x01, 0xed, 0x1a, 0xfb,
  0xf7, 0xd0, 0x03, 0x54, 0x3b, 0x3c, 0x12, 0x44, 0x02, 0x0a, 0x78, 0xda,
  0x12, 0x1c, 0xc4, 0x74, 0xc3, 0x84, 0x44, 0x7d, 0x80, 0x28, 0x80, 0xf2,
  0xe1, 0x9b, 0xc3, 0x89, 0x23, 0x95, 0xeb, 0x42, 0x49, 0xc8, 0x68, 0xd9,
  0x06, 0x4e, 0x8c, 0x73, 0x60, 0x90, 0x49, 0x6e, 0xc8, 0x3d, 0xa4, 0x3c,
  0x0b, 0xe1, 0x1c, 0x0b, 0xff, 0xa4, 0xef, 0x12, 0xcd, 0x8c, 0x22, 0x53,
  0x86, 0x0f, 0xa0, 0x32, 0xc5, 0xb2, 0x38, 0x9a, 0xf0, 0x19, 0x66, 0x32,
  0x3b, 0x3b, 0x2d, 0xa6, 0x97, 0xf4, 0x49, 0x17, 0x1a, 0xa3, 0xcb, 0x5e,
  0xc6, 0x93, 0x44, 0x81, 0x53, 0x85, 0x7d, 0xe7, 0x23, 0xd8, 0x42, 0x0a,
  0xd2, 0x12, 0x28, 0x11, 0x6a, 0x47, 0x9e, 0x05, 0xcd, 0x5c, 0x13, 0xb9,
  0xa4, 0x11, 0xb9, 0x78, 0x11, 0x84, 0xdd, 0x96, 0xb3, 0x74, 0xa1, 0xfe,
  0xe9, 0x6e, 0x94, 0x48, 0x56, 0xd1, 0xec, 0x51, 0x4e, 0x65, 0xd9, 0x0b,
  0x98, 0x5e, 0xa6, 0x99, 0xbb, 0xc0, 0xdf, 0xce, 0x50, 0xf1, 0x5f, 0x6f,
  0x8c, 0xbe, 0xb7, 0xb5, 0x4d, 0x93, 0xdd, 0xdb, 0x7a, 0xb9, 0x51, 0x97,
  0xca, 0xb3, 0x32, 0xe9, 0x51, 0xd2, 0x5a, 0x58, 0x3b, 0xe5, 0x56, 0x75,

  0xd6, 0xaf, 0x4e, 0x9a, 0x28, 0xbe, 0x24, 0x99, 0x6e, 0xe3, 0x65, 0xa1,
  0xa6, 0x1c, 0x36, 0x31, 0x44, 0xc3, 0xb4, 0xbc, 0x41, 0xd4, 0x45, 0x4f,
  0xca, 0xdb, 0x77, 0xc8, 0x68, 0xa3, 0xd8, 0x0d, 0xef, 0x53, 0x4c, 0xaf,
  0x4a, 0x83, 0x34, 0xde, 0x07, 0x7a, 0x0e, 0xad, 0x52, 0x0e, 0x30, 0x84,
  0xda, 0x99, 0x2a, 0x92, 0x03, 0x27, 0x89, 0x49, 0xf8, 0xae, 0xde, 0x6e,
  0xd8, 0xf0, 0x9d, 0xb7, 0x69, 0x96, 0x96, 0x37, 0xd4, 0xa6, 0xb8, 0x2c,
  0xe3, 0x69, 0xe2, 0x17, 0xb8, 0x03, 0x43, 0x02, 0x93, 0x89, 0xdb, 0xe8,
  0x15, 0x84, 0x4c, 0x8f, 0xa9, 0x61, 0xbc, 0xef, 0x52, 0xb0, 0x22, 0x3d,
  0xf6, 0x08, 0x19, 0xcd, 0x2e, 0x33, 0x44, 0x2f, 0x69, 0xe9, 0x34, 0x80,
  0x6c, 0xeb, 0xff, 0x88, 0xdd, 0xc8, 0x08, 0x22, 0x8b, 0x7b, 0x03, 0x71,
  0x73, 0xa0, 0x50, 0xd7, 0x17, 0x50, 0xb5, 0xe1, 0x70, 0x2f, 0x06, 0xc0,
  0x82, 0x6c, 0xaf, 0x62, 0x4a, 0x01, 0x84, 0x9f, 0xfd, 0x00, 0xba, 0x68,
  0xff, 0x95, 0xf9, 0xf1, 0xc6, 0xf3, 0x1a, 0x46, 0xee, 0x34, 0x74, 0x33,
  0xcc, 0xc5, 0x95, 0x48, 0x04, 0x99, 0x2a, 0xaf, 0xf9, 0x1f, 0x61, 0x5f,
  0x07, 0xd5, 0xb5, 0x82, 0x15, 0xf9, 0xfe, 0x88, 0x20, 0xa5, 0x2c, 0xc2,

  0xb3, 0x93, 0xb6, 0x5b, 0xab, 0xd1, 0xa3, 0xee, 0x99, 0xa8, 0xaa, 0x06,
  0x01, 0xfe, 0x0c, 0x26, 0x2f, 0x67, 0x10, 0xda, 0xa8, 0x9b, 0xea, 0x72,

  0x20, 0x78, 0x2b, 0x34, 0x4c, 0x11, 0x7a, 0x27, 0x3a, 0x4b, 0xb8, 0x59,
  0x4e, 0xb4, 0xf6, 0xd5, 0x5a, 0xa0, 0x9a, 0x6f, 0xed, 0xd0, 0x41, 0x18,
  0x2f, 0x6d, 0x23, 0xae, 0xb5, 0x2f, 0x30, 0x29, 0x19, 0xc1, 0x54, 0xf8,
  0x9b, 0x72, 0x06, 0x9c, 0x5f, 0x1b, 0x0e, 0xeb, 0x6b, 0x4a, 0x9f, 0xe0,
  0x03, 0xd6, 0x93, 0x87, 0xb8, 0xf1, 0x35, 0x62, 0xaf, 0x37, 0xd6, 0xad,
  0xfa, 0xdc, 0x9a, 0x57, 0xed, 0x87, 0xa9, 0xfb, 0x8c, 0xd6, 0x23, 0xdd,
  0xc1, 0x6d, 0x1b, 0x53, 0x9e, 0x13, 0x4f, 0x86, 0x7c, 0x95, 0xa3, 0x51,
  0x8a, 0x9a, 0x0b, 0x5d, 0x7d, 0xf8, 0xe5, 0x74, 0x1a, 0x4c, 0x71, 0x82,
  0x2d, 0xc0, 0x83, 0xc7, 0x35, 0x4f, 0x92, 0xb8, 0x22, 0x7d, 0x03, 0xe5,
  0x7c, 0x7b, 0xf2, 0xb4, 0xd5, 0xdd, 0x03, 0xcf, 0x38, 0xab, 0x38, 0x74,
  0xeb, 0x53, 0xc2, 0x54, 0x40, 0x44, 0xc0, 0x34, 0x80, 0x88, 0x9e, 0xf4,

  0x33, 0xe3, 0xed, 0x9a, 0xc4, 0x40, 0x14, 0x8f, 0x12, 0x5a, 0x9e, 0x51,
  0x3d, 0x01, 0x73, 0x90, 0x64, 0xee, 0xf1, 0xb0, 0x99, 0xa6, 0xe6, 0x72,
  0x06, 0x3b, 0xf6, 0x12, 0xe1, 0x64, 0x67, 0xdc, 0x67, 0x96, 0x07, 0x36,
  0xe9, 0x3d, 0xd2, 0x86, 0x1a, 0x36, 0x97, 0xbd, 0xe9, 0x15, 0x71, 0x33,
  0xdb, 0x45, 0x55, 0x51, 0x1b, 0x90, 0x92, 0xf3, 0x85, 0x61, 0x38, 0xbe,
  0xca, 0xc8, 0x2d, 0x66, 0x6c, 0xfa, 0x28, 0xc9, 0x84, 0x00, 0x6e, 0xb4,
  0x49, 0x97, 0x84, 0x2b, 0x0a, 0x46, 0x08, 0x63, 0x43, 0x4c, 0x26, 0x8f,
  0xb0, 0x49, 0xdb, 0xce, 0xee, 0xe7, 0x9f, 0xf7, 0x83, 0x38, 0xa7, 0x5c,
  0x9e, 0x0d, 0x44, 0x88, 0x3b, 0x65, 0x31, 0x31, 0xbb, 0x06, 0xdd, 0x18,
  0xbf, 0x8f, 0x14, 0x46, 0xe5, 0x63, 0xf9, 0x1c, 0xa1, 0x8b, 0x90, 0x39,
  0x2e, 0x67, 0xbe, 0x79, 0x4f, 0xa1, 0xc7, 0x39, 0xaa, 0x15, 0xc2, 0xc5,
  0x48, 0xbd, 0x42, 0xae, 0x31, 0x4f, 0x5b, 0x54, 0xba, 0x44, 0xd2, 0xf3,
  0x38, 0x95, 0x53, 0xa0, 0x01, 0x25, 0x9f, 0x94, 0xd3, 0x7e, 0x41, 0x6b,
  0xa0, 0x1c, 0x77, 0xce, 0xfa, 0xe0, 0xed, 0x58, 0x6b, 0x29, 0x07, 0x5d,
  0x8b, 0x34, 0xfa, 0x39, 0x4c, 0x0c, 0xbe, 0x02, 0x77, 0xde, 0x6a, 0x20,
  0xe0, 0x70, 0xc9, 0x78, 0x86, 0x35, 0x61, 0xd8, 0xe9, 0x02, 0x3e, 0xd0,
  0x18, 0x8e, 0x2a, 0xa4, 0xa7, 0x49, 0xe5, 0xd7, 0x31, 0x39, 0xd9, 0xbd,
  0x2b, 0x06, 0x0f, 0xd9, 0x44, 0x52, 0x86, 0x15, 0x1d, 0xf6, 0x25, 0x92,
  0x30, 0x4e, 0x27, 0x7a, 0x49, 0x4d, 0x77, 0x88, 0xaf, 0xe8, 0x34, 0x0e,
  0x65, 0xeb, 0xa5, 0x2c, 0xf1, 0xab, 0x20, 0xc6, 0x99, 0xa4, 0x18, 0x13,
  0xe0, 0x56, 0x55, 0x81, 0x5a, 0x6d, 0x79, 0x37, 0x65, 0x91, 0x73, 0x2f,
  0x02, 0xae, 0xdd, 0xe1, 0x0d, 0xe6, 0xbc, 0xcd, 0x59, 0x08, 0x64, 0xe3,
  0xd0, 0x0c, 0x2a, 0xad, 0x4e, 0x30, 0x91, 0x1f, 0xa7, 0x12, 0xda, 0x09,

  0xc5, 0x29, 0x47, 0xfe, 0x00, 0x4f, 0x7b, 0x56, 0x0f, 0xbe, 0xeb, 0xec,
  0x93, 0x7f, 0xf6, 0x6e, 0x64, 0x4d, 0x10, 0x35, 0x78, 0x8b, 0x6d, 0x02,

  0xb8, 0x1b, 0x9d, 0x91, 0x95, 0x82, 0x26, 0x1c, 0xee, 0xce, 0x8d, 0x4b,
  0xb5, 0x95, 0xdc, 0x44, 0x59, 0xd3, 0x3c, 0xe1, 0x59, 0x12, 0xac, 0x86,
  0xee, 0x2a, 0xfa, 0x2a, 0xab, 0x62, 0x39, 0x42, 0xc5, 0x92, 0x8c, 0x72,
  0xfa, 0x54, 0xa8, 0x1b, 0x97, 0xba, 0x57, 0xcd, 0x8a, 0xa9, 0x67, 0x1e,
  0x9d, 0x17, 0xed, 0xb2, 0x00, 0x02, 0xb2, 0x85, 0x27, 0x78, 0x91, 0x9c,
  0xa1, 0xda, 0x0b, 0xf6, 0x71, 0x4d, 0xc8, 0xdd, 0x52, 0xa6, 0x7f, 0x67,
  0xa5, 0x4c, 0x52, 0x7b, 0x15, 0x1e, 0x8d, 0x1c, 0x1c, 0x09, 0x02, 0xf6,
  0x47, 0x6f, 0xb0, 0xcb, 0x28, 0x8b, 0x72, 0xa4, 0x37, 0x8f, 0x4f, 0xbb,
  0x89, 0xed, 0x2c, 0x91, 0x50, 0x8d, 0x2b, 0x92, 0xe9, 0x12, 0xa5, 0x1c,
  0xed, 0xd3, 0xba, 0xc2, 0xa1, 0xea, 0x13, 0x8b, 0x74, 0x41, 0x9d, 0x4c,
  0xc0, 0x9e, 0xf3, 0x72, 0xe5, 0xe1, 0x2d, 0xee, 0x1f, 0xba, 0xcc, 0x60,
  0xbb, 0xaa, 0x25, 0xc6, 0x20, 0x05, 0x0f, 0x06, 0xf8, 0xd7, 0x5f, 0xc9,
  0xf5, 0x97, 0xcb, 0xd2, 0xb9, 0xf7, 0xc6, 0xd8, 0x98, 0xde, 0xc9, 0xc4,
  0xb3, 0x5d, 0x12, 0xca, 0x7c, 0x21, 0x20, 0x33, 0x4c, 0x25, 0xa9, 0x94,
  0x01, 0x70, 0xa3, 0x39, 0x74, 0xc4, 0x7c, 0x81, 0x71, 0xca, 0x51, 0x62,
  0x61, 0x5c, 0x69, 0x53, 0xa8, 0xaa, 0xda, 0xbb, 0xd5, 0x84, 0x88, 0xa8,
  0xba, 0x93, 0x8b, 0x93, 0x29, 0xcd, 0x4e, 0xba, 0x8c, 0xfc, 0xca, 0xe5,

  0x4d, 0x02, 0xfa, 0x13, 0x97, 0x5c, 0x3e, 0x51, 0xfa, 0x0d, 0x58, 0x49,
  0x08, 0xb0, 0x56, 0xfd, 0x57, 0x63, 0xf0, 0x22, 0xe7, 0x0b, 0xc0, 0x27,
  0x11, 0x6e, 0xec, 0x01, 0xe7, 0x69, 0x50, 0x3b, 0x3b, 0x61, 0x68, 0x26,
  0x2e, 0x21, 0xe5, 0x51, 0xac, 0x22, 0xae, 0x01, 0xeb, 0xc4, 0xbd, 0x5f,
  0x93, 0x8b, 0x1b, 0xc2, 0xec, 0xb1, 0x76, 0x3e, 0xb1, 0x6a, 0xbe, 0x26,
  0x06, 0xe9, 0xd2, 0xf0, 0x10, 0x54, 0xa9, 0x8a, 0x18, 0x38, 0xe6, 0x5f,
  0x17, 0xd3, 0x16, 0x50, 0x45, 0xee, 0x99, 0x03, 0xb6, 0x82, 0xdf, 0xa4,
  0x8b, 0xe8, 0xb0, 0xf7, 0x36, 0x92, 0xf9, 0xbc, 0xfe, 0xaa, 0x36, 0x9c,
  0x36, 0xae, 0x70, 0x71, 0xd9, 0x05, 0xe3, 0x63, 0x34, 0x4d, 0x9f, 0xd8,
  0x04, 0x6e, 0x6a, 0x60, 0xd2, 0x89, 0xcb, 0x9b, 0x3c, 0x91, 0xb3, 0xcb,
  0xc8, 0x04, 0x36, 0x3d, 0x98, 0x60, 0x5d, 0x65, 0xb0, 0xa3, 0x86, 0x6a,
  0xbc, 0xed, 0xd3, 0x26, 0xb9, 0xfe, 0x1f, 0xf9, 0x4d, 0x86, 0xff, 0xc0,
  0x2f, 0xe0, 0x07, 0x5e, 0x6f, 0x6f, 0x07, 0x67, 0xde, 0x3a, 0x5f, 0x9e,
  0xb0, 0xce, 0x18, 0x85, 0x91, 0xa4, 0x88, 0x3a, 0xbc, 0xad, 0x66, 0xfa,

  0xf7, 0xa9, 0x6a, 0xce, 0x77, 0xb3, 0xd1, 0x1d, 0x22, 0x3c, 0x32, 0xe7,
  0x55, 0x4e, 0xbf, 0x0b, 0xb2, 0xc4, 0xd4, 0xc8, 0x87, 0x99, 0x0f, 0x6e,
  0x01, 0xba, 0x1a, 0x1e, 0x49, 0xfb, 0xe2, 0x3b, 0x18, 0x0b, 0x7a, 0x7c,
  0x7d, 0x78, 0xb3, 0x9c, 0x26, 0xc4, 0x37, 0xab, 0x87, 0xaa, 0xf3, 0xac,
  0x95, 0xa3, 0x97, 0x82, 0xdd, 0x14, 0x9c, 0x62, 0x5d, 0x39, 0xc9, 0x46,
  0x54, 0xb3, 0x50, 0x53, 0x21, 0x38, 0x15, 0x13, 0x2d, 0x25, 0x0d, 0x75,
  0x35, 0xeb, 0x8a, 0x58, 0x19, 0xed, 0xf2, 0xa6, 0x09, 0xee, 0x85, 0xad,
  0xb4, 0x5f, 0xb1, 0x82, 0xfb, 0x64, 0xf8, 0xfa, 0x2b, 0xf4, 0x6d, 0x3d,
  0x50, 0xff, 0x00, 0xd6, 0x6a, 0x71, 0xeb, 0x36, 0xa9, 0x9d, 0x40, 0xe4,
  0x2c, 0xa2, 0x39, 0x48, 0x5e, 0xb4, 0x0f, 0xeb, 0xd4, 0x39, 0x39, 0x43,

  0x4e, 0xf2, 0x7c, 0xe5, 0x88, 0xea, 0xbb, 0xa1, 0x3d, 0x71, 0x92, 0x19,

  0x39, 0xc5, 0xcf, 0xd6, 0x70, 0x32, 0x41, 0x90, 0x9c, 0xa9, 0x89, 0xcb,
  0x50, 0x4d, 0x3d, 0x7a, 0xc8, 0xa4, 0x9f, 0xb9, 0x4a, 0x9c, 0xd7, 0x5d,
  0x2a, 0xf3, 0x09, 0x77, 0x8c, 0xb1, 0x6b, 0xe0, 0xeb, 0x48, 0x10, 0x48,
  0xf8, 0xd7, 0x2f, 0xcc, 0xeb, 0xf8, 0x1f, 0xb8, 0xcd, 0x84, 0xc8, 0xbd,
  0x62, 0x35, 0x18, 0x0a, 0xd4, 0x77, 0x36, 0x29, 0xfc, 0x64, 0x1a, 0x41,
  0xad, 0x75, 0x59, 0xd1, 0xfe, 0x62, 0x8d, 0xdc, 0xb8, 0x1a, 0xa4, 0xa6,

  0xf6, 0x4c, 0xc4, 0xe3, 0xc6, 0xb9, 0xa7, 0xd6, 0x62, 0x36, 0x26, 0xf7,
  0x6f, 0xa2, 0xd9, 0xb7, 0x4c, 0x1c, 0x67, 0xae, 0x53, 0xff, 0xa9, 0x63,
  0x26, 0xff, 0x53, 0xc7, 0x4e, 0xff, 0xa7, 0x8e, 0x5d, 0xc0, 0x4f, 0x1d,

  0x84, 0xa1, 0xc4, 0x45, 0xf8, 0x06, 0xf1, 0x2f, 0x3d, 0xf4, 0x35, 0xfe,
  0xaa, 0xfd, 0xa8, 0xf3, 0x4d, 0xe7, 0x93, 0x9d, 0xb5, 0x55, 0x9b, 0xe6,
  0xc6, 0x86, 0xa8, 0x2e, 0xa6, 0xb9, 0x87, 0xc0, 0xae, 0x6b, 0xdb, 0x64,
  0xb7, 0x05, 0x8d, 0x33, 0xaf, 0x83, 0xb7, 0xf3, 0x00, 0xee, 0xb8, 0x6d,
  0x4e, 0xe5, 0x34, 0x5d, 0x30, 0x28, 0x96, 0x7a, 0x0e, 0xda, 0xfb, 0xd9,
  0x93, 0x47, 0xe6, 0x75, 0x4f, 0xfe, 0xfc, 0x27, 0x7c, 0x81, 0xf4, 0x7f,
  0x1a, 0x43, 0x6e, 0x35, 0x01, 0xd8, 0x48, 0x5e, 0x1e, 0x25, 0x4c, 0x67,
  0x1c, 0xb5, 0x64, 0xf1, 0x37, 0xe1, 0x4a, 0x23, 0x26, 0x09, 0x2f, 0x97,
  0x7e, 0x9e, 0x52, 0xab, 0x32, 0x58, 0xd5, 0x8c, 0x2d, 0xd4, 0x4d, 0x94,
  0x0a, 0x94, 0xfb, 0x4a, 0x1d, 0xc4, 0x4a, 0x32, 0xd1, 0xc5, 0x78, 0x95,
  0x3e, 0x6c, 0xbc, 0x0f, 0xed, 0x24, 0x8d, 0x8a, 0xf8, 0x2c, 0x2f, 0xca,
  0xd7, 0x9d, 0x02, 0x3b, 0xbf, 0x46, 0xd3, 0x02, 0x34, 0xd8, 0x2f, 0x90,
  0xb4, 0x96, 0x70, 0x58, 0xf6, 0x9e, 0x3e, 0xf4, 0xe6, 0x8f, 0x30, 0xef,
  0xb5, 0x5f, 0x44, 0x19, 0x0e, 0x4b, 0x1b, 0x53, 0x94, 0x1e, 0x98, 0xe3,
  0x3c, 0x6a, 0xe6, 0x29, 0xf0, 0xd5, 0x75, 0x2e, 0xa5, 0xfc, 0xfe, 0x75,
  0x08, 0xe6, 0xce, 0x5b, 0x88, 0xc3, 0x79, 0xc9, 0x54, 0x7b, 0x7d, 0xf1,
  0xed, 0x17, 0x3a, 0xc0, 0x4f, 0x9d, 0x1f, 0x7a, 0xfc, 0x53, 0xaa, 0x17,
  0x3e, 0x88, 0x2e, 0xbe, 0x45, 0xea, 0xfe, 0x65, 0x0c, 0x6c, 0xd5, 0x07,

  0xbe, 0xe2, 0xbf, 0x10, 0x65, 0xaf, 0x1a, 0xf6, 0xda, 0xe6, 0x49, 0xbc,
  0xc6, 0x06, 0xc6, 0x54, 0x67, 0x44, 0x56, 0xf8, 0x62, 0x81, 0x95, 0x43,
  0x5a, 0x1f, 0x5b, 0x71, 0x7d, 0x2c, 0x45, 0x8d, 0xe2, 0x61, 0xce, 0x29,
  0xd2, 0x95, 0x8f, 0x8d, 0x4d, 0xd8, 0xbc, 0x74, 0xb6, 0xe2, 0xbb, 0x5a,



  0x90, 0xe3, 0x82, 0xd4, 0xe1, 0x7a, 0x9a, 0x41, 0xbd, 0x96, 0xb1, 0x1b,
  0x9d, 0x04, 0x9a, 0x20, 0x58, 0x70, 0x23, 0xfe, 0x1b, 0xe9, 0x65, 0xa6,
  0x37, 0x37, 0x36, 0x54, 0x8b, 0x8b, 0x44, 0x3b, 0xe4, 0x48, 0x4f, 0x3f,
  0x0a, 0x30, 0x01, 0xc1, 0x04, 0x42, 0x01, 0x12, 0x9d, 0x94, 0x44, 0xf4,
  0x49, 0x3e, 0x93, 0x2e, 0xee, 0x25, 0x50, 0x3d, 0x1f, 0xb0, 0x69, 0xa3,
  0x07, 0x1a, 0x07, 0x6e, 0x85, 0x44, 0x2a, 0xe4, 0xb3, 0x01, 0x95, 0x43,
  0xa2, 0x89, 0xec, 0x8d, 0x93, 0xa6, 0x6d, 0x04, 0x18, 0xc6, 0x84, 0xff,

  0x05, 0x1a, 0xfd, 0xc3, 0x84, 0x9c, 0x4f, 0xa6, 0x2a, 0xb3, 0x27, 0xce,

  0xe1, 0x80, 0x07, 0x27, 0x32, 0xf7, 0x46, 0x2f, 0x0e, 0xa7, 0x41, 0x68,
  0xa9, 0x26, 0xe6, 0x89, 0xbd, 0x43, 0x95, 0x50, 0x12, 0xd9, 0xb5, 0xb3,
  0x0d, 0x8a, 0x97, 0xf0, 0x62, 0xe9, 0x0e, 0xab, 0x1a, 0xe1, 0xdf, 0xb6,
  0xe8, 0x8f, 0xe2, 0x4b, 0xd6, 0xc7, 0x62, 0xd1, 0xb7, 0xe4, 0xb0, 0xfa,
  0xde, 0x0b, 0x3f, 0x48, 0x52, 0x50, 0x6f, 0xfb, 0xc0, 0xe9, 0x52, 0xc4,
  0x3f, 0x0b, 0x0f, 0xef, 0x82, 0xc0, 0x68, 0x80, 0xb8, 0x94, 0xed, 0x5f,
  0x31, 0xfe, 0x8e, 0x19, 0xff, 0xb3, 0x00, 0xee, 0x0a, 0x23, 0xa3, 0x84,
  0x3f, 0x7b, 0x6d, 0x93, 0x00, 0xd5, 0x8b, 0x6a, 0x3c, 0x19, 0x35, 0x1f,
  0x82, 0x42, 0x3e, 0x33, 0x26, 0x0b, 0x87, 0x1b, 0xfc, 0x26, 0x0f, 0x0c,
  0x57, 0x49, 0x66, 0x20, 0xad, 0x03, 0xb6, 0xb1, 0x69, 0x22, 0xb2, 0xa8,
  0x17, 0xc2, 0xca, 0xe7, 0x08, 0xc1, 0x3a, 0x3e, 0xb0, 0x3d, 0x2f, 0x19,
  0x44, 0x22, 0x75, 0xf3, 0xeb, 0x6d, 0x1d, 0xad, 0x57, 0xd6, 0x58, 0x03,
  0x38, 0xf6, 0x3e, 0x05, 0xac, 0x98, 0xa1, 0x97, 0x9c, 0x86, 0x8c, 0x6b,
  0xeb, 0x6b, 0xe2, 0x54, 0xc1, 0x0f, 0x61, 0xab, 0x48, 0x4a, 0x84, 0xa2,
  0x62, 0xec, 0x98, 0x30, 0x33, 0xc4, 0x97, 0xd3, 0x0b, 0x68, 0x1d, 0x07,
  0xc4, 0xda, 0xcd, 0x9d, 0x60, 0xa0, 0x20, 0xc2, 0x09, 0x52, 0xbb, 0x99,
  0x41, 0xbd, 0x6a, 0xe0, 0x40, 0xbe, 0x91, 0xec, 0x6c, 0xb1, 0x0c, 0xc6,


  0xb6, 0xa9, 0xcd, 0x56, 0x8c, 0xa3, 0xb5, 0xd7, 0x1b, 0x6b, 0x66, 0x69,
  0xed, 0x66, 0x91, 0xd7, 0xf1, 0x51, 0x83, 0x90, 0xa6, 0x0f, 0x2c, 0x79,
  0x96, 0xe6, 0x98, 0xfb, 0x90, 0xf4, 0xe8, 0x40, 0x83, 0x08, 0x7a, 0x65,
  0x25, 0xde, 0x4e, 0x4a, 0x2c, 0xa7, 0xdb, 0xc9, 0x58, 0x2f, 0x4c, 0xe2,
  0xf1, 0xac, 0xc2, 0x54, 0x7d, 0x2a, 0xa6, 0x60, 0xb4, 0xbf, 0xf2, 0xc0,
  0xd1, 0xc7, 0x03, 0xd7, 0x13, 0x03, 0x39, 0xd4, 0x44, 0x41, 0x5c, 0x22,
  0x8e, 0x47, 0x63, 0x95, 0xea, 0xbd, 0xf6, 0x7a, 0x9d, 0x05, 0x96, 0xf5,
  0xa7, 0x39, 0xdf, 0x5e, 0x8b, 0x7e, 0x0a, 0xd7, 0xb5, 0x46, 0xfc, 0xae,
  0x63, 0x21, 0x08, 0xd9, 0x3e, 0xf5, 0x46, 0x74, 0x38, 0xcc, 0xc7, 0x8f,
  0x5f, 0x52, 0xd8, 0x49, 0x5e, 0x39, 0xdc, 0xa4, 0x1f, 0x35, 0x54, 0xe6,
  0xb6, 0x81, 0x68, 0x14, 0x38, 0x2a, 0xfa, 0xf3, 0x2b, 0x7c, 0x5c, 0x2d,
  0x86, 0xb5, 0xa8, 0xdf, 0x07, 0x26, 0x54, 0xce, 0xa9, 0x1d, 0xd7, 0x0a,
  0xc1, 0xc2, 0x78, 0x77, 0x24, 0x62, 0x51, 0x49, 0x11, 0xc8, 0x12, 0xf2,
  0xec, 0xa8, 0x95, 0xcd, 0x4e, 0x48, 0xfe, 0x55, 0xf1, 0xba, 0x1f, 0x1d,
  0x99, 0x2c, 0x99, 0x24, 0x80, 0x91, 0x8d, 0xd7, 0x98, 0x65, 0x87, 0x53,
  0x12, 0xfe, 0xf9, 0x30, 0x15, 0x37, 0xfb, 0x38, 0xaf, 0xe1, 0x6e, 0x32,
  0xa6, 0x03, 0x08, 0xf7, 0x30, 0x52, 0xda, 0x28, 0x2f, 0x38, 0x46, 0xc4,
  0xee, 0x74, 0x63, 0xbf, 0xc8, 0xd4, 0x7a, 0x27, 0x02, 0xcc, 0xa5, 0x6c,
  0xb4, 0x1b, 0xbd, 0x34, 0x5f, 0x0a, 0x60, 0xd5, 0xb3, 0xc5, 0x5f, 0x46,
  0x9f, 0xf7, 0xf0, 0x29, 0xa7, 0x5b, 0xac, 0xd0, 0x7d, 0x3d, 0x83, 0xa3,
  0x2b, 0x4a, 0x61, 0x8f, 0x12, 0x93, 0x02, 0x05, 0x39, 0x24, 0x09, 0x86,

  0x71, 0x99, 0xbc, 0xd8, 0x53, 0xf5, 0x92, 0x77, 0xa9, 0x54, 0xff, 0x6d,
  0xcd, 0x09, 0xcb, 0x72, 0xc8, 0x59, 0x50, 0xf3, 0x22, 0x50, 0x61, 0x31,
  0x2a, 0x67, 0xd8, 0xfc, 0x8b, 0x73, 0x70, 0x51, 0x9a, 0x82, 0x22, 0x39,
  0xad, 0xa8, 0xa2, 0xe8, 0xe5, 0x0b, 0x67, 0xd2, 0x4f, 0xb8, 0x2b, 0x1a,
  0x9c, 0x54, 0x56, 0xd8, 0x5c, 0x91, 0xda, 0xeb, 0xf0, 0x5d, 0xef, 0x5e,
  0xa2, 0xaf, 0x83, 0x81, 0xc7, 0x64, 0x8d, 0xc6, 0xc1, 0xf8, 0xd4, 0x35,
  0x72, 0x2f, 0xc1, 0x17, 0x4a, 0x38, 0xcd, 0x4f, 0xaf, 0x24, 0x6a, 0xc7,

  0x44, 0xd2, 0xf7, 0x79, 0x12, 0x4c, 0xd8, 0x4f, 0xd3, 0x35, 0x06, 0x11,
  0x26, 0xcb, 0x82, 0xa4, 0x8f, 0x3c, 0xc6, 0x4a, 0x82, 0xd6, 0x29, 0x89,
  0x9e, 0xfe, 0xfe, 0xe8, 0xfc, 0xc3, 0xd1, 0xd9, 0xf3, 0xbb, 0x02, 0xd5,
  0x1a, 0xcd, 0x3d, 0x91, 0x03, 0xeb, 0x82, 0x19, 0x34, 0xa0, 0x7e, 0xc2,
  0x50, 0x06, 0x5e, 0xd4, 0x01, 0xa1, 0x0d, 0x9a, 0xd9, 0x7a, 0x58, 0x34,
  0x86, 0x74, 0x85, 0x49, 0x22, 0x61, 0x08, 0x20, 0xce, 0xf3, 0x95, 0x10,
  0xb9, 0x93, 0xb9, 0x19, 0x97, 0xd2, 0x93, 0xb1, 0xa3, 0xef, 0xe3, 0xeb,
  0x1d, 0x49, 0x1e, 0x37, 0x75, 0xe2, 0x21, 0x2a, 0x37, 0xb5, 0xed, 0x26,
  0xf5, 0x4a, 0x9b, 0x5a, 0x8b, 0x40, 0xab, 0x79, 0xdf, 0xf2, 0xc9, 0xc4,
  0x66, 0xcf, 0x36, 0x23, 0x7c, 0xc7, 0xc7, 0xed, 0x25, 0xb7, 0x9f, 0x12,
  0x2d, 0xb5, 0x91, 0x91, 0x4e, 0xdb, 0x68, 0xb9, 0x7b, 0xaf, 0xca, 0xb9,
  0x1a, 0xfd, 0x50, 0xe6, 0x16, 0xde, 0x55, 0x98, 0xa0, 0x8b, 0x1c, 0xa0,
  0x2a, 0x2e, 0xb5, 0x9b, 0x1d, 0x9c, 0x5c, 0xd1, 0x66, 0x5d, 0x1e, 0x0d,
  0x06, 0x46, 0x16, 0x96, 0x92, 0x96, 0xd0, 0xf5, 0x8c, 0x31, 0x52, 0x23,
  0xdd, 0xb6, 0x27, 0xfd, 0xc8, 0x74, 0x8a, 0x95, 0x74, 0x4e, 0x8a, 0xfd,
  0x80, 0xcd, 0x77, 0xbd, 0x9c, 0xc3, 0x85, 0x01, 0x8d, 0x77, 0xbc, 0x56,
  0x4a, 0x28, 0xb6, 0x49, 0x78, 0xc8, 0xb9, 0x44, 0x93, 0xa2, 0xb3, 0x46,
  0xda, 0xc3, 0xb3, 0x1f, 0x68, 0x0c, 0x09, 0xb9, 0x3c, 0x07, 0xaf, 0x5d,
  0x88, 0xdb, 0x6e, 0xd8, 0x99, 0xde, 0x19, 0x9c, 0x5e, 0x9f, 0xc0, 0xf6,
  0x7d, 0xb8, 0x7e, 0xd7, 0x91, 0xd4, 0x85, 0x26, 0x0a, 0x06, 0x39, 0xed,
  0xb1, 0xc5, 0xeb, 0x9d, 0xa9, 0x96, 0x2d, 0xd8, 0x91, 0x02, 0xd6, 0x42,
  0x48, 0x03, 0xb7, 0x1f, 0xed, 0xaf, 0x38, 0xa5, 0xfd, 0xfe, 0x7e, 0xf3,
  0x94, 0xda, 0xe1, 0xaa, 0x19, 0xc0, 0xd8, 0x23, 0x77, 0x41, 0x45, 0xc6,
  0xec, 0xa9, 0x4d, 0xdb, 0x3c, 0x85, 0x82, 0x6c, 0x84, 0xae, 0x13, 0x73,
  0x29, 0xbc, 0x87, 0x9e, 0xa7, 0x50, 0x82, 0x4e, 0x5c, 0x9c, 0xb0, 0x9b,
  0x0d, 0xdc, 0x90, 0x78, 0x7b, 0x39, 0x1c, 0x0a, 0x27, 0x16, 0x17, 0x63,
  0x53, 0x16, 0xea, 0xeb, 0x87, 0x9a, 0xeb, 0x87, 0x2d, 0x99, 0x80, 0x04,
  0xb4, 0x25, 0x4b, 0xad, 0x5a, 0xd7, 0xef, 0xad, 0x60, 0xf3, 0xf9, 0xc2,
  0x60, 0xda, 0xe4, 0x45, 0xa7, 0x2e, 0x2d, 0x06, 0x15, 0x7a, 0x65, 0xf6,
  0x63, 0x18, 0xff, 0x19, 0xf7, 0x55, 0xf2, 0x45, 0x0e, 0xf9, 0xcf, 0x30,
  0xbd, 0x93, 0xc8, 0x2d, 0xf2, 0x19, 0x3b, 0x10, 0xe5, 0x0d, 0x4e, 0xe2,
  0xe4, 0x62, 0x17, 0xa9, 0xc3, 0x28, 0x28, 0xe1, 0x50, 0x42, 0x34, 0xd4,
  0xd4, 0xdc, 0x6f, 0xbb, 0xb5, 0x3e, 0xd8, 0x30, 0x9e, 0xd6, 0x6b, 0x8a,
  0x28, 0xd2, 0x68, 0x81, 0x2a, 0x26, 0x07, 0x59, 0x51, 0xd4, 0xcb, 0x10,
  0xba, 0x8f, 0x73, 0x7b, 0x7d, 0x8b, 0x89, 0x18, 0xf5, 0xe8, 0x7e, 0xdc,
  0x82, 0x55, 0x47, 0x6e, 0x2d, 0x4a, 0x22, 0x23, 0x1b, 0x90, 0x6b, 0xa6,

  0x8e, 0xbf, 0x7f, 0xe3, 0x34, 0xdb, 0xd1, 0x3c, 0x35, 0xa6, 0x17, 0x51,

  0x48, 0xdb, 0xd0, 0xe0, 0x12, 0x9b, 0x6c, 0xd9, 0xa7, 0xa0, 0xea, 0x38,
  0x49, 0x16, 0x06, 0xda, 0x3c, 0xa5, 0x1a, 0x9b, 0xb4, 0xa4, 0x20, 0xaa,


  0xc0, 0xca, 0x53, 0x3b, 0xb9, 0x96, 0xd9, 0x09, 0xeb, 0xd0, 0x16, 0x91,
  0x64, 0xef, 0x60, 0xf3, 0x30, 0x0c, 0xe3, 0x6e, 0xbf, 0xdc, 0xfd, 0x1c,
  0x64, 0xf3, 0x23, 0x61, 0x8d, 0xdb, 0x2d, 0x63, 0x2c, 0xe0, 0x76, 0x9c,
  0x3f, 0x31, 0x6a, 0x34, 0xbd, 0x57, 0xe0, 0x14, 0xa2, 0x12, 0xcd, 0x08,
  0x72, 0x50, 0x49, 0x71, 0xb3, 0x8f, 0x45, 0x03, 0x9b, 0x28, 0x1b, 0x26,
  0x49, 0x77, 0xb4, 0x4f, 0x9c, 0x20, 0xd6, 0x77, 0x08, 0x18, 0x1b, 0x94,
  0x60, 0x27, 0x35, 0x60, 0x29, 0x57, 0x27, 0xd7, 0x57, 0xf0, 0xc7, 0xe0,
  0xfa, 0xe2, 0xaa, 0x05, 0x99, 0xb1, 0x62, 0x98, 0x0e, 0xdc, 0x34, 0x4d,


  0x57, 0xa1, 0x6d, 0xae, 0xa3, 0xb6, 0x51, 0x26, 0x34, 0xb3, 0x9d, 0x32,
  0x08, 0xf4, 0xe5, 0xe0, 0x7d, 0x95, 0xfd, 0xda, 0x42, 0x27, 0x20, 0x1f,
  0x56, 0x2e, 0x8c, 0xcf, 0x7c, 0x35, 0x85, 0xd0, 0x82, 0x91, 0x18, 0x71,
  0xc5, 0x86, 0xd1, 0xd3, 0x6c, 0xc1, 0x68, 0x43, 0xe7, 0xbf, 0x85, 0xb1,
  0xd7, 0xf6, 0xd4, 0x2d, 0x68, 0x86, 0x9c, 0x9a, 0xcb, 0xcd, 0x59, 0x6c,
  0xb7, 0x76, 0xe0, 0xb4, 0x0a, 0x05, 0xd0, 0x89, 0xd6, 0xc9, 0x81, 0x2c,
  0x7a, 0xc9, 0x13, 0xf4, 0x0b, 0xba, 0xd0, 0x86, 0x5d, 0x70, 0x99, 0xcf,
  0x13, 0xf6, 0xf0, 0x73, 0x72, 0xae, 0x32, 0x27, 0x96, 0x2d, 0x8c, 0x4b,
  0x1b, 0x85, 0xf0, 0x30, 0x0c, 0x84, 0x18, 0x9e, 0xf2, 0x9a, 0x41, 0x14,
  0xc8, 0x85, 0x3a, 0xf8, 0x5c, 0x12, 0xb0, 0x54, 0x2b, 0xc2, 0x66, 0x5b,
  0xd3, 0x59, 0x39, 0xd8, 0x62, 0x75, 0xe6, 0xbd, 0xdd, 0x64, 0x32, 0x08,

  0xca, 0x10, 0xe6, 0x2c, 0xd4, 0x47, 0x4f, 0x8b, 0xeb, 0x29, 0xd1, 0x4a,
  0x73, 0x6c, 0x48, 0x97, 0x70, 0xfb, 0x87, 0x5e, 0xca, 0x53, 0xc1, 0xb0,
  0x1a, 0x55, 0x2f, 0x22, 0x98, 0x87, 0xa1, 0x6d, 0x39, 0x72, 0x0e, 0xd1,
  0x2c, 0x9b, 0x4c, 0xb7, 0xa6, 0xcf, 0xf9, 0x6c, 0x56, 0x95, 0xb6, 0xc8,
  0x76, 0x64, 0xf2, 0xd0, 0x28, 0x5a, 0xdb, 0x7e, 0xb5, 0xa1, 0x44, 0x37,
  0x35, 0x18, 0x4a, 0xb7, 0xb2, 0x4e, 0x06, 0xea, 0x91, 0x1d, 0x44, 0xd0,



  0x89, 0x3e, 0x64, 0x82, 0x1c, 0x93, 0x81, 0x6d, 0x41, 0xf9, 0x0f, 0x63,
  0xb3, 0x69, 0x08, 0xa8, 0x84, 0x69, 0x5b, 0x2c, 0xb4, 0xc6, 0x39, 0x2b,
  0xf4, 0x84, 0xe9, 0xec, 0x43, 0x84, 0x91, 0x0f, 0x99, 0xb2, 0x09, 0x54,
  0xd2, 0xc8, 0x78, 0xd6, 0x2e, 0x19, 0x55, 0xcd, 0x95, 0x12, 0xca, 0x83,
  0xb7, 0xd0, 0x4b, 0xf7, 0xd0, 0x98, 0xa5, 0x91, 0xf5, 0x63, 0x79, 0x41,

  0xc5, 0x60, 0x0b, 0x8c, 0xa8, 0xa0, 0x5e, 0x01, 0x81, 0xb5, 0xc8, 0x82,
  0xa5, 0x59, 0x0c, 0x69, 0xb1, 0xcc, 0x66, 0x98, 0x23, 0x5e, 0x87, 0x8a,
  0x50, 0x35, 0xb0, 0xbf, 0xa2, 0x8a, 0xd5, 0x45, 0x96, 0xa8, 0x91, 0x64,
  0xbd, 0x5e, 0xbf, 0xbe, 0xba, 0xd6, 0xca, 0x5f, 0x22, 0xd0, 0x2b, 0x3c,
  0x32, 0x45, 0xa4, 0x54, 0xda, 0x4a, 0xb3, 0x14, 0x91, 0x84, 0xf2, 0x62,
  0x13, 0xab, 0x54, 0x10, 0xb3, 0x0f, 0xac, 0xca, 0x7c, 0x46, 0xad, 0x7d,
  0x54, 0x75, 0x0b, 0x35, 0x64, 0x26, 0x15, 0x8c, 0x31, 0x78, 0x60, 0xf0,
  0x7a, 0xe5, 0xbe, 0xd3, 0xac, 0x0e, 0xa5, 0xa9, 0x03, 0x1b, 0xd1, 0x0f,
  0xb5, 0x83, 0xe3, 0x8c, 0x10, 0xca, 0x78, 0xac, 0xab, 0x63, 0xda, 0x9a,
  0x54, 0x9b, 0x8b, 0xd0, 0xb9, 0x92, 0xca, 0x47, 0xf9, 0xf7, 0x2d, 0xb5,
  0x7c, 0xda, 0xd8, 0x85, 0xc0, 0xa1, 0x60, 0x57, 0xba, 0x9c, 0x1d, 0x52,
  0xbf, 0x99, 0x64, 0x39, 0xd4, 0xbf, 0x56, 0x26, 0xd5, 0x72, 0xe1, 0xcb,
  0x79, 0x5b, 0x7d, 0x6a, 0x46, 0xd4, 0xa0, 0xa8, 0x33, 0x45, 0x44, 0x55,
  0xb0, 0xdb, 0xef, 0xa2, 0xf3, 0x37, 0x6f, 0x23, 0x69, 0x02, 0x9e, 0x74,
  0x6f, 0x43, 0x02, 0x50, 0xf1, 0x82, 0x0d, 0x82, 0xa3, 0x0e, 0xe8, 0x17,
  0x5b, 0x1d, 0x06, 0x5a, 0x90, 0xb2, 0x2d, 0x8e, 0xb2, 0x9b, 0xb7, 0x61,
  0x5f, 0x9c, 0xf9, 0xfa, 0x77, 0x46, 0xeb, 0x51, 0xa4, 0x64, 0x11, 0x4f,

  0x67, 0x1d, 0x7b, 0xd1, 0xd3, 0xfd, 0xdd, 0xf8, 0xac, 0x75, 0xe9, 0x2b,

  0x66, 0xd5, 0xd9, 0x7e, 0xb5, 0xd3, 0xdf, 0x7e, 0xf1, 0x79, 0x7f, 0x9b,


  0x3a, 0xd9, 0x3a, 0x73, 0xb3, 0x1d, 0x57, 0x9d, 0x81, 0x02, 0xfd, 0x7c,
  0xa3, 0x76, 0x44, 0x5f, 0xfe, 0xc2, 0xfc, 0xb1, 0x8f, 0xcf, 0xf5, 0xb9,
  0xab, 0x8e, 0xf7, 0x8d, 0x39, 0xe8, 0x34, 0x69, 0xe6, 0xc5, 0x41, 0x7a,
  0x36, 0xab, 0x88, 0x69, 0x71, 0x91, 0x22, 0x19, 0x29, 0xca, 0xa6, 0xb3,
  0x4f, 0xda, 0x10, 0xd0, 0x34, 0x38, 0xa1, 0xdb, 0x19, 0x9e, 0x91, 0xb2,
  0xf4, 0x91, 0xa8, 0x91, 0x96, 0xab, 0x9b, 0xef, 0x7b, 0x6c, 0xf3, 0x17,
  0x5b, 0x7d, 0x08, 0xe1, 0x62, 0x2e, 0x5d, 0x13, 0xa6, 0x8b, 0x20, 0x9e,
  0x9a, 0x28, 0x41, 0x02, 0xfa, 0xc2, 0x0f, 0xaa, 0xc6, 0x6d, 0x02, 0xe2,
  0xae, 0x90, 0x21, 0xf0, 0x23, 0x5b, 0x89, 0xe3, 0x56, 0x12, 0xd3, 0xc8,
  0xa6, 0x4e, 0xb4, 0x01, 0xe7, 0x64, 0x60, 0x96, 0x98, 0x49, 0xeb, 0x70,

  0xf8, 0xce, 0x9f, 0xff, 0x6c, 0x39, 0x12, 0xb7, 0x55, 0xa7, 0x5e, 0x1e,

  0xfb, 0x04, 0xd5, 0xca, 0xb1, 0x6a, 0xee, 0x0a, 0xd0, 0x39, 0xf8, 0x91,
  0x9c, 0xc3, 0x3f, 0xf7, 0x7e, 0x84, 0x7f, 0xfe, 0xdc, 0xd1, 0x4b, 0xcd,
  0xb0, 0x5c, 0xb6, 0x60, 0xc4, 0xc2, 0x1f, 0xd2, 0x01, 0x75, 0xa3, 0x7a,
  0x5b, 0x5a, 0xd2, 0x0c, 0xae, 0x8f, 0x2f, 0xf9, 0x32, 0x16, 0x1c, 0xf6,

  0x26, 0x6a, 0x46, 0x3e, 0x44, 0x6a, 0x3d, 0xb2, 0x70, 0xea, 0xa8, 0xc1,
  0x74, 0x62, 0xf6, 0xd2, 0x79, 0xa5, 0x6b, 0x93, 0x1a, 0xee, 0x99, 0x03,
  0xc4, 0xa0, 0xdf, 0x4e, 0xd1, 0xbf, 0xc2, 0x25, 0xe9, 0xc0, 0x77, 0x55,

  0x91, 0x96, 0x8e, 0xc1, 0x08, 0xec, 0x05, 0x6c, 0xc0, 0x5c, 0x87, 0x7b,
  0x98, 0x52, 0x37, 0x12, 0xf8, 0x5b, 0xae, 0x8d, 0xa8, 0x04, 0x4b, 0x11,
  0xb6, 0x01, 0x36, 0x4a, 0xb9, 0x6d, 0x91, 0x96, 0xb7, 0xb8, 0x3e, 0x29,
  0xf3, 0x71, 0x72, 0x85, 0x70, 0x3e, 0x9f, 0x19, 0xad, 0xef, 0x51, 0x21,
  0x6b, 0x4c, 0xe1, 0x9e, 0xb3, 0xb3, 0x56, 0x3a, 0xe8, 0xb1, 0x2b, 0x10,
  0x65, 0x10, 0x76, 0x4b, 0x1e, 0x2b, 0x92, 0x67, 0xa0, 0xc1, 0x49, 0x2a,
  0xcc, 0x25, 0xe8, 0xb9, 0x86, 0x34, 0x1c, 0x68, 0x26, 0x2c, 0x69, 0x47,
  0x62, 0x41, 0xe9, 0xb7, 0xd1, 0x94, 0x5a, 0xd8, 0xa1, 0x06, 0x1d, 0xc5,
  0x0c, 0x0f, 0x65, 0xf0, 0xcd, 0xa8, 0x67, 0x16, 0x96, 0x4f, 0x14, 0x30,
  0x8d, 0x71, 0x57, 0x6b, 0xf3, 0xf9, 0x66, 0x60, 0x90, 0x57, 0x75, 0xba,
  0xcf, 0x82, 0xb6, 0x02, 0x5d, 0x34, 0xab, 0x8c, 0xce, 0xd8, 0xa7, 0x8e,
  0x9b, 0x4f, 0xbb, 0x8e, 0x7f, 0x02, 0xb7, 0xd6, 0x8e, 0x6a, 0xf7, 0x19,
  0xb5, 0x47, 0x8e, 0x7c, 0x83, 0x86, 0xa6, 0x3f, 0x0f, 0x41, 0xf4, 0x3a,
  0x42, 0x75, 0x67, 0xcb, 0x77, 0xa5, 0x60, 0xd3, 0x67, 0xda, 0xe4, 0x5e,
  0xba, 0x78, 0x7a, 0x03, 0x15, 0xe6, 0x0b, 0x8f, 0xb4, 0xc6, 0x59, 0x8c,
  0x84, 0x29, 0x97, 0xd3, 0x29, 0x61, 0x62, 0xf8, 0x99, 0x79, 0x54, 0xb1,
  0x28, 0x85, 0x03, 0xd2, 0xcf, 0x00, 0x18, 0x39, 0xcd, 0x5c, 0x77, 0xc3,
  0x96, 0x45, 0x0a, 0xc3, 0x29, 0x6d, 0x67, 0x92, 0xd6, 0xd2, 0x59, 0xec,
  0x65, 0x27, 0xd7, 0xdb, 0x6a, 0x32, 0x45, 0xd2, 0xd3, 0x89, 0x36, 0xf9,
  0x20, 0xa6, 0x06, 0x79, 0x19, 0xb0, 0xcc, 0x11, 0xc9, 0xd7, 0xd0, 0xce,
  0xfb, 0x56, 0xba, 0x1b, 0xd1, 0xc3, 0x86, 0xfd, 0x71, 0x18, 0x8e, 0x27,
  0x9d, 0x08, 0x88, 0x1f, 0xa3, 0xb0, 0x15, 0x06, 0xd5, 0x8a, 0xf5, 0x4a,
  0xe1, 0x47, 0x4d, 0xa9, 0x39, 0xa1, 0xed, 0x58, 0xe5, 0x17, 0xb0, 0xac,
  0xd0, 0xd5, 0x96, 0xf6, 0xfa, 0x3b, 0xde, 0xc1, 0x96, 0xb3, 0xde, 0x68,
  0x34, 0xea, 0x91, 0x1e, 0x70, 0xc8, 0xca, 0xc9, 0xa6, 0x28, 0x07, 0x2d,


  0x3e, 0x83, 0x41, 0x22, 0xfb, 0x7d, 0x7c, 0x7c, 0x2c, 0x7a, 0xcc, 0xf5,
  0x4d, 0x43, 0xa3, 0x30, 0x80, 0x53, 0xa2, 0x51, 0x85, 0xda, 0x1c, 0x96,
  0x37, 0xcb, 0x6a, 0x4c, 0xdd, 0x90, 0x91, 0x65, 0x28, 0xeb, 0x35, 0x35,
  0xb2, 0x0d, 0x54, 0x50, 0x6c, 0x4a, 0xdf, 0xb5, 0x99, 0x89, 0x30, 0xb6,
  0x77, 0x34, 0x0b, 0x6e, 0x80, 0x42, 0x2f, 0xca, 0xd8, 0xcd, 0x16, 0xab,

  0x3c, 0x55, 0x17, 0xba, 0x4b, 0x27, 0x58, 0x86, 0x32, 0xd9, 0x74, 0x14,
  0xfa, 0x6c, 0x9c, 0x4a, 0x06, 0x58, 0x2c, 0xdf, 0x6a, 0x8e, 0xfd, 0xc4,
  0x79, 0xc8, 0x56, 0xd7, 0x8f, 0xe4, 0x45, 0xeb, 0x91, 0x04, 0x37, 0x1f,
  0xad, 0x2a, 0xdc, 0xf6, 0xf5, 0x63, 0x42, 0x14, 0x3d, 0x96, 0x0b, 0x71,
  0x7c, 0x83, 0xf9, 0x5b, 0x33, 0x3c, 0x1c, 0x98, 0x72, 0xc9, 0x4c, 0x40,

  0xe4, 0xc7, 0x60, 0x70, 0xb6, 0x79, 0x7d, 0x36, 0xf0, 0x32, 0xde, 0x1f,
  0xd1, 0x65, 0xcc, 0x4d, 0xb4, 0x6b, 0x2e, 0x4f, 0xde, 0x22, 0x02, 0x87,
  0xce, 0x27, 0x75, 0x0a, 0xe7, 0xaf, 0x04, 0xf1, 0x4e, 0x96, 0x99, 0x16,
  0xc3, 0x18, 0xd9, 0x9d, 0x25, 0x19, 0x15, 0x91, 0xa3, 0x08, 0xa7, 0x1b,
  0x40, 0x09, 0xb1, 0x65, 0x74, 0x7e, 0x74, 0x8d, 0xe5, 0x2d, 0x95, 0xa4,
  0x78, 0xa0, 0x0b, 0xc8, 0xf7, 0x8c, 0xdf, 0x1b, 0x5c, 0x02, 0x8a, 0xda,
  0xc4, 0x23, 0xdb, 0x0c, 0x45, 0x95, 0x75, 0x3e, 0xbe, 0x52, 0x09, 0x6f,
  0xd5, 0xf6, 0xc3, 0x96, 0x8a, 0x74, 0x68, 0xd2, 0x7c, 0xf3, 0x34, 0xb6,

  0x83, 0xa7, 0xc1, 0x1b, 0x10, 0xbe, 0x0e, 0x57, 0xc2, 0xca, 0x75, 0xa3,

  0xa5, 0x8a, 0x5f, 0xa7, 0x3f, 0xcb, 0xa7, 0x29, 0x7a, 0x02, 0xe9, 0xbc,
  0xdc, 0xc0, 0x9b, 0xe7, 0x26, 0xe5, 0xdd, 0x29, 0xb9, 0x14, 0xa7, 0x0e,
  0x60, 0xcb, 0x57, 0x04, 0xe5, 0x84, 0xd9, 0x53, 0xd3, 0x87, 0x49, 0x4b,
  0x20, 0xfd, 0x0a, 0x43, 0xc2, 0xce, 0x4b, 0x47, 0x60, 0x22, 0x8c, 0x30,
  0xfb, 0x83, 0xca, 0x01, 0xcb, 0x7a, 0x8a, 0x6d, 0x5a, 0x83, 0xe5, 0x53,

  0x0f, 0x69, 0xe9, 0xc7, 0x2a, 0x48, 0x53, 0x90, 0x15, 0xae, 0xf4, 0xc3,
  0xbf, 0xa8, 0x09, 0x8f, 0x6f, 0xd0, 0x22, 0x9b, 0x7a, 0x42, 0xd7, 0xa0,
  0x50, 0x04, 0x90, 0xff, 0x48, 0x45, 0xa5, 0xf2, 0x7e, 0xe9, 0x6d, 0xec,


  0x42, 0xba, 0xaf, 0x42, 0xef, 0xee, 0x36, 0xdb, 0x99, 0x31, 0x2a, 0x61,
  0x1d, 0xac, 0xba, 0x06, 0x0d, 0xa4, 0x89, 0xbe, 0x8d, 0xe1, 0xbe, 0x39,
  0xb1, 0xed, 0x13, 0x1a, 0xf8, 0x41, 0xb5, 0xd6, 0x0a, 0x1c, 0x87, 0xc4,
  0x18, 0xd4, 0x3d, 0x76, 0x61, 0xbd, 0x6f, 0x31, 0x72, 0x58, 0x89, 0xbd,
  0xb6, 0x68, 0xec, 0x7c, 0x3f, 0x58, 0x0b, 0x4c, 0x4c, 0x96, 0x2a, 0x42,
  0xcf, 0x68, 0x80, 0xfe, 0xdf, 0xd7, 0x6c, 0x77, 0xa0, 0x7e, 0xc0, 0x0f,
  0xa1, 0xd2, 0xc1, 0x07, 0x10, 0xb6, 0xa1, 0xa7, 0xae, 0x9d, 0xb0, 0xfd,
  0xae, 0xdf, 0xde, 0x83, 0x97, 0xb7, 0x7a, 0x3e, 0xef, 0x4e, 0x8e, 0xde,
  0x18, 0x18, 0x81, 0xdf, 0x03, 0x59, 0xd8, 0x7a, 0x35, 0x87, 0x09, 0x77,
  0x81, 0x58, 0xaa, 0xa3, 0x84, 0x4e, 0x47, 0x09, 0x95, 0x68, 0x05, 0xd4,
  0xb5, 0x32, 0xe1, 0x1b, 0xd2, 0xda, 0x0c, 0xa1, 0xd5, 0x33, 0xe2, 0x66,
  0x1f, 0x88, 0xc7, 0x1a, 0x35, 0x65, 0xae, 0xad, 0x72, 0x08, 0x79, 0x4a,
  0x84, 0x3c, 0xcb, 0x87, 0xf9, 0x64, 0xb2, 0x42, 0xba, 0x33, 0x3c, 0x24,
  0xd5, 0x40, 0x31, 0xc1, 0x74, 0x70, 0x1b, 0xf1, 0xbd, 0x21, 0xce, 0x1e,
  0x8e, 0x14, 0xae, 0x5a, 0x47, 0x0a, 0x13, 0x48, 0x25, 0xf7, 0xee, 0x46,

  0xbd, 0x30, 0x5d, 0x6d, 0x06, 0x35, 0xf1, 0xa8, 0x30, 0x9f, 0xdd, 0x31,
  0x9a, 0x26, 0x64, 0x80, 0xfd, 0xcb, 0xe8, 0x1f, 0xff, 0xfc, 0xf1, 0xe7,
  0x40, 0x77, 0x03, 0x74, 0xf8, 0xdd, 0x70, 0x65, 0x21, 0x3c, 0x3d, 0x17,
  0xd4, 0x16, 0x83, 0x13, 0xcf, 0x89, 0x26, 0x1c, 0xcf, 0xa8, 0xca, 0x64,
  0x36, 0xe9, 0x3b, 0x39, 0x95, 0xbe, 0x58, 0x44, 0x13, 0x4a, 0x3f, 0x48,
  0xdd, 0xea, 0xb0, 0x14, 0x9c, 0xcb, 0x77, 0x11, 0xb9, 0x9b, 0x5a, 0x04,

  0xd9, 0x94, 0x69, 0x83, 0xec, 0xcb, 0x27, 0xe1, 0xe1, 0xc7, 0xd8, 0x36,
  0x3e, 0xcd, 0x60, 0xfa, 0x87, 0xab, 0x53, 0xe3, 0xea, 0x74, 0xb9, 0xf2,
  0x0d, 0x50, 0xea, 0x63, 0x2f, 0x79, 0x4c, 0x86, 0xc0, 0x25, 0x4a, 0x05,
  0x7e, 0xe8, 0xcd, 0xcb, 0xe8, 0x70, 0x0e, 0x34, 0x9e, 0xb6, 0x40, 0x76,
  0xbc, 0xc3, 0xd7, 0x22, 0x7d, 0xcd, 0xe0, 0x97, 0x4e, 0xf3, 0x02, 0x76,

  0x68, 0x2e, 0xd5, 0xb8, 0x52, 0x92, 0x5c, 0x77, 0x66, 0x44, 0x54, 0x60,
  0xe2, 0xb9, 0x03, 0xee, 0xf6, 0x44, 0xe3, 0x26, 0x30, 0x36, 0x07, 0x28,
  0x8c, 0x94, 0xf5, 0x25, 0x28, 0x8f, 0x30, 0x7b, 0x30, 0xb2, 0xd1, 0x5a,
  0x2f, 0xbb, 0x42, 0x52, 0x85, 0xe2, 0xc8, 0x05, 0x61, 0x04, 0x4c, 0x19,
  0x22, 0x5b, 0x58, 0xc0, 0x74, 0xdc, 0x15, 0x99, 0x2e, 0xa6, 0x2e, 0xfa,
  0x9b, 0xf4, 0x2e, 0xf6, 0xf7, 0x55, 0x17, 0xc0, 0x6e, 0xd0, 0xc8, 0x66,
  0xaf, 0x62, 0xc1, 0x46, 0xaa, 0xfd, 0x85, 0x5d, 0x4f, 0xac, 0x31, 0x95,
  0xbd, 0x4b, 0x39, 0x8f, 0xc7, 0xa6, 0x90, 0xde, 0x85, 0x0e, 0xa4, 0x32,
  0xc4, 0x18, 0xeb, 0x22, 0x93, 0x59, 0x5f, 0xba, 0x6a, 0x53, 0x5a, 0x95,
  0x1d, 0x93, 0x18, 0x6e, 0x13, 0xd7, 0xa5, 0xc4, 0x14, 0x01, 0xae, 0x86,
  0x15, 0x87, 0x3e, 0x95, 0x95, 0x8b, 0xe7, 0x21, 0x18, 0xeb, 0xbd, 0x16,
  0xbc, 0x9c, 0x29, 0x99, 0xfd, 0x62, 0x3f, 0x10, 0x58, 0x32, 0xf5, 0x0e,
  0x63, 0x18, 0x12, 0x7c, 0x9b, 0xd2, 0x2b, 0x90, 0x87, 0xf0, 0x81, 0x9f,
  0xc8, 0x81, 0x37, 0x86, 0xc3, 0x58, 0xcb, 0x8b, 0xfd, 0xfd, 0x7d, 0x8e,
  0xb5, 0x74, 0x4e, 0xe9, 0xc3, 0x57, 0x27, 0xc7, 0x17, 0xef, 0xdf, 0x9f,
  0x9c, 0xbf, 0x39, 0x79, 0xa3, 0x19, 0x1f, 0xce, 0x4a, 0x2c, 0x75, 0xf8,
  0x2b, 0xc2, 0x2c, 0x41, 0xd8, 0xe7, 0xed, 0xfd, 0xad, 0xde, 0xce, 0xfe,
  0x56, 0x04, 0xb4, 0x18, 0x9b, 0x3a, 0xb5, 0x78, 0x16, 0xa3, 0x7d, 0x7b,
  0xb3, 0x04, 0x55, 0x0d, 0xa1, 0x3d, 0x2b, 0xc4, 0xdc, 0x20, 0xd7, 0x2b,
  0x7a, 0x7b, 0x92, 0x0a, 0xed, 0xe8, 0x40, 0x66, 0x40, 0xbf, 0x63, 0x40,
  0xda, 0x6c, 0xc0, 0x52, 0x74, 0x1f, 0x22, 0xd0, 0x9d, 0x2d, 0xfc, 0x50,


  0x3f, 0x7a, 0x0b, 0xda, 0xc7, 0x24, 0x7f, 0x60, 0x5a, 0x3c, 0xbe, 0x01,
  0xa5, 0x34, 0xf1, 0x43, 0x95, 0xf5, 0xf7, 0xf1, 0xf5, 0x5d, 0x7e, 0xfd,
  0x77, 0x8c, 0xd1, 0xef, 0xbf, 0xaa, 0x1b, 0x96, 0x70, 0x91, 0x09, 0x15,
  0x5e, 0x4b, 0x12, 0x5b, 0xf0, 0xfd, 0x07, 0x6c, 0x8e, 0xbf, 0x3b, 0xba,
  0xc4, 0xa7, 0xc1, 0x2c, 0xbf, 0xf8, 0xe1, 0x2f, 0xb6, 0xcc, 0xf3, 0x6e,
  0x5b, 0xb3, 0x19, 0xa5, 0x92, 0x95, 0x1a, 0xf1, 0x65, 0x7e, 0xd0, 0xdb,
  0x2a, 0xb3, 0xc6, 0x20, 0x54, 0x21, 0x43, 0x2b, 0xc4, 0x0c, 0x54, 0xd8,
  0x3a, 0xee, 0x91, 0x25, 0x87, 0x56, 0x94, 0x72, 0xc5, 0x43, 0x75, 0xfd,
  0xc0, 0xca, 0x71, 0x1a, 0x0f, 0x29, 0xf7, 0x7d, 0x48, 0xb3, 0x31, 0x37,
  0xa6, 0xad, 0x39, 0x66, 0xab, 0x62, 0x99, 0x84, 0xbc, 0xa6, 0x2b, 0x31,
  0x76, 0x50, 0xa9, 0x2d, 0xd2, 0x79, 0x5c, 0xa4, 0xdc, 0x7e, 0x1e, 0x09,
  0xfc, 0x9e, 0x7b, 0x65, 0x72, 0xaa, 0x14, 0xc5, 0xbe, 0x2c, 0x98, 0x6c,
  0xee, 0xa5, 0x9d, 0x9a, 0x5e, 0x0e, 0x48, 0xc4, 0x0c, 0x6b, 0x24, 0x31,
  0x4a, 0xde, 0xac, 0x95, 0x30, 0x74, 0x75, 0xfb, 0xdf, 0x28, 0x14, 0x6d,
  0xa0, 0x73, 0xd1, 0xdb, 0xd3, 0xb3, 0x93, 0x8d, 0xe8, 0x6d, 0x52, 0x49,
  0x89, 0x93, 0x66, 0x18, 0xa3, 0xc8, 0xff, 0x03, 0x29, 0x58, 0x06, 0x94,

  0x50, 0x6a, 0x84, 0x83, 0xb9, 0x60, 0xe2, 0x83, 0x23, 0x65, 0x43, 0xeb,
  0xa5, 0xf8, 0x70, 0x68, 0x89, 0x18, 0x8f, 0xd3, 0xdc, 0x32, 0x8d, 0x6f,
  0xca, 0xc9, 0x07, 0xf2, 0x6e, 0x15, 0xe7, 0xa1, 0xef, 0x20, 0x9e, 0xe5,
  0x6e, 0x0a, 0x01, 0x4e, 0x5a, 0x72, 0x9e, 0x35, 0x5e, 0x9c, 0x96, 0x8b,
  0x19, 0x72, 0x83, 0x20, 0xca, 0xcb, 0x2c, 0xb1, 0x95, 0x7d, 0x44, 0xf9,

  0xdc, 0x29, 0x5e, 0x8c, 0x1e, 0x62, 0xa8, 0xb8, 0x5e, 0x67, 0xe3, 0xde,
  0xe9, 0xc6, 0x61, 0xda, 0x09, 0xff, 0xb9, 0xf9, 0x55, 0x10, 0x7c, 0x4c,
  0x1b, 0x59, 0x50, 0xcf, 0x5c, 0x79, 0x83, 0x28, 0x8a, 0x7b, 0xa8, 0x8b,
  0x90, 0x57, 0xb5, 0xb3, 0x46, 0x09, 0x01, 0xf5, 0x95, 0x7c, 0x77, 0x6a,
  0xee, 0xfe, 0x45, 0xfa, 0x34, 0xa9, 0xfe, 0x80, 0x25, 0xe0, 0x56, 0xba,

  0x70, 0x97, 0x5e, 0x93, 0x65, 0x1c, 0x85, 0x5a, 0xa2, 0x31, 0x57, 0x96,
  0x96, 0xbc, 0xac, 0x4d, 0x61, 0xb6, 0x7e, 0xac, 0xe9, 0xfa, 0x3a, 0x5f,

  0x7c, 0xec, 0x46, 0xc0, 0xab, 0xc9, 0x97, 0xc2, 0x55, 0x64, 0x65, 0xd0,
  0xe5, 0x2f, 0xe5, 0x6d, 0x12, 0xda, 0xa3, 0x96, 0xaa, 0xec, 0x94, 0x61,

  0x1d, 0x7a, 0x89, 0x0a, 0x1d, 0x57, 0x76, 0x51, 0x1f, 0x82, 0x82, 0xf1,
  0x32, 0x03, 0xda, 0x92, 0x7c, 0xdd, 0x65, 0x41, 0x4d, 0x9d, 0xdd, 0xfd,
  0x4c, 0xdd, 0x12, 0xf5, 0xd5, 0x45, 0xd8, 0x3b, 0xd2, 0x29, 0xb1, 0xef,
  0x07, 0x56, 0xbd, 0x8f, 0x6e, 0x53, 0x2a, 0x44, 0x5c, 0x92, 0x3a, 0x17,
  0x67, 0x5a, 0x6f, 0xc5, 0xd3, 0x34, 0x38, 0xef, 0x40, 0x6e, 0x7d, 0x2a,
  0x67, 0x08, 0x6b, 0x9f, 0x0c, 0x59, 0x86, 0x4e, 0x03, 0x44, 0x61, 0xd5,
  0xf9, 0xcc, 0xa8, 0xa2, 0xc1, 0xdc, 0x16, 0x55, 0xd4, 0xb0, 0x1e, 0x92,
  0x74, 0xc5, 0x00, 0x2e, 0x74, 0x42, 0x0d, 0x97, 0xc9, 0xe5, 0x77, 0x2f,
  0x10, 0x63, 0x6b, 0x45, 0xc2, 0xd0, 0xf4, 0x7d, 0xb0, 0x44, 0xe7, 0x58,
  0x12, 0xa0, 0xf8, 0xcd, 0xb8, 0x64, 0xd9, 0x1e, 0xe0, 0x6d, 0xd3, 0xf4,
  0x2e, 0x94, 0x65, 0x81, 0xf9, 0x11, 0x32, 0x31, 0xca, 0xd2, 0xb0, 0xed,
  0x62, 0x35, 0xed, 0xd8, 0x84, 0xb4, 0xd9, 0x2f, 0x8d, 0x38, 0x80, 0xb2,
  0xb3, 0xde, 0x0d, 0x9e, 0xa1, 0xc6, 0x8a, 0x80, 0x5e, 0x19, 0x37, 0xe8,
  0x7d, 0x07, 0x9a, 0xcf, 0x41, 0xc7, 0x20, 0xaa, 0x93, 0x5f, 0x95, 0xb8,
  0x63, 0x8d, 0x72, 0xa4, 0x65, 0x74, 0x2f, 0xd8, 0x77, 0x4c, 0x34, 0xf7,
  0x4a, 0x19, 0x97, 0x29, 0xb8, 0xf1, 0xd3, 0x9a, 0x4d, 0x01, 0x0c, 0x57,
  0x8c, 0xfa, 0x88, 0xf1, 0x38, 0xa5, 0x1f, 0x7a, 0xc7, 0xf4, 0xf1, 0xde,
  0x3b, 0x1a, 0xee, 0x8b, 0x8e, 0x71, 0xf8, 0x36, 0x7f, 0x75, 0xe0, 0x37,
  0x0a, 0xb6, 0x7e, 0x43, 0x36, 0x3c, 0x96, 0x5a, 0x95, 0x41, 0x89, 0x24,
  0x32, 0x41, 0xee, 0xc1, 0x05, 0x57, 0x64, 0x53, 0x0f, 0x9c, 0xa2, 0x29,
  0xa5, 0xdf, 0x65, 0xd3, 0xa4, 0x1c, 0x80, 0x14, 0x59, 0x10, 0x98, 0xce,


  0xb8, 0x97, 0x4f, 0x7a, 0x94, 0x21, 0x0d, 0xcc, 0xff, 0x16, 0x93, 0x91,
  0x9c, 0x5b, 0x47, 0x00, 0x21, 0x84, 0xbd, 0x3d, 0x1e, 0x87, 0x54, 0x73,
  0x2e, 0x64, 0x44, 0xad, 0x43, 0x08, 0x5f, 0x0b, 0x2d, 0xf8, 0x20, 0x0f,
  0xc4, 0x2b, 0x4f, 0xaf, 0x9b, 0x2e, 0x54, 0x88, 0xcc, 0x25, 0x05, 0x11,
  0x9e, 0x3f, 0x8d, 0xca, 0x23, 0xba, 0xac, 0xbd, 0xd3, 0xaa, 0xc9, 0x86,
  0x9b, 0xb3, 0x2b, 0x97, 0xfc, 0xcf, 0xcb, 0x05, 0xa9, 0xac, 0x88, 0xd8,
  0xe9, 0x79, 0x5f, 0xb4, 0x48, 0x84, 0xb0, 0x38, 0x41, 0xf8, 0xef, 0xf7,
  0xb7, 0xba, 0x5e, 0xa0, 0xbe, 0x22, 0x63, 0x3f, 0xb3, 0x59, 0x42, 0xf0,
  0x30, 0xf1, 0xc8, 0x5e, 0xa8, 0xba, 0xb6, 0xac, 0x1e, 0x91, 0x5f, 0x9b,
  0x62, 0x5a, 0x4a, 0x2d, 0xb6, 0x75, 0x0f, 0x36, 0xa7, 0x87, 0xb6, 0x50,
  0xd8, 0x26, 0x57, 0xd1, 0x86, 0x20, 0x4e, 0x25, 0x63, 0xeb, 0xab, 0x5e,
  0xb3, 0x4d, 0xa6, 0xe9, 0x76, 0xe6, 0x56, 0x6f, 0x38, 0x7d, 0xcb, 0x5a,
  0x3d, 0x4d, 0x84, 0x26, 0x7a, 0xa4, 0xad, 0x6f, 0x7a, 0xb0, 0xa9, 0xd2,
  0xd1, 0xb5, 0x97, 0xe0, 0x0f, 0x19, 0xb0, 0x43, 0x81, 0x43, 0xcb, 0xf6,
  0x3d, 0x63, 0x90, 0xdd, 0x97, 0xb8, 0x63, 0xa6, 0xb5, 0x80, 0xf6, 0xd0,
  0xb1, 0xf2, 0x81, 0xc8, 0xd6, 0xb9, 0x4b, 0xcd, 0x3d, 0x43, 0xae, 0x82,
  0x9c, 0x20, 0xd3, 0x9c, 0x6f, 0x6a, 0xc8, 0xfe, 0xf0, 0xd8, 0x9a, 0x5a,

  0xdc, 0x92, 0xf3, 0x4b, 0xd7, 0xe6, 0x2d, 0x2a, 0xf6, 0xbd, 0x73, 0x38,
  0x86, 0x83, 0xe8, 0x3f, 0xf2, 0x84, 0x6b, 0x56, 0x9f, 0x28, 0x59, 0xfd,
  0xfe, 0xe8, 0xea, 0xfc, 0xf4, 0xfc, 0x9b, 0x03, 0xc3, 0xe3, 0x90, 0xdf,
  0x35, 0x7b, 0x5a, 0x18, 0xde, 0x4d, 0xbf, 0x65, 0xe4, 0x56, 0xf4, 0xfe,

  0xb4, 0x61, 0x6c, 0x63, 0x2c, 0x93, 0xd8, 0x33, 0x3b, 0x2f, 0x8b, 0x84,
  0xe3, 0x22, 0x6c, 0x8b, 0x6a, 0xe5, 0x84, 0x94, 0x6b, 0x92, 0xa8, 0xa4,
  0xc6, 0x6d, 0x01, 0xc0, 0x86, 0xde, 0x19, 0x9e, 0xc9, 0x2c, 0xaf, 0xf5,
  0x88, 0x42, 0xa2, 0x9c, 0xd1, 0xf1, 0xe7, 0x2e, 0x05, 0xb0, 0xc5, 0xac,
  0x1d, 0xd5, 0xd9, 0xe9, 0x13, 0x08, 0xde, 0x32, 0x46, 0xb6, 0x7a, 0x5e,
  0x4d, 0x7f, 0x1c, 0x69, 0x72, 0x51, 0xd2, 0x91, 0x95, 0x29, 0x39, 0x1b,
  0xcc, 0x96, 0x68, 0x8e, 0x57, 0xc0, 0x0f, 0x22, 0xf0, 0xd2, 0xf1, 0x92,
  0xef, 0x0b, 0xa3, 0x93, 0xc9, 0x4f, 0x6d, 0x5d, 0x86, 0xd9, 0x81, 0x67,
  0xa7, 0x39, 0xdb, 0x3c, 0x67, 0xd6, 0xe7, 0xd9, 0x40, 0x74, 0x58, 0x16,
  0xfc, 0x89, 0xa2, 0x24, 0x88, 0x43, 0x32, 0x4b, 0x6c, 0x55, 0x92, 0xd1,
  0x75, 0x6e, 0x58, 0xd7, 0x99, 0x2d, 0x3c, 0xb0, 0x3d, 0x4c, 0x33, 0x8f,
  0xf0, 0x37, 0xea, 0xd4, 0xc1, 0xe0, 0x15, 0x49, 0x60, 0x35, 0x4b, 0x6a,

  0xe0, 0x76, 0xa6, 0x35, 0x24, 0x33, 0x75, 0x5f, 0x9e, 0x22, 0xde, 0x53,
  0xc2, 0x78, 0x63, 0x6e, 0x05, 0x0c, 0x7c, 0x1d, 0xf6, 0x78, 0xb1, 0x1c,
  0xce, 0xc7, 0xfb, 0xd1, 0x21, 0xfc, 0xc7, 0x53, 0xb2, 0x28, 0x67, 0x74,
  0x70, 0x0c, 0x8a, 0x16, 0x26, 0xb8, 0xa0, 0xbc, 0x60, 0xc8, 0x1b, 0xa7,
  0x8b, 0xc4, 0xee, 0x0e, 0xcc, 0xf4, 0x21, 0x56, 0x68, 0x4b, 0xd0, 0x08,
  0xa7, 0x69, 0xc5, 0x79, 0x7a, 0x2d, 0xb8, 0x41, 0x4e, 0x6a, 0x03, 0x9d,
  0xf9, 0xf6, 0xce, 0xe7, 0x11, 0x16, 0x1f, 0xbc, 0x7f, 0xb3, 0x1f, 0x8d,
  0x6e, 0x92, 0xd1, 0x6d, 0xb9, 0x9c, 0x2b, 0x3b, 0xc6, 0x3d, 0x05, 0xf3,

  0x00, 0xe7, 0xe9, 0x21, 0x3e, 0xc0, 0xc4, 0x67, 0xe9, 0x08, 0x4b, 0xff,
  0xba, 0xb5, 0xe8, 0xd4, 0x44, 0xa3, 0x53, 0x8e, 0x1d, 0x6a, 0xc4, 0x06,
  0xa5, 0x0b, 0x70, 0x4e, 0x4d, 0x20, 0x78, 0x01, 0x7b, 0x00, 0x1f, 0x2f,
  0xb9, 0x9b, 0xf5, 0x4a, 0x97, 0xed, 0xcb, 0xba, 0xd7, 0x1b, 0x2f, 0xf6,
  0x56, 0xff, 0x55, 0x4b, 0x7f, 0x8e, 0x5a, 0x6b, 0x0e, 0xac, 0x55, 0x32,
  0xd5, 0x76, 0x64, 0x0f, 0xa0, 0x96, 0x8f, 0x93, 0x44, 0x40, 0x28, 0x0d,
  0xe3, 0x79, 0x1f, 0xc7, 0x27, 0x37, 0xf1, 0x09, 0xe9, 0x2d, 0x47, 0x59,
  0x6c, 0x09, 0x61, 0x52, 0x30, 0x69, 0x51, 0x9a, 0x90, 0x89, 0x02, 0x1a,
  0x84, 0x33, 0x0a, 0xc1, 0xfa, 0x4a, 0x9b, 0xa9, 0xff, 0x56, 0x97, 0x8d,
  0x65, 0x31, 0x52, 0x42, 0xeb, 0xa0, 0x39, 0x68, 0x2d, 0x21, 0xe1, 0xb5,
  0xa1, 0x4d, 0xe1, 0x11, 0x99, 0xf9, 0x2e, 0xc7, 0xa5, 0xed, 0x71, 0x94,

  0x8c, 0x46, 0x48, 0xce, 0x73, 0xec, 0x12, 0xcb, 0x16, 0x75, 0x7e, 0x9f,
  0x4d, 0x0b, 0xf4, 0x8f, 0x50, 0x51, 0x58, 0x1c, 0x8a, 0x65, 0x84, 0x10,
  0x4c, 0xed, 0xd8, 0x60, 0x71, 0xbd, 0x40, 0x4e, 0x6f, 0x76, 0x05, 0xf3,
  0xed, 0x39, 0x88, 0xcd, 0x15, 0xcb, 0x6c, 0xb3, 0x3b, 0x47, 0xb4, 0xd5,
  0x95, 0x63, 0xda, 0xee, 0x6f, 0x3d, 0xe7, 0x98, 0x90, 0x88, 0x6a, 0xa7,
  0x03, 0xef, 0xb9, 0x5a, 0xb2, 0x26, 0x91, 0x03, 0xb1, 0xb7, 0x64, 0xdf,
  0xc1, 0x42, 0xc5, 0x7f, 0x95, 0x8c, 0x6b, 0x43, 0xad, 0xe4, 0x39, 0x6e,
  0xf3, 0x36, 0x9e, 0xee, 0xb6, 0x84, 0x61, 0xf0, 0x5f, 0x3b, 0x4d, 0xa2,
  0x83, 0x5f, 0xff, 0xca, 0xd5, 0x6c, 0xff, 0x82, 0x52, 0x8d, 0xad, 0xae,
  0xfd, 0xde, 0x96, 0x69, 0x89, 0xc0, 0x13, 0xb2, 0xf7, 0xa2, 0x31, 0x9c,
  0x0f, 0x79, 0x4f, 0x2f, 0x60, 0xb9, 0x4b, 0x5e, 0xf4, 0x50, 0x65, 0x87,
  0xc3, 0xf2, 0x54, 0xa8, 0xe0, 0xf4, 0xe1, 0x78, 0x4b, 0x54, 0x6c, 0x51,
  0xa7, 0x25, 0xe2, 0xa4, 0x98, 0x11, 0xa3, 0x9a, 0x19, 0x93, 0x3e, 0x98,
  0xb6, 0x4f, 0x04, 0xb2, 0xe3, 0xa8, 0xe8, 0xf4, 0x03, 0xdc, 0xd4, 0xe8,
  0xc3, 0x82, 0x68, 0x10, 0x63, 0xdc, 0x95, 0x05, 0xfe, 0xa7, 0xd9, 0x45,
  0x6d, 0xb3, 0xb3, 0xd8, 0x5f, 0x1a, 0x93, 0xa7, 0x62, 0xcd, 0x52, 0xbf,
  0x53, 0x62, 0x15, 0x2c, 0xaa, 0xfc, 0xd2, 0x22, 0x8e, 0x01, 0xf1, 0xed,
  0x24, 0x43, 0xb0, 0xbe, 0x7a, 0xb1, 0x40, 0xd5, 0x94, 0x51, 0x6a, 0xd9,
  0xf4, 0x08, 0x8f, 0xce, 0xea, 0xbe, 0xf6, 0xec, 0xb3, 0xf0, 0xf4, 0x01,

  0xff, 0x4a, 0x6a, 0xbb, 0x84, 0x37, 0x80, 0xfd, 0xbc, 0x00, 0x50, 0xf0,
  0x38, 0x9e, 0xdd, 0x02, 0xc1, 0xc3, 0xef, 0x6a, 0x34, 0xb1, 0xe0, 0xb5,
  0xf4, 0x9f, 0x47, 0xdc, 0x5b, 0xdd, 0xe0, 0xec, 0x90, 0xda, 0x5c, 0xe2,
  0xaf, 0x81, 0xe1, 0xbd, 0x0a, 0x10, 0xd7, 0xaf, 0xba, 0x0b, 0x3b, 0xab,
  0xc2, 0xa0, 0xfe, 0x1d, 0xdc, 0xed, 0xeb, 0xd7, 0xda, 0xf6, 0xca, 0x63,
  0x67, 0xad, 0xed, 0x23, 0x9e, 0xb7, 0x5b, 0x2d, 0x7b, 0x63, 0xf6, 0xae,
  0xb1, 0x5b, 0x6d, 0x47, 0xab, 0x57, 0xd5, 0xe3, 0x57, 0x2d, 0x57, 0x75,

  0x37, 0xbc, 0x9b, 0x46, 0x43, 0x6d, 0xf8, 0x3c, 0xd1, 0x65, 0x56, 0xa4,
  0x64, 0x12, 0xc7, 0xb3, 0x7e, 0xf4, 0xc6, 0xe6, 0xb4, 0x10, 0xf0, 0x9e,
  0x67, 0xac, 0x8e, 0x97, 0x2d, 0x99, 0x1f, 0xab, 0x4f, 0x6b, 0x57, 0x92,
  0x7a, 0x6c, 0xe2, 0x02, 0xc9, 0x74, 0x29, 0xca, 0xca, 0x3d, 0x40, 0x4c,
  0xf1, 0xdc, 0x68, 0xf8, 0x52, 0xc2, 0x74, 0x98, 0x9a, 0x25, 0x01, 0x18,
  0xda, 0xfa, 0x5d, 0x37, 0x66, 0x6e, 0xd4, 0x6b, 0x2c, 0x21, 0x08, 0x79,
  0x8a, 0xe8, 0x8b, 0x9a, 0xde, 0x4e, 0x12, 0x51, 0x15, 0x4a, 0xf8, 0xc8,
  0x5d, 0x1a, 0x47, 0x47, 0xb3, 0xaa, 0x37, 0xf8, 0x6e, 0xc4, 0x11, 0xb6,
  0x5a, 0x78, 0xca, 0x6b, 0xf2, 0x4a, 0x5e, 0x15, 0xea, 0xcf, 0x55, 0x4a,
  0xd2, 0x6a, 0x5a, 0x8c, 0x96, 0x73, 0xc2, 0x40, 0x25, 0xb2, 0x32, 0x7d,
  0x22, 0xf0, 0x20, 0x2d, 0xa5, 0x71, 0xba, 0xbd, 0x0f, 0x7e, 0x18, 0xdf,
  0x96, 0xba, 0x24, 0x29, 0xd2, 0xe1, 0x3a, 0x0c, 0x33, 0xe7, 0x7a, 0x7b,
  0xb5, 0x80, 0x08, 0x6a, 0x58, 0x76, 0x0c, 0xd3, 0x8b, 0x28, 0x30, 0xff,
  0xf9, 0xe1, 0xf4, 0xb8, 0xe6, 0xdd, 0xe7, 0x38, 0x4a, 0xb4, 0x32, 0x5a,
  0xc1, 0xb0, 0xb2, 0xf2, 0xe4, 0x04, 0x75, 0x58, 0xcd, 0xc6, 0xd5, 0xc4,
  0xb9, 0xda, 0xf1, 0xe6, 0x59, 0x40, 0xa4, 0x82, 0xbe, 0xf0, 0xcb, 0xee,
  0xe8, 0x8e, 0xde, 0xd1, 0xdd, 0xdf, 0xfa, 0x8e, 0xee, 0xfe, 0x36, 0x77,
  0x54, 0x39, 0x88, 0xf3, 0x77, 0xf7, 0xba, 0x7a, 0x66, 0x29, 0x5d, 0x5f,
  0xd7, 0xe1, 0x5c, 0xcf, 0x19, 0xe8, 0x31, 0x78, 0x44, 0x4f, 0xfc, 0x16,
  0x3d, 0x2e, 0x90, 0x0d, 0xd5, 0x86, 0x45, 0xe2, 0x38, 0x55, 0xf0, 0xc7,
  0x6e, 0x74, 0xca, 0xc0, 0xe6, 0x94, 0x9d, 0x24, 0xaf, 0x9f, 0x71, 0x7d,
  0xad, 0xf8, 0xbd, 0xd5, 0xe7, 0x1f, 0xa8, 0xc0, 0x4f, 0x47, 0x08, 0xaf,
  0x66, 0x3d, 0xee, 0x68, 0x31, 0xab, 0xce, 0x58, 0x2c, 0x29, 0xa4, 0x10,
  0x1d, 0x2d, 0xb0, 0x44, 0x16, 0x34, 0x8e, 0x07, 0xdb, 0x1f, 0x19, 0x49,
  0xcc, 0xcf, 0x45, 0xc2, 0x4d, 0x46, 0x0f, 0xae, 0x64, 0xde, 0x37, 0xa7,
  0x43, 0xa3, 0x33, 0xfc, 0xe1, 0x0c, 0x89, 0xbf, 0x60, 0xc3, 0x71, 0x07,
  0x08, 0x7c, 0xea, 0xb5, 0x55, 0x18, 0x3e, 0x56, 0x81, 0x32, 0x30, 0x5c,
  0x35, 0xee, 0xc2, 0x7a, 0x29, 0x59, 0xa6, 0x7b, 0xb0, 0x8f, 0x1b, 0x5d,
  0x6c, 0x40, 0xbf, 0xa0, 0x1d, 0xc0, 0x3a, 0x1d, 0x63, 0x5c, 0x61, 0x99,
  0x5a, 0x3a, 0x45, 0x8f, 0x55, 0xce, 0xd7, 0xd8, 0xb3, 0x68, 0xd0, 0xbb,
  0x2d, 0x69, 0x8e, 0x9a, 0x43, 0x28, 0x70, 0xb3, 0xf5, 0x12, 0xd5, 0xb4,
  0x4b, 0x9d, 0xe7, 0xc8, 0x37, 0xdd, 0x0c, 0x1e, 0x89, 0xc7, 0x9a, 0xed,
  0x5f, 0xd5, 0x69, 0x14, 0xd6, 0x5f, 0x2c, 0x5e, 0x61, 0x5c, 0xd2, 0xa2,
  0x83, 0x02, 0x7b, 0xf4, 0x64, 0xa0, 0xd7, 0x4f, 0xfd, 0xc5, 0x11, 0x79,
  0x36, 0xf9, 0x0b, 0xe2, 0x80, 0x62, 0x33, 0xdf, 0x40, 0x44, 0xa3, 0x97,
  0x08, 0xfd, 0xf9, 0xdc, 0x69, 0xa5, 0xeb, 0xc3, 0xea, 0x19, 0xdf, 0xb3,
  0x05, 0x8a, 0xae, 0xdd, 0x58, 0x05, 0x77, 0xee, 0xf7, 0xfb, 0x01, 0x38,
  0x8b, 0xbb, 0x34, 0xb9, 0xaf, 0xb9, 0xe2, 0x65, 0x66, 0x5d, 0xd3, 0x20,
  0x85, 0x3d, 0x40, 0x77, 0xb8, 0x43, 0x30, 0xe4, 0x10, 0x91, 0x34, 0x5b,
  0xca, 0x49, 0xec, 0x95, 0x77, 0x9f, 0x76, 0xb6, 0xf9, 0x96, 0xb7, 0xb9,
  0x0c, 0xd5, 0x83, 0x32, 0x30, 0xb2, 0xed, 0xe7, 0xd0, 0x45, 0x8f, 0x48,

  0xf1, 0x18, 0x51, 0xe3, 0x0e, 0xcb, 0xd3, 0xe8, 0xfa, 0x73, 0xfd, 0x41,
  0x5a, 0x32, 0x2e, 0x31, 0xe3, 0x0a, 0xf9, 0xd1, 0x62, 0xfe, 0x4c, 0x9d,
  0x1f, 0x08, 0x3f, 0x57, 0xe9, 0x05, 0x62, 0x6f, 0x84, 0x8e, 0x28, 0x12,
  0x4e, 0xda, 0x8c, 0x80, 0x5c, 0x31, 0x81, 0xd4, 0x23, 0x39, 0x11, 0xa7,
  0x73, 0x89, 0x93, 0x29, 0x63, 0xdb, 0xc9, 0x44, 0xba, 0xc0, 0x70, 0xbc,
  0x57, 0xcf, 0xd5, 0xe5, 0xd3, 0xee, 0x4a, 0xc0, 0x3a, 0x92, 0xd6, 0x6c,
  0xe2, 0x8b, 0xb5, 0x78, 0xcb, 0x4d, 0x1b, 0xd1, 0xd6, 0xa7, 0x5a, 0x4c,
  0x2d, 0xeb, 0xd5, 0x66, 0xf0, 0x3e, 0x5a, 0x99, 0x0c, 0x5e, 0xba, 0x40,
  0xd9, 0x1e, 0xd4, 0x80, 0x6d, 0x1e, 0x84, 0x03, 0x73, 0x83, 0x9f, 0xe0,
  0x11, 0xb3, 0x5e, 0xc1, 0xa8, 0x17, 0xd8, 0x82, 0x6a, 0x89, 0x89, 0x27,
  0x74, 0xf7, 0xa5, 0x7a, 0x5d, 0x0a, 0xd6, 0x9b, 0x60, 0x26, 0x06, 0x12,
  0x0e, 0x77, 0xbf, 0x7f, 0x13, 0x3f, 0x3c, 0xf4, 0xcb, 0x64, 0x13, 0xa8,
  0xb6, 0xdc, 0x2c, 0xcb, 0x19, 0x7e, 0xb4, 0x24, 0xf4, 0xb5, 0x95, 0xdd,
  0x2d, 0x1f, 0x1e, 0x0d, 0x01, 0x09, 0x73, 0x1e, 0xc5, 0xf8, 0x6a, 0x8d,
  0xd9, 0xda, 0xf6, 0x96, 0xdc, 0x20, 0xa6, 0x99, 0x32, 0xcc, 0xc0, 0xd3,
  0x04, 0xa1, 0xee, 0x56, 0xdb, 0x32, 0x6b, 0xb0, 0xc9, 0x59, 0x66, 0x1c,
  0x8b, 0xa7, 0x8f, 0x50, 0xd3, 0x45, 0x5b, 0x69, 0x87, 0xdc, 0x55, 0x27,

  0x34, 0x0a, 0x9b, 0x62, 0x0a, 0x20, 0x40, 0x3e, 0x58, 0x58, 0x1d, 0xee,
  0xf8, 0x84, 0x96, 0x74, 0x7e, 0x1b, 0x80, 0x7c, 0x6a, 0x73, 0x5b, 0x3a,
  0x4b, 0xc3, 0x52, 0x91, 0x03, 0x0b, 0x30, 0x78, 0x7f, 0x7f, 0xdf, 0x5f,
  0xe5, 0xb7, 0xfc, 0x97, 0x63, 0xe0, 0xf5, 0xe1, 0x2e, 0x80, 0x6a, 0xcf,
  0xd2, 0x6c, 0xf9, 0x10, 0x39, 0x18, 0x2f, 0xa6, 0x19, 0x90, 0x06, 0xe6,
  0xa2, 0xef, 0xae, 0xde, 0x9a, 0x46, 0xd8, 0x8a, 0xae, 0x81, 0x9e, 0xdf,
  0xd2, 0xd7, 0xda, 0x92, 0x94, 0x71, 0x77, 0x10, 0x34, 0xfa, 0xf8, 0xe8,
  0xf2, 0xe3, 0xf9, 0xc9, 0xf5, 0xc7, 0xab, 0xa3, 0xef, 0x71, 0x0b, 0xd9,
  0x2b, 0x03, 0xf2, 0x0a, 0xe3, 0x01, 0x45, 0x9e, 0x63, 0x53, 0xbb, 0xf7,
  0x54, 0x36, 0x98, 0x66, 0x04, 0xaf, 0x12, 0x6c, 0xb3, 0x6e, 0x30, 0xa3,
  0x64, 0x9e, 0x30, 0x97, 0x83, 0xa8, 0xb6, 0x5f, 0xb7, 0x49, 0x91, 0x25,
  0xb3, 0x7e, 0x5e, 0x4c, 0x91, 0x0a, 0x37, 0xdf, 0x08, 0xff, 0x0c, 0x0e,
  0xb7, 0x29, 0x59, 0x0d, 0x08, 0x41, 0x76, 0x57, 0x4c, 0x10, 0xb1, 0xe4,
  0xb9, 0x3d, 0x0a, 0x1d, 0xd2, 0xdc, 0x23, 0x06, 0xb8, 0xb8, 0xdb, 0x5b,
  0xa1, 0xde, 0xd5, 0x3b, 0xc5, 0x4a, 0x8f, 0x37, 0xa2, 0x20, 0xf2, 0xfd,
  0xb8, 0xb9, 0x2a, 0x5c, 0x9d, 0x39, 0x7b, 0xec, 0x06, 0x00, 0x10, 0x48,
  0x9d, 0xcb, 0x0d, 0x94, 0x04, 0x15, 0xb8, 0x61, 0x92, 0xcd, 0xca, 0x16,
  0xf7, 0x46, 0x2b, 0x6a, 0xfa, 0x10, 0xda, 0x7c, 0x0f, 0xbd, 0x17, 0xbe,
  0x65, 0x88, 0x4d, 0x17, 0x9d, 0x35, 0xbf, 0x90, 0x35, 0xbf, 0xf8, 0x97,
  0xd6, 0xfc, 0xe2, 0x5f, 0x58, 0xf3, 0xde, 0x6f, 0xbc, 0xe6, 0xbd, 0xe0,
  0x9a, 0x9d, 0xaf, 0xf4, 0xfe, 0x8a, 0x6b, 0xfe, 0xeb, 0x32, 0xbb, 0xed,
  0xc1, 0x7c, 0x51, 0x0a, 0x4b, 0x8f, 0xb5, 0xb2, 0xc5, 0x64, 0x73, 0x1b,
  0xed, 0x90, 0x6f, 0xdf, 0x02, 0x0c, 0x3b, 0x3d, 0xe3, 0x62, 0x31, 0x15,
  0x38, 0xc4, 0x5f, 0xf9, 0x4d, 0x2d, 0x3c, 0x03, 0x21, 0xc5, 0x7a, 0xdf,
  0x72, 0x84, 0x7e, 0x0a, 0xd4, 0xec, 0x3b, 0x32, 0x1b, 0x1d, 0xb6, 0xa3,
  0x7d, 0x57, 0xe8, 0xa6, 0xc7, 0x3e, 0xce, 0xd1, 0x88, 0xdc, 0x64, 0x74,
  0x27, 0x4d, 0x0c, 0xdc, 0xf6, 0x65, 0x27, 0xa3, 0x83, 0x31, 0xa0, 0x74,
  0x60, 0x8e, 0x0b, 0x62, 0xcc, 0xc7, 0xe7, 0x19, 0xd7, 0x8f, 0x0b, 0x1c,
  0x10, 0x64, 0x73, 0x01, 0x32, 0x98, 0x13, 0x51, 0xa8, 0x99, 0x78, 0x64,
  0x26, 0x19, 0x35, 0x26, 0x28, 0xd1, 0x8e, 0x9b, 0xe4, 0x71, 0xcd, 0x53,
  0x18, 0x46, 0xb3, 0x1c, 0xf9, 0xcd, 0x78, 0xb5, 0xf1, 0x31, 0xb4, 0x0d,
  0xee, 0x58, 0x5e, 0x34, 0x3a, 0xde, 0xb9, 0x72, 0xe3, 0x36, 0x49, 0x16,
  0xf1, 0x8c, 0xa0, 0x35, 0x30, 0xf7, 0xa1, 0xad, 0x51, 0x56, 0x2d, 0x39,
  0x52, 0x0b, 0x07, 0xe8, 0x8d, 0x5a, 0xe6, 0x19, 0xf1, 0x39, 0x3e, 0x48,
  0xac, 0x94, 0x89, 0xd2, 0x31, 0xd5, 0xba, 0x86, 0xfb, 0xa6, 0xd8, 0xa6,
  0x0c, 0x66, 0x12, 0xd8, 0x7a, 0x23, 0x1f, 0x0a, 0x06, 0x8c, 0xf9, 0x84,
  0xe2, 0xc8, 0x61, 0x6a, 0xce, 0x5d, 0x8a, 0x29, 0x79, 0x4d, 0xec, 0x61,
  0xf3, 0x3e, 0xbf, 0x4e, 0xa8, 0x52, 0xb5, 0xce, 0x09, 0x7c, 0x80, 0xf8,
  0x44, 0x6e, 0xe4, 0x1f, 0xaa, 0x1b, 0xd4, 0x47, 0xd4, 0x23, 0x29, 0x05,
  0x50, 0x66, 0xfd, 0xf7, 0xfa, 0xf8, 0xf2, 0xe3, 0xb7, 0x27, 0x27, 0x97,
  0xa7, 0x6f, 0xce, 0x4e, 0xe4, 0xc2, 0x98, 0x1f, 0x9d, 0x5f, 0x7f, 0x77,

  0xa6, 0x7d, 0xe2, 0x94, 0x16, 0x3d, 0x82, 0x17, 0xd8, 0x7f, 0x66, 0xca,
  0x5d, 0x6a, 0x87, 0x05, 0x86, 0xf4, 0xd1, 0xe9, 0x0f, 0xa0, 0xb5, 0x5e,
  0xf6, 0x3e, 0xfc, 0xe0, 0xf5, 0x22, 0x71, 0x6a, 0x4c, 0xfc, 0x66, 0x02,
  0xb6, 0xe4, 0x84, 0x7a, 0xba, 0xdb, 0xb5, 0xb7, 0xa5, 0xdc, 0xfd, 0xc6,
  0x62, 0x10, 0x1b, 0x9c, 0x67, 0x46, 0x61, 0xe0, 0x17, 0xb5, 0xdf, 0x8f,
  0x93, 0xd6, 0xf6, 0x62, 0x4b, 0xdb, 0xa8, 0xad, 0x0c, 0x5a, 0x7c, 0x5e,
  0xb7, 0x19, 0x6f, 0x93, 0x47, 0xc2, 0x70, 0x8c, 0x0e, 0xf1, 0xbf, 0xe1,
  0x36, 0x77, 0x97, 0x45, 0x7a, 0x87, 0xfa, 0x1f, 0x3c, 0xcb, 0x21, 0x5d,
  0x7c, 0xb4, 0x6f, 0x9a, 0xfe, 0x49, 0x58, 0x19, 0x07, 0xa1, 0xcc, 0x13,

  0x1a, 0x34, 0x0a, 0x79, 0x7b, 0x08, 0x19, 0x07, 0x7f, 0xc3, 0xe3, 0xd1,
  0x80, 0xb0, 0x3d, 0xfd, 0xe8, 0xcd, 0xc9, 0x55, 0x37, 0xba, 0x3c, 0x79,
  0xcf, 0x85, 0x2a, 0x27, 0xe7, 0xdf, 0x70, 0x1f, 0x44, 0x6d, 0x6f, 0x47,
  0x99, 0x10, 0x7e, 0xb2, 0xa6, 0xb3, 0x27, 0xf0, 0x2e, 0x65, 0xa6, 0x96,
  0x25, 0x48, 0xd7, 0x4f, 0x08, 0xa0, 0xc3, 0x6b, 0x3b, 0x84, 0xff, 0x84,
  0xb6, 0x0a, 0xec, 0x88, 0x77, 0x81, 0xed, 0x12, 0xc5, 0xcc, 0xe4, 0xce,
  0x88, 0x51, 0x80, 0xbb, 0xc1, 0x3b, 0x06, 0x1b, 0xe2, 0x67, 0x71, 0xe8,
  0x06, 0x91, 0xd9, 0x47, 0x10, 0x42, 0xdc, 0x3c, 0x57, 0x62, 0xf0, 0x68,
  0xc5, 0xc2, 0xe7, 0xba, 0x48, 0x97, 0x04, 0x48, 0x6e, 0x37, 0x23, 0x54,
  0x1d, 0x5d, 0xa4, 0xdc, 0x88, 0xb8, 0x81, 0x4c, 0x07, 0xdb, 0x9d, 0x8e,
  0x19, 0x81, 0x01, 0x03, 0xc8, 0x79, 0x81, 0x09, 0x1c, 0x08, 0x7d, 0xf0,
  0xbf, 0x36, 0xfb, 0x65, 0x79, 0xb3, 0x99, 0x8e, 0x3f, 0x16, 0x65, 0xbc,

  0xd6, 0x94, 0x45, 0xce, 0xaf, 0xc7, 0xf8, 0xeb, 0x68, 0xad, 0x6f, 0x1e,
  0x95, 0xbf, 0xe3, 0xcf, 0x83, 0x58, 0x00, 0x2a, 0x82, 0xd8, 0xb5, 0xa2,
  0xf9, 0x9c, 0xda, 0x3e, 0x71, 0x96, 0x0e, 0x0b, 0x50, 0xe0, 0x6c, 0xf7,
  0x0f, 0xe9, 0x86, 0xb8, 0xb8, 0x1d, 0x95, 0xdb, 0xdb, 0x3e, 0x1a, 0xbd,
  0x29, 0x71, 0xec, 0x6a, 0x5e, 0xee, 0xe5, 0xb7, 0xc7, 0x83, 0x3f, 0x6e,
  0x6f, 0x53, 0x1a, 0xf4, 0x3a, 0xa6, 0xab, 0xbe, 0xdc, 0xdf, 0xde, 0xd9,
  0x08, 0xa9, 0x8f, 0x5e, 0x5e, 0x0f, 0x76, 0xb0, 0x8c, 0x2d, 0x7d, 0xe2,
  0xee, 0x53, 0x98, 0x5b, 0x8a, 0x1e, 0xcc, 0xd0, 0xe3, 0x04, 0x93, 0x04,
  0xa9, 0xb2, 0x93, 0xc3, 0x99, 0x94, 0x3b, 0xe9, 0xa5, 0x5e, 0x18, 0x1c,
  0xa4, 0x0e, 0xcf, 0xfe, 0xa0, 0x63, 0xa8, 0xca, 0xcd, 0x21, 0xa7, 0xfc,
  0x13, 0x67, 0xd6, 0x7d, 0xde, 0xa7, 0x66, 0x78, 0xcd, 0x5d, 0x17, 0x25,
  0x3a, 0x5a, 0xa0, 0x29, 0x16, 0x5f, 0xb6, 0x75, 0x64, 0x23, 0x41, 0x00,
  0xf3, 0x03, 0x3c, 0x5f, 0xbd, 0xcc, 0xa9, 0xc3, 0xf4, 0x83, 0x04, 0x1f,
  0xdb, 0x41, 0xcd, 0xee, 0x3b, 0x0c, 0xc2, 0x1d, 0xd4, 0x77, 0xf6, 0xf1,
  0x37, 0xa2, 0x0e, 0xdc, 0xdd, 0xf0, 0x90, 0x9f, 0xf4, 0x4e, 0x16, 0xc3,
  0xe8, 0x70, 0x06, 0x2f, 0xce, 0x5a, 0x4a, 0xef, 0x4e, 0xb8, 0xdd, 0xd6,
  0xb7, 0x49, 0x31, 0x4c, 0x8a, 0xbc, 0x6c, 0x54, 0x09, 0xd1, 0x6a, 0xa5,

  0xee, 0x17, 0x6b, 0x02, 0x60, 0x1c, 0x4d, 0x97, 0xf2, 0x1a, 0x6b, 0x56,
  0x64, 0x7d, 0x0b, 0xc6, 0x7b, 0x1d, 0x97, 0x67, 0x8d, 0x6a, 0x95, 0xf0,
  0x02, 0x60, 0x7f, 0x29, 0xfc, 0x13, 0xb8, 0xf1, 0x84, 0x9a, 0xc1, 0xa4,
  0xf1, 0x6c, 0x0d, 0xbb, 0xfe, 0x34, 0xaf, 0x91, 0x50, 0xda, 0x5a, 0x1f,
  0x0b, 0xd0, 0xd8, 0x58, 0xa3, 0x2c, 0x28, 0x2a, 0xb7, 0x8e, 0x23, 0x99,
  0x8b, 0xe6, 0x77, 0xe3, 0x35, 0xb7, 0x69, 0x80, 0xa5, 0xd7, 0x09, 0xc9,
  0x0c, 0x57, 0x87, 0x4e, 0x6a, 0xcb, 0x30, 0xfe, 0x8d, 0xc5, 0x14, 0x1f,
  0xc3, 0x2f, 0x6e, 0x9e, 0x6d, 0xfa, 0x65, 0x37, 0x86, 0xd3, 0xb3, 0x72,

  0xcf, 0x59, 0xdf, 0x0f, 0xb6, 0xa2, 0x3d, 0xe2, 0xea, 0xf0, 0x06, 0xd6,
  0x08, 0x75, 0x25, 0xc0, 0x92, 0xa6, 0x31, 0x1b, 0x86, 0x52, 0xfd, 0x6a,
  0x13, 0x27, 0x98, 0xd3, 0xf8, 0xc1, 0x71, 0x5a, 0x2a, 0xf5, 0x0f, 0xd1,

  0x69, 0xf7, 0xd8, 0x78, 0x3f, 0x8e, 0xc4, 0x1b, 0x41, 0x75, 0x51, 0xf7,
  0x05, 0xa2, 0xa5, 0x66, 0x16, 0x73, 0x79, 0x96, 0xb4, 0x82, 0x68, 0x29,
  0xa2, 0x2a, 0x1c, 0xd2, 0x4c, 0x7a, 0x1b, 0x6a, 0x36, 0x62, 0xa1, 0x73,
  0xea, 0x49, 0x32, 0x87, 0x3a, 0x0c, 0xf0, 0xbd, 0x3f, 0x3c, 0x09, 0xa9,
  0xf2, 0xd4, 0xd9, 0x59, 0x95, 0x3e, 0x04, 0x93, 0xf0, 0x6c, 0xac, 0xb8,
  0x46, 0x99, 0x1f, 0x55, 0x0c, 0xf4, 0x48, 0x26, 0x1d, 0x02, 0x3f, 0x4d,
  0x3c, 0xb0, 0xac, 0x41, 0x0d, 0x5f, 0x41, 0x5a, 0xbe, 0x6a, 0x09, 0x1d,
  0xbd, 0x67, 0x5a, 0x5f, 0x9b, 0x26, 0x65, 0x4c, 0xfb, 0x3d, 0x52, 0x59,

  0x9b, 0xee, 0x36, 0x6c, 0x57, 0x62, 0xcb, 0xb4, 0xe9, 0xd6, 0x12, 0x18,
  0xbd, 0x82, 0x1c, 0x69, 0x96, 0x34, 0x6f, 0x07, 0xfa, 0xa2, 0x25, 0xff,
  0x96, 0x8c, 0x8b, 0xd8, 0xf3, 0x81, 0x50, 0xc1, 0x03, 0x77, 0x00, 0x11,
  0x22, 0x58, 0x1b, 0xb3, 0x67, 0x94, 0x8e, 0xc4, 0x4c, 0x15, 0x2f, 0x9e,
  0x84, 0xa1, 0xb8, 0x6b, 0x02, 0xdc, 0x68, 0xcf, 0x54, 0x18, 0xc2, 0x10,
  0xf7, 0xe9, 0xb8, 0xba, 0xa1, 0x9e, 0x3c, 0x6a, 0x19, 0x95, 0x82, 0x0b,

  0x80, 0x4e, 0xea, 0xd4, 0xaf, 0x7a, 0x1b, 0xb6, 0x38, 0xf0, 0xf8, 0xc0,

  0x68, 0x53, 0x23, 0x06, 0xc8, 0x42, 0x47, 0x1d, 0x9d, 0x03, 0x39, 0xb5,
  0x37, 0x59, 0xd5, 0x33, 0xd0, 0x30, 0x31, 0xdc, 0xa2, 0x09, 0xb6, 0xdb,
  0xf1, 0xcc, 0x35, 0x2d, 0x4f, 0xeb, 0xeb, 0x0d, 0x41, 0x1a, 0x5e, 0xbb,
  0x65, 0x50, 0xfc, 0x6f, 0xd7, 0xb4, 0xab, 0xec, 0x32, 0xab, 0xdc, 0x0a,
  0x1a, 0xe4, 0xe5, 0xd1, 0x6d, 0xea, 0x77, 0x6a, 0xa0, 0xaf, 0x77, 0x81,
  0xd7, 0xcc, 0x79, 0x84, 0xf7, 0x6b, 0xea, 0x28, 0x45, 0xc0, 0x84, 0x69,
  0x2c, 0xbf, 0x67, 0xb0, 0x94, 0xb5, 0x29, 0x3f, 0xf4, 0x8d, 0x7d, 0xa8,



  0x31, 0x1c, 0x7a, 0xed, 0xd9, 0x4b, 0xaf, 0xc9, 0x74, 0xe5, 0x01, 0x16,
  0x68, 0x7c, 0xdb, 0x8d, 0x76, 0xe7, 0x74, 0x28, 0xdb, 0xdf, 0x84, 0x18,
  0x17, 0xf7, 0x08, 0x2e, 0x73, 0x53, 0x2e, 0xdf, 0xfb, 0x0b, 0x9a, 0x5c,
  0xb4, 0x61, 0x4c, 0x97, 0xa6, 0x12, 0x8c, 0xeb, 0x51, 0x94, 0x1f, 0x04,
  0x82, 0x0e, 0x94, 0x4b, 0xb9, 0x40, 0x23, 0x61, 0x9c, 0x28, 0x4a, 0xf8,
  0x9c, 0xbc, 0x9b, 0x98, 0x2d, 0xb5, 0x10, 0x38, 0x0c, 0x24, 0xd7, 0x9e,
  0x81, 0x20, 0x2d, 0x67, 0xf8, 0x00, 0xb5, 0xc9, 0xca, 0xbd, 0xcc, 0xea,
  0xd9, 0x82, 0x0c, 0x24, 0xd3, 0xc9, 0xce, 0x99, 0x14, 0x56, 0xb5, 0x8e,
  0x22, 0xf1, 0xf1, 0x7c, 0x42, 0x91, 0x38, 0xa3, 0x14, 0xbd, 0xb4, 0xac,
  0x7a, 0x01, 0xbc, 0x57, 0x8a, 0x01, 0x5d, 0x5e, 0x5c, 0xee, 0x6e, 0xb8,
  0xa0, 0x98, 0x02, 0x8e, 0xc0, 0x3d, 0x1f, 0x29, 0x4a, 0x64, 0x80, 0x13,
  0xba, 0xca, 0x6e, 0xb8, 0x4c, 0xcf, 0xb7, 0x2d, 0x47, 0x82, 0x18, 0x87,
  0xcc, 0x85, 0xbe, 0x48, 0x2e, 0x7f, 0x5b, 0x28, 0xe2, 0x74, 0x43, 0xb4,

  0x17, 0x53, 0xe1, 0x11, 0x3f, 0xf3, 0x61, 0x65, 0x4a, 0x4e, 0x28, 0x27,
  0x44, 0x96, 0x1e, 0x15, 0xff, 0xd5, 0xfb, 0x89, 0x60, 0xe1, 0x82, 0x37,
  0xcb, 0x88, 0x13, 0x8f, 0x02, 0x29, 0x5d, 0x12, 0xe4, 0xb5, 0x4f, 0x52,
  0x40, 0x42, 0x8b, 0x21, 0x09, 0x5d, 0xc8, 0xe6, 0x5a, 0xa0, 0xb7, 0x14,
  0xa9, 0x96, 0x31, 0x95, 0xfb, 0xad, 0x7d, 0xe0, 0x4d, 0x5f, 0x8b, 0x9a,
  0x45, 0x26, 0x5d, 0xcb, 0xe2, 0xe8, 0xfc, 0x6c, 0x70, 0xed, 0x06, 0x91,

  0x48, 0x0f, 0xf3, 0x52, 0x99, 0xeb, 0xc0, 0x6e, 0x4e, 0x6a, 0xd1, 0xd9,
  0xe9, 0xe0, 0xba, 0x1f, 0xea, 0xd8, 0x00, 0xda, 0xf9, 0x00, 0xcb, 0x6d,


  0x6a, 0x40, 0x19, 0x11, 0x77, 0x07, 0xe7, 0x44, 0x63, 0x8e, 0x8e, 0x71,
  0xb4, 0x28, 0x2d, 0x5c, 0x50, 0x88, 0xe6, 0x70, 0x30, 0xc5, 0x2f, 0x38,

  0x4d, 0x59, 0x52, 0x9c, 0x35, 0x4a, 0x54, 0x2e, 0x87, 0x3d, 0x07, 0x49,

  0x91, 0xf5, 0x1d, 0x6a, 0xd1, 0x05, 0xd4, 0x0b, 0x12, 0xea, 0xd6, 0xb7,

  0x31, 0xd7, 0x99, 0xa0, 0x68, 0x7f, 0x04, 0x01, 0xb3, 0xe6, 0xea, 0x1e,
  0x45, 0x09, 0x21, 0xee, 0x92, 0x93, 0x09, 0x9f, 0x7d, 0x36, 0x51, 0xe1,
  0x56, 0x34, 0x76, 0x52, 0xba, 0x3a, 0xd6, 0x6b, 0x16, 0x30, 0x6c, 0xf7,
  0x4b, 0xe2, 0x94, 0x0e, 0x09, 0x5a, 0xa2, 0x2b, 0x93, 0x84, 0x5d, 0x4e,
  0x66, 0xda, 0xad, 0x20, 0xc0, 0xe9, 0x98, 0x71, 0x30, 0xcb, 0x3a, 0x10,
  0x26, 0x83, 0x1e, 0x20, 0xd3, 0xe1, 0x06, 0x40, 0xa8, 0xba, 0xb5, 0x9d,
  0x24, 0xfb, 0xe4, 0x6a, 0xf9, 0xa9, 0xbd, 0x1f, 0x38, 0xe3, 0x99, 0x02,
  0x65, 0xdd, 0x36, 0x84, 0x36, 0x9f, 0x8c, 0xb4, 0x19, 0xd3, 0x87, 0xd3,
  0x37, 0x67, 0x66, 0xb7, 0x64, 0x77, 0x28, 0x85, 0xd6, 0xac, 0x15, 0xcb,
  0x5a, 0x94, 0x6d, 0xd2, 0x99, 0x78, 0x41, 0x9f, 0x65, 0x96, 0xfe, 0x8d,

  0x52, 0xad, 0x48, 0x77, 0x9d, 0xa4, 0x04, 0xe7, 0x15, 0x93, 0xeb, 0x5c,
  0x25, 0xd9, 0x5a, 0x69, 0x3a, 0xd9, 0xa5, 0x63, 0x53, 0xfe, 0xc1, 0x31,
  0xbe, 0x60, 0xfe, 0xf1, 0x4a, 0xe4, 0x94, 0xed, 0x3a, 0xbc, 0x29, 0xa1,
  0x1c, 0x0b, 0x18, 0x19, 0x08, 0xa4, 0x4d, 0x2a, 0x5f, 0xf4, 0x94, 0x0b,
  0xd2, 0xcd, 0x6c, 0x76, 0x5d, 0x1d, 0x64, 0x27, 0x2f, 0xa4, 0xe8, 0x71,
  0xfd, 0xed, 0xd5, 0xc5, 0xfb, 0xde, 0xf5, 0x05, 0xb5, 0xba, 0x27, 0x73,
  0x6e, 0xb6, 0x22, 0x45, 0xa4, 0x34, 0x7d, 0x52, 0x2d, 0x4a, 0x89, 0xf8,
  0xda, 0xd6, 0xcb, 0x0d, 0x29, 0xf4, 0x61, 0x91, 0x42, 0xd3, 0xd3, 0xb7,
  0xbc, 0xf6, 0x25, 0x19, 0x6b, 0x22, 0x31, 0xb5, 0x48, 0x45, 0xbf, 0xe3,
  0xc8, 0x89, 0x63, 0x71, 0x4a, 0x87, 0x70, 0xee, 0xe1, 0xb2, 0x7c, 0x8c,

  0xa4, 0xb6, 0x14, 0x31, 0x0b, 0xc9, 0x96, 0xf2, 0xa3, 0x03, 0xa6, 0xf7,
  0xb6, 0x41, 0x2a, 0xc2, 0xaa, 0x3b, 0x2e, 0xeb, 0xaa, 0x72, 0xb8, 0xbe,
  0x71, 0x51, 0xe4, 0xf7, 0x2a, 0xb8, 0xa4, 0xf6, 0x1b, 0xa6, 0x8e, 0x87,
  0x54, 0x3c, 0xb6, 0xa2, 0xbb, 0x08, 0x60, 0x99, 0x76, 0x0e, 0x5f, 0xa9,
  0xfe, 0xed, 0xd7, 0x31, 0x37, 0x34, 0x03, 0xbc, 0x57, 0x15, 0x4b, 0x2c,
  0x29, 0x0d, 0xbb, 0x9d, 0xcf, 0x90, 0x4d, 0xd6, 0x53, 0xc6, 0xbb, 0x82,
  0xa8, 0x88, 0x00, 0x3c, 0xd4, 0xeb, 0xcd, 0xf8, 0x25, 0xc9, 0x3f, 0xc1,

  0x31, 0xc5, 0x3f, 0x7b, 0x37, 0x58, 0xa0, 0x96, 0x51, 0xa3, 0xc7, 0x36,
  0xae, 0x94, 0x36, 0x6e, 0x73, 0xf1, 0xd2, 0x8a, 0xfb, 0x6f, 0x6a, 0x12,
  0x0e, 0x81, 0xa9, 0x11, 0x33, 0xc0, 0x9f, 0x7a, 0xba, 0xa4, 0xa2, 0x24,
  0xa5, 0x88, 0x50, 0x31, 0x5e, 0x8e, 0xe8, 0x98, 0x30, 0xe2, 0x87, 0xed,
  0x3d, 0x87, 0x8c, 0xdb, 0xaa, 0x20, 0x0f, 0x38, 0xb4, 0x4d, 0x97, 0x67,
  0x07, 0x4e, 0x53, 0xcb, 0x8a, 0xf8, 0x31, 0xdb, 0xb3, 0x0c, 0x95, 0x49,
  0xcc, 0x7d, 0x4d, 0x58, 0xb1, 0x2c, 0x9a, 0x36, 0x27, 0x46, 0x95, 0xb4,
  0x67, 0xb2, 0xcf, 0xae, 0x10, 0x34, 0x9f, 0xe0, 0xc2, 0x25, 0xe8, 0x8f,
  0xc8, 0x96, 0x48, 0xc0, 0x14, 0x74, 0xff, 0x3a, 0x2e, 0x81, 0x2f, 0xd5,
  0xc7, 0xdb, 0x58, 0xe1, 0x9e, 0x5e, 0x6a, 0x61, 0x85, 0x73, 0x7a, 0xb5,
  0x03, 0x09, 0x9f, 0xdc, 0x69, 0x0d, 0xe3, 0x82, 0x53, 0x33, 0x9c, 0x1d,
  0x17, 0x16, 0x45, 0xc0, 0x8b, 0x94, 0xab, 0x1e, 0x53, 0xb7, 0xeb, 0xbb,
  0x10, 0x73, 0x8a, 0x4d, 0x3f, 0xc7, 0x2a, 0xd2, 0x8f, 0x46, 0xeb, 0x5a,
  0xf9, 0x69, 0x2a, 0x91, 0xce, 0xe4, 0x57, 0x07, 0xa6, 0x34, 0x15, 0x79,
  0x5a, 0x63, 0xb8, 0xdd, 0x1f, 0x7e, 0xa8, 0xf7, 0x5f, 0xde, 0x68, 0x03,
  0xc3, 0x90, 0x9a, 0x94, 0x31, 0xf3, 0x3e, 0x9d, 0xb0, 0x57, 0x57, 0xa7,
  0x64, 0x87, 0x21, 0x06, 0xca, 0xe2, 0x67, 0x07, 0x8c, 0x78, 0x8a, 0xc0,
  0x04, 0xbc, 0xd1, 0x62, 0xab, 0x5a, 0x0a, 0x07, 0xc1, 0x64, 0x9c, 0x06,
  0x72, 0x16, 0x89, 0xe1, 0x6a, 0xee, 0x05, 0xc7, 0x54, 0x28, 0x27, 0xdd,
  0xdd, 0xae, 0xd2, 0x3a, 0x67, 0x6e, 0x30, 0xb6, 0x20, 0x40, 0xcd, 0xab,
  0x9b, 0x44, 0x1b, 0xe0, 0x4c, 0x53, 0x7a, 0x49, 0xf2, 0x9e, 0xdb, 0x4a,
  0x60, 0x5a, 0xec, 0xa8, 0x48, 0xc4, 0xdb, 0xa0, 0x4d, 0x80, 0xbc, 0x28,
  0x32, 0x82, 0xf6, 0xf0, 0xe5, 0x21, 0xa7, 0x6a, 0xec, 0xdc, 0x17, 0x8b,
  0xb7, 0xd8, 0x38, 0x31, 0x29, 0xc3, 0xf0, 0xb5, 0xf7, 0xfb, 0x9c, 0x20,
  0x36, 0xa9, 0xf7, 0x12, 0xc1, 0xc6, 0xe5, 0xec, 0xd8, 0x92, 0xf6, 0xc1,
  0x2c, 0x6f, 0xfe, 0xac, 0x37, 0xb7, 0xef, 0x06, 0x2f, 0x91, 0x0a, 0x42,
  0x21, 0x50, 0x65, 0x26, 0x78, 0x2e, 0x88, 0xed, 0x8b, 0xb9, 0x70, 0xda,
  0x92, 0x0c, 0x3d, 0xc5, 0x1a, 0x23, 0x67, 0x75, 0x9a, 0x90, 0x28, 0xe6,
  0x64, 0xbc, 0xf8, 0x40, 0xd3, 0xf6, 0xca, 0x62, 0x0e, 0x0f, 0x39, 0x3d,
  0x2d, 0x2e, 0x1d, 0x3b, 0xb7, 0xc0, 0x28, 0xed, 0xd1, 0x63, 0x65, 0x5b,
  0xba, 0x89, 0x20, 0x8f, 0x53, 0x0e, 0x1c, 0xb7, 0x4f, 0x71, 0xf7, 0x4c,
  0xdd, 0x64, 0x06, 0xf5, 0x44, 0x0a, 0xcd, 0xa4, 0x0f, 0xc7, 0x37, 0x27,
  0xd7, 0xcd, 0xab, 0xe5, 0x46, 0x0e, 0x09, 0x63, 0x04, 0xfe, 0x7d, 0xf9,
  0xe1, 0x7a, 0x83, 0x9a, 0x93, 0x29, 0x60, 0x70, 0x55, 0x6b, 0x3a, 0x63,
  0xea, 0x57, 0xfd, 0x52, 0x1c, 0x46, 0xf5, 0x10, 0x3e, 0x25, 0xc9, 0x40,
  0x72, 0x33, 0xd0, 0xc7, 0xb2, 0xbb, 0xb5, 0x0d, 0x76, 0xd4, 0xd6, 0x0e,

  0x35, 0x9c, 0xde, 0xdd, 0xda, 0x35, 0x40, 0x08, 0xfa, 0x94, 0xdf, 0xa6,

  0x82, 0x5f, 0x24, 0x97, 0x09, 0xd1, 0xfd, 0xee, 0xc3, 0x03, 0xfd, 0xb8,

  0x5e, 0x5e, 0xd1, 0x33, 0x25, 0x89, 0xee, 0x34, 0x83, 0x72, 0xdf, 0xd9,
  0x6f, 0x8a, 0xec, 0x2d, 0x33, 0x2e, 0x00, 0xa6, 0x86, 0xde, 0x88, 0x1b,



  0xd2, 0x6f, 0xef, 0x6e, 0xe5, 0xb4, 0xea, 0x13, 0x74, 0x34, 0xb7, 0x3d,
  0x1d, 0x10, 0x8b, 0x8b, 0x38, 0x23, 0x28, 0x24, 0x1e, 0x6b, 0xc6, 0x67,
  0x04, 0xaf, 0x09, 0xf6, 0xe0, 0xc1, 0xee, 0x90, 0x69, 0x99, 0x2a, 0x0c,
  0x00, 0x04, 0x9d, 0xb0, 0x23, 0x53, 0x4c, 0x13, 0x70, 0x42, 0x20, 0xff,
  0x3b, 0xc0, 0x34, 0x11, 0xb8, 0x13, 0xb4, 0xbf, 0xfa, 0x57, 0xcd, 0xe3,
  0xe3, 0x7f, 0xed, 0xd6, 0x25, 0x25, 0xba, 0x87, 0x75, 0xd0, 0x43, 0xf9,
  0x8b, 0xe7, 0xab, 0xa4, 0x3e, 0xc3, 0xa4, 0x1b, 0x53, 0x87, 0x98, 0x8d,
  0x9a, 0xff, 0x84, 0xc6, 0x30, 0x13, 0x13, 0x2d, 0x45, 0x3a, 0xb8, 0x33,
  0x8b, 0x6e, 0xd2, 0x46, 0x4d, 0x3e, 0xf4, 0xdb, 0x1a, 0x00, 0xaa, 0x26,
  0xe8, 0x8d, 0xaf, 0x09, 0x16, 0x06, 0x31, 0xc0, 0x51, 0x89, 0xf3, 0x45,
  0xe8, 0xee, 0x96, 0x0a, 0xfe, 0x80, 0xc2, 0xd5, 0x38, 0xdb, 0x65, 0x8e,
  0x8d, 0xe9, 0x44, 0x47, 0x15, 0xf5, 0x83, 0x26, 0x3f, 0x98, 0x6f, 0xa2,
  0xe2, 0x56, 0x74, 0x79, 0x2b, 0xa8, 0xcf, 0x3a, 0x36, 0xcc, 0xd1, 0x14,
  0xcc, 0xda, 0x4c, 0x39, 0x10, 0x32, 0x77, 0x13, 0x35, 0x42, 0x19, 0xb6,



  0x43, 0x4d, 0xde, 0x8b, 0x1a, 0x0b, 0x85, 0x7b, 0x88, 0xa2, 0x15, 0xd5,
  0x7e, 0xe9, 0x06, 0xbd, 0xd7, 0xa5, 0xbf, 0xed, 0x6f, 0xbd, 0xe2, 0x13,
  0x3d, 0x3d, 0xb9, 0x7e, 0xdb, 0x74, 0xe6, 0x15, 0x40, 0x50, 0xfc, 0xdf,
  0x5e, 0x12, 0x17, 0x37, 0x60, 0x5c, 0x20, 0x54, 0x52, 0x0f, 0xfb, 0x6f,
  0xf4, 0xb6, 0xb6, 0x42, 0x79, 0x1b, 0x9f, 0x10, 0x1e, 0x62, 0x77, 0xaf,
  0x1e, 0xd2, 0x43, 0x95, 0xbe, 0x87, 0xdb, 0xdd, 0x8e, 0xe4, 0x5b, 0x27,
  0xaf, 0x58, 0x75, 0x67, 0x79, 0xbc, 0x16, 0xb0, 0x4f, 0x22, 0x03, 0x09,
  0x1d, 0x35, 0x81, 0x30, 0x1d, 0x13, 0xbb, 0xa9, 0xde, 0x98, 0xec, 0x24,

  0x10, 0xf3, 0x24, 0x93, 0xaa, 0xc7, 0x8d, 0x88, 0xfb, 0x48, 0x72, 0xbb,
  0xb7, 0x8a, 0x18, 0x00, 0x59, 0x10, 0xc1, 0xc2, 0xf9, 0x52, 0x6a, 0x07,
  0x8b, 0x04, 0x21, 0xd7, 0x58, 0xed, 0x93, 0xb6, 0x59, 0x4f, 0xc3, 0xc6,
  0xd1, 0x16, 0x14, 0xa3, 0x85, 0x14, 0x91, 0xf2, 0xbf, 0x51, 0x14, 0xd7,
  0xf2, 0x67, 0x77, 0xf6, 0x03, 0x1b, 0x47, 0x02, 0xfb, 0x57, 0x6e, 0x9c,
  0x55, 0x8e, 0xd8, 0x7f, 0x47, 0x06, 0xaf, 0x29, 0x75, 0x0b, 0x64, 0x6a,
  0x6b, 0x5b, 0xe7, 0x5f, 0xbc, 0x16, 0xdc, 0xed, 0xfe, 0x2a, 0xf0, 0x49,
  0xfb, 0xd6, 0xaf, 0x5c, 0x4b, 0xd7, 0x76, 0x3e, 0x41, 0xe9, 0x31, 0x97,
  0xc6, 0x6e, 0xe4, 0x67, 0xa0, 0x80, 0x66, 0x13, 0x18, 0x26, 0x59, 0x24,




  0xb4, 0x78, 0x37, 0x6f, 0xc1, 0x21, 0x6e, 0x63, 0xa3, 0xa2, 0xad, 0xa8,
  0x05, 0x91, 0x20, 0x44, 0xd3, 0x05, 0x22, 0x7e, 0x94, 0x41, 0x3f, 0x8b,
  0x98, 0xf9, 0xec, 0x47, 0xa0, 0xcd, 0x54, 0x97, 0x6c, 0x57, 0xc4, 0x98,
  0xbc, 0xae, 0x7b, 0xac, 0x3c, 0xcb, 0x53, 0x1a, 0xef, 0xe2, 0x19, 0x9a,
  0xeb, 0x34, 0x86, 0x39, 0xac, 0xdc, 0x56, 0xd6, 0xf3, 0xe0, 0x79, 0x8b,
  0xf8, 0x77, 0xe7, 0x91, 0x99, 0xf7, 0x39, 0xe1, 0x51, 0x95, 0xd9, 0xef,
  0xae, 0xde, 0xfe, 0x45, 0xed, 0xee, 0x8d, 0x6e, 0x8b, 0x25, 0xdc, 0x98,
  0xee, 0x30, 0x71, 0x12, 0x01, 0x05, 0x02, 0xa2, 0xb6, 0xeb, 0xfc, 0x2f,
  0x9b, 0x65, 0xe9, 0x05, 0x15, 0x28, 0xe9, 0x63, 0x1d, 0xc3, 0x6c, 0xf0,
  0xdc, 0x40, 0x4c, 0xba, 0xdd, 0xfe, 0x3e, 0xf9, 0x43, 0xde, 0x1e, 0xef,
  0xef, 0xee, 0x6c, 0x83, 0xd5, 0xba, 0xde, 0xe0, 0x16, 0x1b, 0x9f, 0x3d,
  0x6b, 0xb7, 0xcd, 0x79, 0x27, 0x0f, 0x0b, 0xa4, 0xbd, 0xf5, 0x93, 0x1f,
  0x2e, 0xcf, 0xbd, 0x35, 0xc2, 0x9a, 0xbc, 0x40, 0x6a, 0xdb, 0x1a, 0xad,

  0x2e, 0x50, 0x1b, 0x5f, 0xf3, 0x8f, 0xa9, 0x61, 0x75, 0x20, 0x54, 0xf9,
  0xb6, 0x48, 0x51, 0xc7, 0xed, 0xe0, 0x96, 0x74, 0xce, 0xf2, 0x6c, 0x0c,
  0xa2, 0xff, 0x02, 0x21, 0xfa, 0x92, 0x0e, 0xe8, 0xea, 0x4f, 0xae, 0xae,
  0xfd, 0x9a, 0xbc, 0xef, 0xd2, 0x55, 0xc9, 0xfc, 0x0c, 0x97, 0xf7, 0xf4,
  0x43, 0x42, 0x44, 0x46, 0x70, 0x13, 0xae, 0x31, 0x59, 0x4e, 0x13, 0x76,
  0xef, 0xa2, 0x69, 0x56, 0xbf, 0x6d, 0x0f, 0xd4, 0x90, 0x88, 0x3c, 0x3e,
  0x87, 0xe4, 0xd0, 0x6e, 0x8b, 0x85, 0x30, 0xb7, 0xd4, 0x68, 0x08, 0xfb,
  0x88, 0xd6, 0xd5, 0xad, 0xbf, 0xe1, 0x74, 0x74, 0x27, 0xf0, 0x4e, 0x8e,
  0x75, 0xa0, 0xde, 0x16, 0xe0, 0xb9, 0xf4, 0x98, 0xb5, 0x2b, 0xd2, 0x7a,
  0x4a, 0x3c, 0xdd, 0x44, 0x02, 0x83, 0xe8, 0xd6, 0xb1, 0x0b, 0x43, 0x3e,
  0x70, 0xca, 0x20, 0xa0, 0x8e, 0x7b, 0x71, 0x56, 0xc7, 0x79, 0x45, 0x30,
  0x03, 0xb6, 0x7e, 0x92, 0x07, 0x6a, 0xa2, 0x0a, 0x2a, 0xe2, 0x8b, 0x5d,
  0x5f, 0x1e, 0xc9, 0x52, 0x04, 0xde, 0x45, 0xdc, 0x4c, 0x06, 0x8a, 0xfa,
  0xad, 0x55, 0x7b, 0xbb, 0xc1, 0x38, 0x44, 0x28, 0x24, 0xc5, 0x51, 0x09,
  0xb1, 0xce, 0x1a, 0x71, 0x09, 0x37, 0x0e, 0x41, 0x37, 0x05, 0x23, 0x11,
  0x12, 0x65, 0xf0, 0x0d, 0x15, 0x27, 0x32, 0xd1, 0x1e, 0x9a, 0x58, 0x11,
  0x8c, 0x68, 0x9a, 0xa0, 0x26, 0x34, 0x51, 0x23, 0xbe, 0xfd, 0xcf, 0x03,
  0xc4, 0x77, 0x7e, 0x71, 0x7d, 0x72, 0x20, 0x10, 0x5f, 0x8a, 0x85, 0xa3,
  0x66, 0x02, 0x27, 0xa6, 0x71, 0x23, 0x77, 0xae, 0x39, 0x44, 0x21, 0xab,
  0xa7, 0xde, 0x0d, 0x5d, 0x79, 0xca, 0x11, 0xc7, 0x6b, 0xc2, 0x5e, 0xde,
  0xaa, 0x15, 0x21, 0x97, 0x4a, 0xfd, 0xc5, 0x32, 0x60, 0x7a, 0xc2, 0xf3,
  0xf7, 0x91, 0x51, 0x08, 0x3e, 0x83, 0x10, 0x29, 0x58, 0xde, 0x7a, 0x24,
  0xc4, 0xa2, 0x8c, 0x0d, 0x2e, 0x93, 0xb0, 0x38, 0xc2, 0x7e, 0xaa, 0x7e,
  0x13, 0x50, 0x8a, 0xd0, 0xbd, 0x95, 0x46, 0xf2, 0x64, 0x8f, 0x18, 0x98,
  0xcd, 0x55, 0x22, 0xce, 0x06, 0x12, 0x9b, 0x97, 0x4a, 0x8c, 0x33, 0xf4,


  0x02, 0x7e, 0xd9, 0x0a, 0x73, 0x55, 0x39, 0xf7, 0x49, 0xe9, 0x04, 0xee,
  0x91, 0x5a, 0x69, 0x68, 0x55, 0x1a, 0x33, 0x45, 0x30, 0x6c, 0xfc, 0xf0,
  0x35, 0xb1, 0xc0, 0xba, 0x5b, 0x44, 0xb5, 0xb4, 0xae, 0x51, 0xd7, 0x28,
  0x71, 0x27, 0xa1, 0xb2, 0x2c, 0x36, 0xc0, 0x49, 0x5b, 0x68, 0x41, 0x62,
  0x75, 0x31, 0x06, 0x44, 0xa9, 0x46, 0xd1, 0x37, 0x02, 0xc1, 0xed, 0x56,
  0x20, 0x90, 0xce, 0x47, 0xd6, 0x6c, 0xca, 0x40, 0x0f, 0xf0, 0x91, 0xfd,
  0xad, 0x16, 0x5b, 0x96, 0x55, 0xde, 0x41, 0x52, 0x17, 0xb4, 0xf0, 0x46,

  0x6f, 0xdb, 0x38, 0x61, 0x53, 0x2a, 0x6e, 0x17, 0x34, 0xb7, 0x4f, 0x17,
  0x62, 0x9a, 0x77, 0xe5, 0x8c, 0x56, 0xe6, 0x31, 0xbe, 0xd7, 0xb0, 0x2f,
  0x3e, 0x94, 0x66, 0x9a, 0xa2, 0xc6, 0x9a, 0x12, 0x47, 0xf1, 0x14, 0xb4,
  0x16, 0x6e, 0x66, 0x8e, 0xd1, 0x73, 0x1b, 0xfc, 0xf6, 0x8d, 0x39, 0x74,
  0x52, 0xf4, 0xa3, 0xc8, 0x45, 0x20, 0xd3, 0x92, 0x23, 0x39, 0x18, 0xdc,

  0x75, 0xf2, 0xb7, 0x0d, 0xb1, 0x7e, 0x3f, 0xfa, 0x6b, 0x3e, 0x14, 0x27,
  0x0c, 0x5a, 0x8e, 0x21, 0x24, 0x9f, 0x09, 0xe5, 0xcf, 0x2f, 0x81, 0xca,
  0xc6, 0x4b, 0xf6, 0xab, 0xe2, 0x84, 0x24, 0x13, 0x9b, 0x5b, 0x3f, 0x63,
  0xc0, 0x23, 0x9a, 0x12, 0x8e, 0x26, 0xa7, 0x82, 0x6a, 0x21, 0xba, 0x5f,


  0xed, 0xbc, 0xd3, 0x44, 0x6b, 0x89, 0x47, 0xe8, 0x0d, 0x81, 0xc1, 0x05,
  0x1c, 0x81, 0x01, 0xf7, 0x6c, 0xc2, 0x7a, 0x3c, 0xaa, 0x96, 0xb2, 0xf1,
  0xcd, 0xd9, 0xe5, 0xea, 0x25, 0x85, 0x77, 0x09, 0x06, 0x9e, 0xb2, 0x90,
  0x46, 0x40, 0x79, 0xf1, 0xe8, 0x51, 0xf5, 0x05, 0x2b, 0x5c, 0x05, 0xd0,
  0xd1, 0x82, 0xc6, 0xfb, 0x35, 0x9e, 0x3a, 0x09, 0x8c, 0x76, 0xa6, 0x65,
  0x4b, 0xb7, 0x96, 0xdf, 0xd4, 0x4e, 0x71, 0x7b, 0x6e, 0xb1, 0xd3, 0x59,
  0x81, 0x27, 0x6b, 0x57, 0x3d, 0xa9, 0x62, 0xdc, 0xe5, 0x95, 0xc5, 0xe8,
  0xd6, 0x25, 0x60, 0x2a, 0x6b, 0x28, 0x32, 0x48, 0xf5, 0x8c, 0x58, 0x63,
  0x43, 0x71, 0x70, 0x6d, 0x38, 0x75, 0xea, 0xeb, 0x11, 0xef, 0xe5, 0x2b,
  0xcc, 0x0f, 0xd7, 0x89, 0x59, 0xd9, 0x8a, 0x52, 0x1c, 0x66, 0x8f, 0x33,
  0xc6, 0xa2, 0xfd, 0xcf, 0xf7, 0xf7, 0x36, 0xb4, 0x79, 0xb1, 0x66, 0x21,
  0x6e, 0x84, 0x3a, 0x00, 0xd2, 0x8d, 0x93, 0x9e, 0x0a, 0xa4, 0xd7, 0xa4,
  0xd8, 0x23, 0x93, 0xd1, 0x3a, 0xc4, 0xb1, 0x99, 0x72, 0xd3, 0x2c, 0x74,
  0xb1, 0x53, 0xfb, 0x39, 0x66, 0xca, 0x5e, 0xfe, 0x00, 0x7e, 0x2c, 0xe1,
  0x97, 0xd7, 0x89, 0xc3, 0xc7, 0xa5, 0x65, 0xde, 0xb6, 0x32, 0x88, 0xa1,
  0xfd, 0x49, 0x49, 0xd3, 0xd4, 0xb7, 0x0d, 0x2a, 0x5f, 0x0f, 0x96, 0x95,
  0x73, 0xfa, 0x39, 0x69, 0xaa, 0xa2, 0x7a, 0xdc, 0x60, 0x47, 0xf6, 0xdc,

  0x91, 0x0b, 0xec, 0x1b, 0xe1, 0xda, 0x2e, 0x16, 0x3c, 0x21, 0xa0, 0x6a,
  0xc2, 0x99, 0x28, 0x39, 0x43, 0xaa, 0xbe, 0x8f, 0x0c, 0x7d, 0x4a, 0xe0,
  0x0b, 0xf2, 0xbe, 0x24, 0x48, 0xc9, 0x99, 0x30, 0xe2, 0xae, 0x27, 0x90,
  0xe7, 0xda, 0x1d, 0x8a, 0x55, 0x8f, 0xbc, 0xb0, 0xa5, 0xb9, 0x1c, 0xa4,
  0x61, 0x71, 0x49, 0xf9, 0xc2, 0x6d, 0xc0, 0x3b, 0xea, 0x06, 0x89, 0x15,
  0x23, 0xa4, 0x36, 0xb3, 0xd6, 0xfa, 0x16, 0xa5, 0x36, 0x85, 0xe2, 0x69,

  0x96, 0xb5, 0xe8, 0xdf, 0x0d, 0x55, 0xfa, 0x15, 0x6d, 0xfc, 0xd5, 0xc6,
  0x46, 0xb4, 0xcc, 0x9e, 0x2c, 0x29, 0xc6, 0xcd, 0x23, 0x5f, 0x8a, 0xdf,
  0x1c, 0x76, 0x16, 0xad, 0xd3, 0x84, 0x37, 0x37, 0x37, 0x9e, 0x9e, 0xb4,
  0x3c, 0xf9, 0xd4, 0x24, 0x2f, 0xd9, 0xb1, 0xe1, 0xb4, 0x93, 0x98, 0x38,
  0x73, 0xc0, 0x6f, 0x3a, 0x70, 0x19, 0x5d, 0xa6, 0x48, 0x72, 0x30, 0x67,
  0x88, 0x79, 0x1a, 0x3f, 0xfa, 0x4e, 0x7c, 0xcd, 0x4a, 0xe3, 0x05, 0xd6,
  0xd7, 0xae, 0xf5, 0xc8, 0x04, 0xe7, 0x27, 0x2c, 0x04, 0x53, 0xa3, 0x08,
  0x5f, 0xed, 0x08, 0x88, 0xd0, 0xd7, 0x37, 0xed, 0xb4, 0x9c, 0xc5, 0x91,
  0x89, 0x9b, 0x76, 0x23, 0xc7, 0xcd, 0xce, 0xb7, 0x50, 0x7d, 0x10, 0xec,
  0x8e, 0x0f, 0xd4, 0x46, 0xe8, 0xd3, 0x26, 0xc3, 0x92, 0x3b, 0xa9, 0xf7,
  0x3d, 0x44, 0x64, 0x7e, 0xd2, 0x76, 0xf3, 0x0e, 0xf4, 0x52, 0x70, 0x5d,
  0xa4, 0x32, 0x20, 0x70, 0xd4, 0x5b, 0xbb, 0x66, 0xc6, 0x23, 0xe6, 0x8e,
  0xed, 0xd2, 0x90, 0x4f, 0x07, 0xc3, 0xe9, 0x7a, 0x8c, 0x97, 0xe6, 0x66,
  0xe8, 0x9b, 0x76, 0x8c, 0xc1, 0x78, 0x86, 0xfc, 0xd3, 0xda, 0x66, 0x76,
  0xf9, 0x8e, 0x12, 0x0c, 0x4e, 0x48, 0x57, 0xa7, 0xae, 0x89, 0x3e, 0x92,
  0x83, 0xd9, 0xc3, 0x95, 0x29, 0x78, 0x26, 0x07, 0x8f, 0xfc, 0xbc, 0x92,
  0x85, 0xe7, 0xcb, 0x59, 0xf5, 0xb5, 0xe9, 0xa0, 0x75, 0x5f, 0xc3, 0xcb,
  0xba, 0xaf, 0xc1, 0x80, 0x52, 0x84, 0x35, 0x34, 0x4e, 0xbe, 0x2c, 0xa3,


  0x73, 0x7d, 0x2c, 0x5a, 0x1f, 0x5c, 0x9e, 0x9f, 0x7c, 0x73, 0xb1, 0xf1,
  0x94, 0x8f, 0xb2, 0xce, 0xff, 0xcd, 0xba, 0x62, 0xcd, 0x12, 0x96, 0xe9,
  0x93, 0x75, 0xf2, 0xcd, 0x60, 0xd0, 0x3b, 0xba, 0x3c, 0xa5, 0x2e, 0x97,
  0x03, 0xf8, 0xb3, 0x05, 0x8b, 0xbd, 0x4f, 0xad, 0x00, 0x7a, 0xdf, 0x49,
  0xed, 0x68, 0xa9, 0x49, 0x82, 0xe4, 0x01, 0xc4, 0xc3, 0x14, 0xf4, 0x44,


  0xde, 0x23, 0x03, 0xed, 0x41, 0xc3, 0x37, 0x4d, 0x9e, 0xcb, 0xd3, 0x4d,
  0xfa, 0x14, 0x7e, 0x92, 0x16, 0xd4, 0xe2, 0x3e, 0x58, 0xfa, 0x0d, 0x2e,
  0x51, 0xf3, 0xa1, 0x14, 0x53, 0x62, 0xd0, 0x9a, 0x0c, 0x0e, 0x96, 0x1f,
  0x8a, 0x13, 0x1b, 0xb0, 0x0b, 0x97, 0xde, 0xa0, 0x2b, 0x0c, 0x6b, 0x2b,
  0x14, 0x34, 0xb5, 0xe1, 0x7a, 0x23, 0x13, 0x8d, 0xa1, 0xf1, 0x66, 0x08,
  0x3f, 0x32, 0xd0, 0xe8, 0x6a, 0xd3, 0x29, 0xb2, 0xd6, 0x5b, 0x46, 0xd1,
  0xc1, 0x9a, 0x34, 0x8e, 0xcf, 0xf2, 0xe5, 0xf4, 0x86, 0x0d, 0xac, 0xba,
  0x1f, 0x82, 0x78, 0xb9, 0x46, 0x5f, 0x4d, 0xef, 0x06, 0x98, 0xa4, 0x47,
  0x82, 0xf4, 0x8e, 0xea, 0x3d, 0x45, 0x82, 0xc1, 0x21, 0x56, 0x6f, 0x38,
  0xe9, 0x62, 0xfc, 0xbb, 0x60, 0xa0, 0xaf, 0xd0, 0x40, 0x86, 0x1c, 0x38,
  0x25, 0x37, 0x5a, 0x56, 0xcd, 0xe6, 0xf2, 0xd7, 0x38, 0x7b, 0x24, 0x77,
  0xa9, 0xf8, 0xef, 0xa9, 0xfe, 0xd3, 0xd0, 0x74, 0x9d, 0xd0, 0xab, 0x62,
  0x44, 0x86, 0x3e, 0xa7, 0xa0, 0x72, 0xe1, 0xe7, 0x2a, 0x9a, 0xa5, 0x9e,
  0xf6, 0x73, 0x10, 0xd3, 0x64, 0xda, 0xf5, 0xb2, 0xae, 0x8e, 0xd2, 0x05,
  0x73, 0x58, 0xc2, 0x64, 0xa2, 0x08, 0x0b, 0x11, 0x04, 0x58, 0x11, 0xb5,
  0x80, 0x5c, 0x8f, 0x87, 0x65, 0x3e, 0x5b, 0x56, 0xa4, 0x0b, 0xa0, 0x53,
  0x14, 0x8b, 0x6b, 0x36, 0x88, 0x74, 0x25, 0x7c, 0x09, 0xa3, 0x46, 0x4e,
  0x02, 0x6a, 0x14, 0xaa, 0x03, 0xb0, 0xed, 0x49, 0xfb, 0x36, 0x04, 0xc0,
  0x51, 0x44, 0xf1, 0x4f, 0xe0, 0xce, 0xf2, 0x58, 0x34, 0xd4, 0x82, 0xd2,
  0x92, 0xee, 0x14, 0xec, 0xcd, 0x3f, 0x3f, 0x3d, 0xab, 0xda, 0xee, 0xa8,
  0x77, 0x1d, 0x59, 0x77, 0x2d, 0x51, 0xdd, 0x6a, 0x8d, 0x21, 0xce, 0xd6,
  0x9a, 0xa9, 0xac, 0xd9, 0x02, 0x43, 0xbc, 0x25, 0xc3, 0x47, 0xf3, 0x31,
  0xfe, 0x4e, 0x4c, 0xb9, 0x3c, 0x46, 0x11, 0x7e, 0x2e, 0xb4, 0x92, 0x3d,
  0x8c, 0xfe, 0xaa, 0x64, 0x94, 0xfa, 0x97, 0x1a, 0x43, 0x7f, 0x97, 0x70,
  0xde, 0x19, 0x1f, 0x31, 0x9d, 0x46, 0xed, 0x90, 0x59, 0xcb, 0x6f, 0x36,
  0xb5, 0xc3, 0x8d, 0xe8, 0xd3, 0x13, 0x1e, 0x01, 0x63, 0x28, 0xdd, 0xac,
  0x4a, 0xd5, 0x23, 0xf4, 0xb7, 0xc5, 0xdc, 0x4e, 0x93, 0x5f, 0x76, 0xbe,
  0x61, 0x4a, 0x81, 0xf2, 0xd5, 0x1d, 0x6f, 0xed, 0xe9, 0xf4, 0x9f, 0xb1,

  0x21, 0x76, 0xfd, 0xf6, 0x87, 0x9e, 0x65, 0x67, 0xe2, 0xc5, 0x25, 0x41,
  0x52, 0x9a, 0x45, 0x01, 0xe7, 0xff, 0x28, 0x7f, 0xc1, 0x3b, 0xf0, 0x7d,
  0x9a, 0x81, 0x66, 0x58, 0x6e, 0x28, 0x71, 0xa6, 0x59, 0x08, 0x46, 0x01,
  0x79, 0xc7, 0x5a, 0x09, 0x96, 0x18, 0x70, 0x1c, 0x9b, 0xa8, 0x87, 0x8a,
  0x33, 0x07, 0x6c, 0x3c, 0x56, 0xe4, 0x34, 0x36, 0x7d, 0x5c, 0x78, 0xf5,
  0x33, 0x23, 0xc3, 0x74, 0x68, 0x0c, 0x02, 0x2f, 0x06, 0xb3, 0x20, 0x4b,
  0x1f, 0xfa, 0x26, 0xb8, 0x6f, 0xd0, 0xd7, 0xdc, 0xe0, 0x26, 0x30, 0xc2,
  0x40, 0x4f, 0x7b, 0xe2, 0x6c, 0xcd, 0x10, 0x16, 0xee, 0x2e, 0xad, 0x73,
  0x7d, 0x7f, 0x23, 0x9a, 0x54, 0x8b, 0xf5, 0xed, 0x0d, 0xc6, 0xb0, 0x97,

  0x5e, 0xea, 0xb9, 0x15, 0xf7, 0xbe, 0x17, 0x07, 0x73, 0x0b, 0xa3, 0x63,
  0xf3, 0x59, 0x0a, 0x6e, 0x22, 0x9c, 0x1b, 0x55, 0xf1, 0x4d, 0xe4, 0x06,
  0xf3, 0x86, 0x99, 0x06, 0xcc, 0x94, 0xc6, 0x1c, 0xd8, 0x3b, 0xae, 0xc5,
  0x5f, 0x20, 0xb2, 0x2b, 0x55, 0x36, 0x82, 0x05, 0x61, 0xbb, 0xe0, 0x4a,
  0x2f, 0x30, 0x29, 0x7d, 0x86, 0x9d, 0x9b, 0x8d, 0x7b, 0xc8, 0x43, 0xa6,
  0x45, 0x0e, 0x22, 0xb2, 0x08, 0xe0, 0x5f, 0x8a, 0x4d, 0x71, 0x4d, 0xd5,
  0x37, 0x77, 0x69, 0x91, 0x67, 0x04, 0x31, 0x7a, 0x17, 0x17, 0x29, 0x85,
  0xf9, 0x3b, 0xef, 0x2e, 0xde, 0x9f, 0x74, 0x5c, 0xa7, 0xc8, 0x24, 0x15,
  0x3f, 0x3a, 0x9d, 0x5f, 0xd3, 0x4b, 0xad, 0xa7, 0x19, 0x72, 0x1a, 0x82,

  0x48, 0x1f, 0xb1, 0xda, 0x47, 0x40, 0x0c, 0x04, 0x15, 0x97, 0x98, 0x08,
  0x39, 0xa8, 0x92, 0x92, 0x04, 0x20, 0x7d, 0x15, 0x95, 0xc2, 0x28, 0x09,

  0x28, 0xd4, 0xfd, 0x46, 0x4d, 0x43, 0xea, 0x80, 0x93, 0xbb, 0x9d, 0xfd,
  0x22, 0xa7, 0xfb, 0x1f, 0xaa, 0xf9, 0xda, 0x16, 0xc5, 0xba, 0xd8, 0x9b,
  0xe2, 0x71, 0xfe, 0x88, 0x96, 0xcd, 0x5a, 0x5d, 0x00, 0xae, 0x95, 0x68,
  0x8c, 0x57, 0x6b, 0xba, 0xbd, 0x94, 0x2e, 0x6a, 0x79, 0xbc, 0xdf, 0x71,
  0xb9, 0xe5, 0xeb, 0x4c, 0xd5, 0xfc, 0x09, 0x3b, 0x3a, 0x0f, 0x6e, 0x6f,
  0xdf, 0x01, 0xdf, 0xbe, 0x87, 0xea, 0x49, 0x7c, 0xa4, 0xd8, 0x16, 0x88,
  0xd5, 0x9b, 0x35, 0xd7, 0xa3, 0xf4, 0xd8, 0x63, 0xc2, 0xf7, 0x2a, 0xc2,
  0xe7, 0xf3, 0x11, 0xc3, 0x8a, 0x99, 0xb8, 0x6a, 0x03, 0xf0, 0x59, 0xb5,

  0xa4, 0xcc, 0x69, 0xdb, 0x4a, 0xa3, 0xb5, 0x02, 0x8e, 0x82, 0xe0, 0xa6,
  0x34, 0x2a, 0xc5, 0x5d, 0x4c, 0x0b, 0xc4, 0xf0, 0xb1, 0x51, 0x64, 0xf9,
  0x52, 0xd7, 0xad, 0xa6, 0x6e, 0x83, 0x20, 0xb6, 0xc9, 0x28, 0x46, 0x2f,
  0x61, 0x0c, 0x5e, 0x46, 0x71, 0x35, 0xf8, 0x6f, 0x8a, 0x64, 0xeb, 0xeb,
  0xc7, 0x66, 0x27, 0xd5, 0xb1, 0x4d, 0x15, 0x4b, 0xf0, 0x37, 0x36, 0x67,
  0x4c, 0xc4, 0x9f, 0x51, 0x3a, 0x48, 0xe1, 0xc0, 0xf6, 0x23, 0x31, 0x65,

  0xd9, 0x24, 0x61, 0xd0, 0x36, 0x73, 0x1f, 0x61, 0x69, 0xd2, 0x48, 0xa1,
  0x5c, 0x16, 0x77, 0x54, 0xf5, 0x2a, 0xfd, 0xb7, 0x38, 0x35, 0xd8, 0x9e,
  0x87, 0x9c, 0x43, 0x40, 0xca, 0x3b, 0x33, 0xc4, 0xb4, 0xcd, 0x42, 0x90,
  0xb1, 0xa2, 0x6f, 0x78, 0x16, 0x66, 0x82, 0xc6, 0xd2, 0x41, 0x00, 0x14,
  0xd6, 0x62, 0xbd, 0x24, 0xfd, 0xbc, 0x24, 0xdc, 0xdc, 0xaa, 0x88, 0x47,
  0xf6, 0x2f, 0xbd, 0xb8, 0x1c, 0xa5, 0xa9, 0xf6, 0x73, 0xc2, 0xf8, 0x60,
  0x82, 0xe9, 0xb0, 0x41, 0x7c, 0x1c, 0x7b, 0x1e, 0xa6, 0x93, 0xca, 0x38,
  0x67, 0xf7, 0x2e, 0xe7, 0x9c, 0xc4, 0xdc, 0xea, 0x0f, 0x33, 0x58, 0xa8,
  0x34, 0x4e, 0x82, 0x87, 0xa1, 0x16, 0x57, 0x5a, 0x69, 0xd3, 0x62, 0xda,

  0x82, 0xf5, 0xbd, 0xed, 0x9a, 0xdf, 0xba, 0x09, 0x3d, 0x44, 0xa9, 0x2a,
  0x2b, 0x36, 0x25, 0xef, 0xef, 0x77, 0xdc, 0x67, 0x56, 0x45, 0xc3, 0x1b,
  0xa0, 0x48, 0x59, 0xde, 0x8b, 0x67, 0x8b, 0x60, 0x8a, 0xdb, 0x60, 0xa3,
  0xd6, 0xf0, 0xf2, 0xe8, 0xec, 0xf2, 0x9c, 0xf0, 0xf2, 0x10, 0x39, 0x3d,

  0x2b, 0x39, 0x4b, 0x01, 0x7f, 0x86, 0x09, 0xec, 0x19, 0xc3, 0x4a, 0x52,
  0xd2, 0xc8, 0xd8, 0x2f, 0xaf, 0xa6, 0xe6, 0x10, 0x64, 0x3e, 0x84, 0xec,
  0x2b, 0x4e, 0x6f, 0xcb, 0x22, 0xa7, 0xc0, 0x91, 0x19, 0xbc, 0xda, 0x17,
  0xcd, 0xe5, 0xc0, 0x57, 0xed, 0xb7, 0xb5, 0xcb, 0x82, 0x29, 0x44, 0xaa,

  0xbf, 0x6b, 0x00, 0x03, 0xf3, 0x48, 0xe0, 0x01, 0x3d, 0x7e, 0x5e, 0x25,
  0x06, 0x9b, 0x50, 0xec, 0x3a, 0x83, 0x85, 0xaa, 0x1d, 0xac, 0x38, 0x49,
  0x83, 0x80, 0x2b, 0xb4, 0x3e, 0xbe, 0x5c, 0x8d, 0x68, 0x00, 0x1b, 0x9b,
  0x2d, 0xb2, 0x26, 0xde, 0x96, 0x6c, 0x77, 0xd0, 0x08, 0xf5, 0xc0, 0xdf,
  0x56, 0xd6, 0x85, 0xe9, 0x54, 0xb1, 0x71, 0xd6, 0x8a, 0x03, 0x3e, 0xef,


  0xf2, 0x57, 0x87, 0x4b, 0xe4, 0x10, 0x8d, 0x2f, 0xc8, 0xf1, 0xb2, 0xd2,
  0xc4, 0x4f, 0xe0, 0xf7, 0xc4, 0xfd, 0xc5, 0x48, 0x4a, 0x58, 0xc3, 0x99,
  0xc4, 0x73, 0x50, 0x0b, 0x32, 0x2d, 0x14, 0x40, 0xcf, 0x2f, 0xe6, 0x73,


  0x36, 0x27, 0xbc, 0x8c, 0x85, 0x63, 0x29, 0x9c, 0x3d, 0x71, 0x81, 0x46,
  0xfd, 0x00, 0x7f, 0x06, 0x39, 0xa9, 0x3b, 0x7c, 0xa8, 0x26, 0x8c, 0x5e,
  0x37, 0xb8, 0x07, 0x12, 0xb7, 0xd1, 0xd6, 0x9f, 0x0c, 0x1c, 0xce, 0x43,
  0x98, 0xee, 0xdf, 0xd8, 0xb9, 0xea, 0x66, 0x99, 0xdd, 0xc2, 0x14, 0xfc,
  0x72, 0x68, 0x4d, 0xf6, 0xc5, 0xe6, 0x17, 0xdc, 0x32, 0x17, 0xff, 0xc2,
  0xfd, 0x97, 0xcd, 0x08, 0x88, 0x59, 0x7e, 0x87, 0x8e, 0x3c, 0x01, 0xf1,
  0x76, 0x94, 0xd3, 0xd0, 0xec, 0xc6, 0xe6, 0x7e, 0xc0, 0xac, 0xcc, 0x06,
  0x06, 0xd3, 0xd9, 0xf5, 0xa4, 0x6d, 0xb3, 0x79, 0xa0, 0x46, 0x47, 0xa4,
  0x48, 0x14, 0x5b, 0x01, 0xa4, 0xa8, 0x22, 0x49, 0x53, 0xbd, 0x3c, 0x76,
  0xb8, 0x24, 0xb2, 0x47, 0x93, 0x8d, 0xbe, 0x49, 0xd8, 0x2d, 0x4e, 0xf7,


  0xa9, 0xc0, 0x4c, 0xea, 0xb5, 0xf9, 0x6d, 0x74, 0xc0, 0x4a, 0x0a, 0x39,

  0xb2, 0x80, 0x08, 0x6c, 0x29, 0xbf, 0x64, 0xa2, 0x18, 0x9d, 0x0d, 0xfb,
  0xc2, 0xba, 0x8d, 0x29, 0x03, 0x7c, 0xcb, 0x96, 0x72, 0x25, 0x99, 0x21,
  0xb2, 0x79, 0x10, 0x78, 0xf6, 0x93, 0xef, 0x92, 0x5d, 0x88, 0xb3, 0x51,
  0xe6, 0x87, 0x8d, 0x4d, 0xca, 0x9e, 0xc5, 0x0d, 0xcf, 0x7d, 0x66, 0x78,
  0x5e, 0xe7, 0x85, 0x76, 0xa5, 0x5e, 0x1d, 0x75, 0xe0, 0x46, 0x3f, 0xc9,


  0x03, 0x71, 0x78, 0x4c, 0xb0, 0xbf, 0x3c, 0xf7, 0xab, 0xbc, 0xc5, 0xfd,
  0x37, 0xa4, 0xfa, 0xec, 0xa7, 0xb8, 0xa0, 0x31, 0xdd, 0xe5, 0x67, 0x2d,
  0xae, 0xad, 0x5f, 0xcf, 0x02, 0xd5, 0xa2, 0x12, 0x56, 0xe7, 0x73, 0xc0,

  0xcc, 0x63, 0x80, 0x42, 0x77, 0x9f, 0x86, 0x05, 0xe2, 0x27, 0x65, 0xc2,
  0xe9, 0x38, 0x88, 0xe0, 0x60, 0x4e, 0x56, 0xba, 0xc2, 0x4a, 0xc0, 0x02,
  0xcf, 0x42, 0xb1, 0x63, 0x4e, 0xdf, 0x00, 0x89, 0xa1, 0xaa, 0x8a, 0x3d,
  0xc2, 0xbf, 0x6e, 0x3b, 0xda, 0x78, 0x66, 0x73, 0x70, 0xd8, 0xbc, 0x47,
  0x78, 0x4c, 0x17, 0xd6, 0x0b, 0x71, 0xfe, 0xfa, 0x0e, 0xa9, 0x73, 0xb8,


  0x5d, 0x3b, 0xd0, 0xb4, 0xf4, 0xf9, 0x48, 0x08, 0xad, 0x8c, 0x50, 0xa5,

  0x6f, 0x96, 0x08, 0x00, 0x88, 0xe2, 0x8e, 0xbb, 0x46, 0x49, 0x63, 0xb3,
  0x22, 0xc1, 0x39, 0xd7, 0x27, 0xec, 0x01, 0xd5, 0xb1, 0x13, 0xbb, 0x4c,

  0xe0, 0x1a, 0x72, 0x9d, 0xd0, 0xb0, 0xc8, 0x6f, 0x13, 0xa6, 0x39, 0x32,


  0x2c, 0x08, 0x79, 0x89, 0xf5, 0x28, 0xf1, 0xc5, 0x02, 0x97, 0xe3, 0xa6,

  0x10, 0x98, 0xaf, 0xe0, 0x05, 0x5d, 0xb9, 0x43, 0xa5, 0x40, 0x36, 0x58,
  0x5e, 0x98, 0xd2, 0xeb, 0x04, 0x96, 0xa0, 0x7d, 0x1c, 0xf8, 0xb8, 0x46,
  0x08, 0xf4, 0x16, 0xbe, 0xf7, 0x86, 0x0e, 0x90, 0x9c, 0x57, 0x5c, 0x7d,
  0xf7, 0xe6, 0x8b, 0x83, 0xa6, 0xfd, 0xde, 0x9b, 0x53, 0x77, 0xef, 0x7d,
  0xe0, 0x44, 0x9f, 0xdf, 0x78, 0x12, 0x68, 0x89, 0x1c, 0x60, 0xd1, 0x21,
  0x10, 0x15, 0xbb, 0xc2, 0x30, 0x94, 0xd5, 0xf4, 0x72, 0x51, 0x03, 0xd5,
  0x9e, 0x5a, 0x1c, 0x63, 0x4e, 0xe3, 0x21, 0x6b, 0x0d, 0xb5, 0x70, 0xae,

  0x6a, 0x18, 0x5b, 0xf0, 0x57, 0x69, 0xa0, 0xd0, 0x65, 0x15, 0xc9, 0x07,
  0x54, 0xa5, 0x32, 0x30, 0xe3, 0xbf, 0xe1, 0x1a, 0x58, 0xd2, 0xc1, 0xf1,
  0x78, 0x08, 0xb4, 0x27, 0x2d, 0xad, 0x92, 0xf9, 0x6f, 0x98, 0x06, 0x0c,
  0x1a, 0x6d, 0x85, 0x79, 0x60, 0xf4, 0x2d, 0x4f, 0xe5, 0xe4, 0x66, 0x82,
  0xa6, 0x4e, 0x84, 0x8b, 0xbc, 0x0d, 0x26, 0x0d, 0xc2, 0x8f, 0xbb, 0x9a,
  0x01, 0x77, 0x77, 0x88, 0x4e, 0xd0, 0x5a, 0x09, 0x18, 0x82, 0xec, 0xb0,
  0x48, 0x4d, 0x95, 0x5d, 0x2a, 0xe0, 0xf0, 0x9c, 0xb4, 0x25, 0x86, 0x75,
  0xac, 0xd9, 0x58, 0xbc, 0x78, 0x17, 0x2b, 0x2f, 0xd0, 0xf0, 0x80, 0x13,
  0x9e, 0xc4, 0x3a, 0xd3, 0x1f, 0x98, 0x2e, 0x82, 0xb5, 0x6c, 0x19, 0x36,
  0x50, 0xc4, 0x62, 0x0d, 0xb4, 0x02, 0xa4, 0xa9, 0x44, 0xce, 0x63, 0xee,
  0x2b, 0x07, 0x9f, 0x6f, 0x75, 0xc5, 0xa6, 0xc1, 0x28, 0x97, 0xfb, 0x0c,
  0xa1, 0xd2, 0xfa, 0x5a, 0x04, 0x3e, 0x06, 0x3f, 0x35, 0x4f, 0xb6, 0x20,
  0xb0, 0xbf, 0xec, 0xef, 0xef, 0x62, 0xa8, 0x3b, 0xec, 0x4a, 0x62, 0x76,
  0xe7, 0x3a, 0x0f, 0x8c, 0xf7, 0xa0, 0x0c, 0x65, 0x7b, 0x3a, 0x77, 0xcb,
  0x9c, 0xc6, 0xa9, 0x84, 0x49, 0xd7, 0xa8, 0xe1, 0x60, 0xd0, 0x11, 0x31,
  0x4e, 0xcb, 0x80, 0xef, 0x82, 0x13, 0xd8, 0x84, 0xe0, 0x4c, 0x1f, 0x48,
  0xea, 0x82, 0xc5, 0xa4, 0x4d, 0xa7, 0x08, 0x17, 0xa6, 0x43, 0x4d, 0x6c,
  0x74, 0xd6, 0xb0, 0xfb, 0x2b, 0xef, 0xc9, 0xab, 0xfe, 0x5e, 0xed, 0x9e,
  0x54, 0xb3, 0x79, 0xef, 0x7e, 0xf8, 0x44, 0xc8, 0xe3, 0xfa, 0xec, 0x3d,
  0xa5, 0x7c, 0x28, 0xbb, 0xa1, 0x4e, 0x2c, 0xea, 0x7d, 0x46, 0xbf, 0x0e,
  0xbb, 0x08, 0x11, 0xa1, 0x9b, 0x26, 0xf2, 0x9c, 0xcc, 0x5a, 0x53, 0x33,
  0x2a, 0xe6, 0xbe, 0x42, 0xde, 0xc1, 0x90, 0xec, 0xc6, 0x5e, 0x2c, 0x66,
  0x69, 0xb0, 0xb0, 0x47, 0x33, 0x6b, 0x93, 0x87, 0x64, 0xb4, 0xa4, 0xf0,
  0x34, 0x2a, 0x87, 0x88, 0x21, 0xb5, 0xda, 0x6f, 0xee, 0xf8, 0xca, 0xc5,
  0x3b, 0x0e, 0x3f, 0x68, 0x6e, 0x46, 0x73, 0xed, 0xbc, 0x78, 0xcf, 0x69,
  0xc6, 0xf5, 0xed, 0xa1, 0xdf, 0x79, 0x21, 0x62, 0xca, 0xe7, 0x47, 0x81,
  0x08, 0x24, 0x95, 0x4e, 0x33, 0x56, 0x39, 0xde, 0xa7, 0xa3, 0x22, 0x2f,
  0xf3, 0x09, 0x67, 0xaa, 0x39, 0xe6, 0xd1, 0xe9, 0xe9, 0x20, 0xba, 0x4f,
  0x86, 0x5a, 0x12, 0xdb, 0xf7, 0x7d, 0xc8, 0xc4, 0x43, 0x30, 0x30, 0x52,
  0xa4, 0x49, 0x85, 0x5b, 0xa6, 0xa1, 0x50, 0x84, 0x88, 0xa2, 0xbe, 0x74,
  0x02, 0xa0, 0x42, 0xea, 0x3b, 0xb6, 0xf6, 0x9c, 0xb1, 0x60, 0x5a, 0x24,
  0x79, 0x20, 0x1e, 0xce, 0x13, 0x50, 0xb1, 0xc2, 0x74, 0x42, 0x32, 0x7c,
  0x18, 0x4b, 0xd7, 0x34, 0xf6, 0x0c, 0x00, 0xdb, 0x41, 0x0d, 0x45, 0x3c,
  0x2a, 0xb7, 0xe8, 0x2a, 0xf3, 0x6a, 0x55, 0x86, 0x09, 0xf6, 0x19, 0xc5,
  0x28, 0x7f, 0xdd, 0x69, 0x97, 0x8d, 0xf3, 0x82, 0x32, 0x90, 0x9c, 0x7e,
  0x46, 0xd4, 0xf9, 0x73, 0x59, 0x50, 0xd1, 0x15, 0xc1, 0x97, 0xfa, 0xfc,
  0xf4, 0xfe, 0x86, 0xc3, 0xb5, 0x7a, 0x0a, 0x28, 0x9c, 0xa8, 0xca, 0x96,
  0x4b, 0x7b, 0xa4, 0x6b, 0x06, 0xce, 0xdf, 0x8a, 0x1b, 0xe7, 0x34, 0x82,
  0x50, 0x87, 0x72, 0x1e, 0xb6, 0xa4, 0x54, 0x72, 0x14, 0xde, 0xa4, 0xd3,
  0x96, 0xf6, 0xb6, 0x06, 0xdc, 0x81, 0x84, 0x13, 0xdd, 0x58, 0x9a, 0x8d,
  0x88, 0xcc, 0x82, 0xef, 0x68, 0xe4, 0xf5, 0x6c, 0xa6, 0xaa, 0x27, 0xdf,
  0x01, 0xdb, 0x42, 0x7d, 0x6d, 0x98, 0x18, 0x8e, 0xde, 0xd8, 0x88, 0x27,
  0x91, 0x64, 0xa9, 0x4c, 0xd3, 0x4d, 0x54, 0x60, 0x7e, 0x61, 0x28, 0xa9,
  0x3e, 0x15, 0x73, 0x03, 0xac, 0xd2, 0x57, 0xd7, 0xfa, 0x54, 0xcb, 0xf3,
  0x00, 0x28, 0x1c, 0x57, 0x41, 0x58, 0xe9, 0x6b, 0x03, 0xce, 0xa7, 0x48,

  0x56, 0x20, 0x1f, 0xc5, 0x09, 0xc6, 0xca, 0xbf, 0xc7, 0x74, 0x3c, 0xf5,
  0x48, 0x97, 0x7b, 0x75, 0x73, 0xfc, 0xc1, 0x4e, 0x6f, 0x98, 0xc4, 0xd8,
  0x61, 0xe9, 0xb0, 0x42, 0x85, 0x29, 0x5c, 0x99, 0xd2, 0x52, 0x98, 0xf2,
  0x35, 0xbf, 0x79, 0x4d, 0x9a, 0x16, 0x1e, 0xed, 0xc5, 0xd1, 0x87, 0xeb,
  0x77, 0x51, 0xb4, 0x83, 0x5d, 0x22, 0x9e, 0x53, 0x99, 0x42, 0x1c, 0xa1,
  0x36, 0x8a, 0xde, 0x6a, 0x6a, 0xd4, 0x9c, 0xfd, 0x75, 0x99, 0xd5, 0x1b,
  0xb8, 0x84, 0x7c, 0xf3, 0x24, 0x3f, 0x45, 0xf4, 0x72, 0x99, 0x74, 0x2d,
  0xb3, 0x5a, 0xdb, 0x7b, 0xf1, 0x89, 0xf4, 0x7a, 0x5c, 0x3d, 0x07, 0x57,
  0xfb, 0x89, 0x30, 0x66, 0x19, 0x86, 0xe7, 0x90, 0xd9, 0xca, 0x74, 0x15,
  0x3f, 0x48, 0xe3, 0xa5, 0xd4, 0x4f, 0x09, 0x1d, 0xfc, 0x55, 0xb3, 0x3d,
  0xef, 0xd5, 0xdb, 0xe3, 0xc6, 0x70, 0x2f, 0x5e, 0xee, 0x6f, 0x7d, 0xc2,
  0x24, 0xbd, 0x1c, 0xbd, 0x23, 0xe2, 0x45, 0x08, 0xa2, 0xe6, 0x7c, 0x5f,
  0x60, 0xd9, 0xaa, 0xfa, 0x19, 0x72, 0x79, 0xc8, 0x2d, 0xab, 0x2f, 0xab,
  0x31, 0x66, 0x6b, 0x19, 0xd4, 0x8d, 0x42, 0xd5, 0xfd, 0x7f, 0xfc, 0xd3,
  0x2f, 0xab, 0xfd, 0xf1, 0x67, 0xf6, 0x13, 0x4f, 0xa8, 0xa9, 0xa5, 0x4d,
  0xf4, 0x57, 0x36, 0x53, 0x5a, 0x89, 0x8c, 0x37, 0x7a, 0xed, 0x8f, 0x6b,
  0xa6, 0xf5, 0x14, 0xe9, 0xfc, 0x61, 0xdc, 0x7e, 0x11, 0x9e, 0x32, 0x37,
  0x3d, 0x58, 0x02, 0x25, 0x8f, 0x1d, 0x75, 0x40, 0xa1, 0xa9, 0x4c, 0x67,
  0xbe, 0x71, 0x5b, 0xe3, 0x38, 0xed, 0xa0, 0x24, 0xf0, 0x5d, 0xea, 0x26,
  0x47, 0x77, 0x36, 0xe7, 0x56, 0xd1, 0xfc, 0x51, 0x15, 0xa5, 0xf2, 0xe5,
  0x34, 0x6b, 0xf1, 0x5d, 0x4a, 0x02, 0xd1, 0x3f, 0xe0, 0x04, 0xba, 0xd5,
  0x7d, 0xfe, 0xcf, 0xba, 0x1f, 0x13, 0x34, 0x0c, 0x9c, 0xf1, 0xc7, 0x3f,
  0x6e, 0x63, 0x45, 0x50, 0xa7, 0x39, 0x44, 0x4e, 0x0d, 0x09, 0xcc, 0xa9,
  0x1a, 0x05, 0x69, 0x15, 0x38, 0xaf, 0x7e, 0x10, 0x8b, 0x8d, 0xbb, 0xa8,
  0x37, 0xfe, 0xb3, 0x8f, 0xff, 0xfd, 0x71, 0xbb, 0xb7, 0xff, 0xb3, 0xf9,
  0xe8, 0x1f, 0xb7, 0x3f, 0xfe, 0x71, 0xa7, 0x13, 0x2c, 0xab, 0xb3, 0xb5,
  0xff, 0x4e, 0x86, 0x22, 0xaa, 0xb3, 0xd9, 0xa3, 0x94, 0x69, 0x48, 0x84,
  0xd1, 0xf6, 0xba, 0xa4, 0xce, 0xd9, 0x3e, 0x3e, 0x12, 0xfa, 0xad, 0x1a,
  0x9a, 0xaa, 0x36, 0xbb, 0x54, 0xe6, 0x70, 0x9f, 0xf3, 0xcb, 0xe2, 0x53,
  0xe1, 0xfa, 0x3f, 0xad, 0x1f, 0xf0, 0x78, 0x21, 0x42, 0x31, 0xb9, 0xb4,
  0x81, 0x68, 0x29, 0x0a, 0xb1, 0xe1, 0xef, 0x86, 0xa4, 0x45, 0x81, 0x34,
  0x8b, 0xa3, 0xc6, 0xa6, 0x0f, 0x87, 0xe6, 0x27, 0x59, 0xe2, 0x15, 0x62,
  0xc5, 0x8c, 0x11, 0x95, 0x08, 0xd8, 0x5d, 0x64, 0xb8, 0x02, 0xbc, 0x69,
  0xc2, 0xd6, 0x12, 0xcd, 0xa2, 0xd9, 0xdb, 0x9e, 0xe9, 0xd8, 0xba, 0xbb,
  0xc9, 0x2d, 0xfe, 0xba, 0xd4, 0x86, 0xf6, 0x56, 0xa0, 0xc0, 0x48, 0x69,
  0x69, 0x63, 0x2f, 0xf4, 0x33, 0x89, 0xbb, 0x50, 0x7d, 0x3f, 0xc9, 0xb8,
  0x32, 0x0f, 0x45, 0xf2, 0xe2, 0x21, 0x76, 0xa2, 0xac, 0x35, 0xf6, 0x32,
  0x5d, 0x9a, 0x86, 0x16, 0x6d, 0x2a, 0x2e, 0x5b, 0x36, 0xc4, 0xdd, 0x0a,
  0x67, 0x13, 0x64, 0xa3, 0x68, 0x73, 0x56, 0x38, 0x75, 0xb9, 0x28, 0x16,
  0xb3, 0x47, 0xab, 0xa4, 0xe7, 0x54, 0xc5, 0x52, 0x15, 0x2e, 0xfd, 0xd4,
  0xc9, 0x70, 0x93, 0xb0, 0x5e, 0xcf, 0x8b, 0x45, 0x02, 0x11, 0x8d, 0x1f,
  0x81, 0x13, 0x32, 0xb0, 0xab, 0xc1, 0x89, 0x54, 0x0f, 0x81, 0xf0, 0x1a,
  0xa0, 0xb3, 0xb5, 0xde, 0x5a, 0xb4, 0x4e, 0x95, 0xf3, 0x64, 0xd6, 0x45,

  0xe3, 0xb8, 0xbc, 0xd9, 0x08, 0x79, 0x21, 0xad, 0xe3, 0xcf, 0x32, 0x2a,
  0xe9, 0xcc, 0x41, 0x12, 0x93, 0x39, 0xd4, 0x2a, 0x6f, 0xf5, 0x05, 0x83,
  0x6a, 0x60, 0x92, 0x60, 0xcf, 0x44, 0x92, 0x6b, 0x3f, 0xe9, 0xa1, 0xb1,
  0x48, 0x3f, 0xfd, 0x0f, 0x7e, 0xd6, 0x8b, 0x63, 0xe0, 0x93, 0x9c, 0xe5,
  0xd5, 0xe3, 0x02, 0x28, 0x2b, 0x44, 0xb5, 0x97, 0x37, 0xe6, 0x43, 0x87,
  0x52, 0x80, 0xe2, 0xf2, 0x96, 0x03, 0xa5, 0xe3, 0xdc, 0xf4, 0xfd, 0xb6,
  0x7e, 0x94, 0xae, 0x30, 0xd4, 0xde, 0xff, 0xec, 0x3a, 0x63, 0x09, 0x3e,

  0x4a, 0x38, 0x05, 0x08, 0xcd, 0xcb, 0x22, 0x9f, 0x95, 0x35, 0x68, 0x2d,
  0xa9, 0x84, 0x46, 0xef, 0xb6, 0x71, 0xd1, 0xf0, 0x37, 0xcb, 0x14, 0x39,
  0x71, 0x9c, 0x05, 0x52, 0x8c, 0xcb, 0x40, 0x04, 0x08, 0x65, 0x9c, 0x76,
  0xbc, 0x06, 0x4a, 0x0e, 0x48, 0x28, 0x6b, 0x1c, 0xd4, 0xe6, 0xbc, 0xaa,
  0x3d, 0x45, 0xed, 0xc1, 0xf6, 0x5c, 0x02, 0xa9, 0x42, 0xa2, 0x7a, 0x76,
  0xbb, 0x0c, 0xa7, 0x5f, 0x3a, 0x52, 0x0e, 0x46, 0xca, 0xe3, 0x82, 0xb7,
  0x34, 0x14, 0x0f, 0x4f, 0xa6, 0x08, 0xf5, 0x82, 0xda, 0x07, 0x56, 0xbb,
  0xc3, 0x5d, 0xca, 0x9e, 0x68, 0xdd, 0xdc, 0x70, 0x82, 0x60, 0x3c, 0x36,
  0x3a, 0x5c, 0xdc, 0x14, 0xa0, 0xc9, 0xfb, 0x75, 0x73, 0x83, 0x77, 0x11,
  0xe3, 0xa2, 0xc2, 0x53, 0xfc, 0x8c, 0xb9, 0xec, 0x0e, 0x74, 0xe4, 0x27,
  0xc4, 0x3b, 0xc4, 0x84, 0xa0, 0x5e, 0x5c, 0xf6, 0x3c, 0xea, 0xb8, 0xb6,
  0x05, 0xd3, 0x1c, 0x0f, 0xca, 0xd9, 0xb6, 0xc4, 0x5c, 0x54, 0x0c, 0x91,
  0x66, 0x88, 0xa9, 0x03, 0xf4, 0xb1, 0xd9, 0xef, 0x6f, 0xa2, 0xfc, 0xd9,

  0x84, 0x3f, 0x52, 0xa7, 0x41, 0x4c, 0xb3, 0x0b, 0x21, 0x30, 0x2d, 0xfc,
  0x16, 0xfa, 0xf3, 0xa4, 0x63, 0xaf, 0xd3, 0xd5, 0xed, 0x6f, 0x4b, 0x4a,
  0x25, 0x2e, 0xc0, 0x32, 0x28, 0xb8, 0x26, 0x1b, 0xd1, 0xee, 0x8d, 0xba,
  0x13, 0x48, 0x2a, 0x94, 0x10, 0x49, 0x29, 0xf8, 0x1f, 0x8d, 0x7e, 0x96,
  0x68, 0xa2, 0x93, 0x27, 0x0d, 0x17, 0x91, 0x56, 0x8a, 0xba, 0x46, 0xf5,

  0xf0, 0xf1, 0x4a, 0xdb, 0x7c, 0x6f, 0xa7, 0x71, 0x7c, 0x29, 0x1c, 0xf8,
  0x18, 0xac, 0x1c, 0x02, 0x6b, 0xc5, 0x6c, 0x4a, 0xbf, 0x1e, 0x4b, 0x1c,
  0xa3, 0x1c, 0x48, 0x6f, 0xc2, 0xcf, 0xb1, 0xb8, 0x32, 0x0a, 0xa4, 0xd3,
  0x66, 0x50, 0x72, 0xc7, 0x3d, 0xc5, 0x87, 0x3f, 0x42, 0xf9, 0x58, 0x92,
  0x6d, 0x4d, 0xe4, 0x90, 0x98, 0xd6, 0x29, 0xa2, 0x95, 0xc6, 0x9c, 0xcd,


  0x45, 0x66, 0x98, 0xa4, 0x77, 0x84, 0x3c, 0x58, 0xc6, 0x7d, 0x64, 0x9c,
  0x5e, 0xce, 0x14, 0x60, 0xcd, 0x88, 0x77, 0x0b, 0x3b, 0xff, 0xe6, 0xe4,
  0x4a, 0x54, 0x4d, 0x72, 0x26, 0xd9, 0x26, 0xd5, 0x7e, 0x0f, 0x77, 0x34,
  0x4a, 0x5f, 0xec, 0x91, 0xed, 0x88, 0xfb, 0x56, 0xde, 0xc4, 0x3b, 0xfb,
  0x2f, 0x64, 0xda, 0x8a, 0x7e, 0x46, 0x3a, 0xd8, 0x1a, 0xff, 0x6a, 0x73,
  0x93, 0x13, 0x1f, 0xd0, 0xcd, 0xe0, 0xf1, 0x78, 0xf2, 0xf9, 0xe1, 0xb3,

  0x5f, 0xac, 0x85, 0x53, 0x1e, 0xd5, 0x0a, 0xd1, 0x56, 0xc9, 0xd4, 0xab,
  0x8d, 0x52, 0x33, 0xdd, 0x46, 0x1b, 0xdd, 0x5a, 0x1b, 0x35, 0xaa, 0x43,
  0x8a, 0x57, 0xf4, 0x9f, 0x10, 0xbc, 0x10, 0x6a, 0xf4, 0x0a, 0xdc, 0x41,
  0xeb, 0x8a, 0x11, 0x87, 0xd5, 0xd9, 0x1d, 0xce, 0x66, 0xc4, 0x06, 0xdd,
  0x23, 0x1f, 0x94, 0x86, 0xeb, 0x75, 0x88, 0xea, 0xdc, 0x91, 0x25, 0x91,
  0x17, 0x91, 0xcc, 0x11, 0xa7, 0x11, 0x29, 0x4f, 0x03, 0x68, 0xec, 0x5e,
  0xa3, 0xc3, 0x5c, 0x0e, 0xbd, 0x8c, 0x13, 0xf9, 0xa6, 0xc1, 0x4d, 0x25,
  0xdf, 0x8c, 0x93, 0xe7, 0x69, 0xaf, 0x0b, 0x48, 0xf6, 0x82, 0x95, 0x04,
  0x67, 0x03, 0x3c, 0x2f, 0x00, 0xe1, 0x74, 0x2b, 0x1c, 0x0e, 0x25, 0xfa,
  0x8d, 0x92, 0x94, 0x81, 0xb4, 0xe0, 0x6c, 0x31, 0x82, 0xe7, 0xdd, 0x03,
  0x20, 0x85, 0x4d, 0xa4, 0x03, 0xb1, 0x1b, 0xbd, 0x86, 0x18, 0x18, 0x2f,
  0x78, 0xd5, 0xdf, 0x3a, 0x50, 0x88, 0xdd, 0x6e, 0xf4, 0x4d, 0xb6, 0xc4,
  0xf3, 0xc0, 0x45, 0x7f, 0x33, 0xf8, 0xd6, 0x2b, 0x96, 0xc3, 0x37, 0xf6,
  0x76, 0xf1, 0x8d, 0xf3, 0x01, 0x3f, 0x75, 0x9f, 0xcf, 0x26, 0xf0, 0x66,
  0xe8, 0xb9, 0x97, 0xf8, 0x1c, 0x50, 0xdc, 0xb8, 0x9a, 0x95, 0x4a, 0x54,
  0x2b, 0x66, 0xb2, 0xb7, 0x17, 0x98, 0x49, 0xf7, 0x17, 0x7f, 0xe8, 0x82,
  0x5c, 0xae, 0x48, 0x4c, 0xd8, 0x47, 0x8a, 0x08, 0x87, 0xca, 0x08, 0x0c,
  0x60, 0xf4, 0xa7, 0x64, 0xbe, 0x0c, 0xfc, 0xf0, 0x9c, 0x2e, 0x73, 0x05,
  0xe1, 0xde, 0x55, 0x84, 0x27, 0xf0, 0x72, 0x67, 0x77, 0x7b, 0xf3, 0x45,
  0x7f, 0xaf, 0xbf, 0x63, 0xd2, 0xfa, 0x80, 0x0e, 0xee, 0xb0, 0x0b, 0x0a,
  0x66, 0x51, 0x04, 0x42, 0x0f, 0x94, 0xd0, 0x92, 0x66, 0x30, 0x8e, 0x03,
  0x73, 0x21, 0x68, 0xf5, 0x36, 0xa1, 0x07, 0x41, 0x2d, 0xb6, 0xdd, 0xfa,
  0xb0, 0x7e, 0xa0, 0xeb, 0x2a, 0x62, 0x65, 0x50, 0x61, 0x8b, 0xf8, 0x99,
  0x30, 0xc3, 0x99, 0xdc, 0x23, 0xc3, 0xf4, 0x6f, 0xcb, 0xb4, 0x02, 0x2d,
  0x00, 0x99, 0x0a, 0x7a, 0xcf, 0x14, 0x36, 0x9f, 0x20, 0xc3, 0x68, 0x1d,
  0x78, 0x23, 0x02, 0x6e, 0x49, 0x9e, 0x3c, 0xe5, 0x4f, 0xdb, 0x40, 0x20,
  0xd7, 0xa0, 0xa5, 0xc4, 0xbb, 0x22, 0x6e, 0x57, 0x03, 0x76, 0x64, 0x36,
  0xa2, 0x2e, 0x88, 0x60, 0xe4, 0xdd, 0xa1, 0xc7, 0xde, 0xef, 0x4e, 0x2b,
  0xdd, 0x6a, 0x08, 0x36, 0x42, 0x83, 0x2e, 0x9a, 0x5d, 0x62, 0xb1, 0xed,
  0xe5, 0x07, 0x5c, 0xaf, 0xc2, 0xde, 0x27, 0x5a, 0xb7, 0xc7, 0x9d, 0xec,
  0x3e, 0xd4, 0x4e, 0x5c, 0x50, 0xe1, 0xb1, 0x5e, 0x8c, 0x63, 0x0b, 0x0c,
  0xe5, 0x47, 0x2c, 0x0a, 0x0b, 0xff, 0x56, 0xa0, 0xd2, 0xac, 0xce, 0x84,

  0x50, 0xfc, 0x8f, 0x3a, 0x00, 0x08, 0xff, 0xab, 0xd1, 0x2b, 0xb9, 0xb5,
  0x4d, 0x66, 0xb3, 0x99, 0xac, 0x8c, 0xf9, 0xab, 0xa9, 0x6c, 0xf7, 0xb7,
  0xa7, 0xb2, 0x9d, 0xe7, 0x52, 0x99, 0x25, 0x32, 0xbc, 0x67, 0x2b, 0x48,
  0x8c, 0x8c, 0x20, 0x16, 0xbd, 0x2d, 0x54, 0xe6, 0x92, 0x99, 0xe4, 0xde,
  0xf8, 0x84, 0x56, 0xa3, 0x33, 0x43, 0x66, 0x2d, 0x54, 0xc6, 0x18, 0x61,
  0x4c, 0x63, 0xab, 0x49, 0x4c, 0xcb, 0xd1, 0xa3, 0xd5, 0x54, 0x56, 0xcf,
  0xf8, 0x5e, 0x4d, 0x67, 0x96, 0x1c, 0x9e, 0x4d, 0x65, 0xda, 0x95, 0x88,
  0xb9, 0x4e, 0x0b, 0x89, 0xd5, 0x68, 0x4c, 0x88, 0x2c, 0x48, 0x65, 0xaf,
  0x42, 0x54, 0xb6, 0xfb, 0x1c, 0x2a, 0x83, 0x03, 0x9d, 0xa1, 0xa8, 0xac,
  0x51, 0xd9, 0xde, 0x6f, 0x4b, 0x65, 0x88, 0x51, 0xd4, 0xac, 0x75, 0x8d,
  0x8e, 0xfe, 0xd5, 0x73, 0x8c, 0x69, 0x58, 0x1d, 0xd5, 0x2b, 0x01, 0xfd,
  0x65, 0x9c, 0xa2, 0x71, 0xa1, 0x9f, 0x3c, 0xb1, 0x3a, 0x2a, 0xd0, 0xf6,

  0x2f, 0x3e, 0xb1, 0x9d, 0xa6, 0x65, 0x52, 0x24, 0xec, 0x35, 0xff, 0x51,
  0x83, 0x17, 0x07, 0x9b, 0x9b, 0x3f, 0x93, 0x0f, 0xe8, 0x00, 0x65, 0xdf,
  0xcf, 0x5e, 0x23, 0xf1, 0x80, 0x3a, 0x3b, 0xb8, 0x38, 0xfe, 0x76, 0x20,
  0xde, 0x77, 0xd1, 0x39, 0x54, 0x27, 0x61, 0x3f, 0x25, 0xe8, 0xaa, 0x54,
  0xbd, 0xed, 0xa9, 0xb9, 0xdc, 0xca, 0xb6, 0xf7, 0xd0, 0x55, 0x0f, 0x38,
  0xa5, 0x4d, 0x09, 0x33, 0x26, 0x90, 0x3a, 0xa9, 0x8b, 0xe6, 0x32, 0x0d,
  0x19, 0x55, 0x1a, 0xa5, 0xfb, 0x86, 0x1a, 0x4f, 0xc4, 0xc4, 0x01, 0xc4,
  0x35, 0x93, 0x39, 0x2f, 0xae, 0x57, 0x37, 0x05, 0x15, 0xa6, 0xd0, 0xa3,

  0x1b, 0x1a, 0xfc, 0x5a, 0x35, 0x3b, 0x99, 0xd7, 0x3b, 0x02, 0xf3, 0x5d,
  0x14, 0x1a, 0x50, 0x0c, 0x19, 0xb9, 0xe6, 0xb7, 0xea, 0x09, 0x0c, 0x81,




  0x56, 0x08, 0x38, 0x9d, 0xb3, 0xdf, 0xf8, 0x9e, 0x97, 0x02, 0x98, 0x3e,
  0xd4, 0x30, 0x72, 0x50, 0x3c, 0x50, 0x0f, 0xe8, 0x4a, 0xdb, 0xac, 0x3c,
  0x70, 0x53, 0x0c, 0x1a, 0x84, 0x13, 0xb0, 0x12, 0x6a, 0x64, 0x52, 0xee,


  0xc1, 0x90, 0x4d, 0xbf, 0x12, 0xff, 0x22, 0xc6, 0xdf, 0xf0, 0xdf, 0xf7,
  0xf1, 0xbb, 0xe8, 0xb1, 0xe6, 0x7f, 0xdd, 0xe0, 0x3f, 0xe9, 0x7b, 0x8a,
  0x7f, 0x55, 0x3b, 0xe5, 0x51, 0x78, 0xa3, 0xdd, 0x8a, 0x27, 0x83, 0xcd,
  0x70, 0x9e, 0xdb, 0x9a, 0x40, 0x77, 0xd5, 0x2e, 0x8c, 0x9e, 0x97, 0xb6,
  0x62, 0xb8, 0x30, 0x8d, 0xbc, 0x17, 0x56, 0xb8, 0x12, 0x17, 0x24, 0x53,
  0x51, 0x0f, 0xdc, 0xd6, 0x67, 0x36, 0xde, 0x2b, 0x07, 0xc0, 0x8d, 0x42,
  0x03, 0x28, 0xd6, 0xdc, 0xd8, 0x43, 0xe6, 0xbd, 0xbd, 0xf5, 0xb9, 0xef,


  0x92, 0xf8, 0xa0, 0x15, 0x79, 0x16, 0x29, 0x92, 0xd2, 0x3a, 0x28, 0x37,
  0x7e, 0x68, 0xeb, 0x50, 0x42, 0x9f, 0x0d, 0x14, 0xed, 0xa1, 0xed, 0x3b,
  0x4e, 0xd8, 0x58, 0x1a, 0xb2, 0xdd, 0xeb, 0xe7, 0x44, 0x53, 0x0d, 0x72,
  0x49, 0x92, 0x4d, 0x10, 0x8e, 0x23, 0xc9, 0x4d, 0xf0, 0xf8, 0x3b, 0x7a,
  0x31, 0x34, 0x64, 0xf6, 0x95, 0xc5, 0xa1, 0xfb, 0xd3, 0xde, 0x16, 0x9e,


  0xaa, 0x8e, 0x82, 0xcd, 0x7d, 0x66, 0x1a, 0xea, 0xf8, 0xd3, 0x6e, 0xdc,
  0xff, 0x1d, 0x71, 0xa4, 0xf6, 0xeb, 0x56, 0xf4, 0x1f, 0xe5, 0x8e, 0x4f,
  0x11, 0xec, 0xa6, 0x37, 0x8c, 0x8b, 0x80, 0xcf, 0x46, 0x34, 0x44, 0xc5,
  0x48, 0x51, 0x84, 0x11, 0x7d, 0x8b, 0x5b, 0x5b, 0x48, 0x4e, 0xbf, 0xf9,
  0x21, 0x0c, 0x15, 0xf9, 0xdd, 0x32, 0x4c, 0xbc, 0xc1, 0x6d, 0x7c, 0xdd,
  0x65, 0x64, 0x2f, 0x07, 0xd8, 0x2b, 0x9e, 0x75, 0x31, 0x12, 0x19, 0x70,
  0xe7, 0xd0, 0xd9, 0xd4, 0x3e, 0x32, 0x2e, 0xe2, 0x7b, 0xc7, 0x82, 0x66,
  0x64, 0xfd, 0x09, 0x05, 0x1d, 0x6c, 0x06, 0x09, 0xa6, 0x7c, 0x63, 0x44,
  0x39, 0xa4, 0x7d, 0x94, 0xa3, 0x02, 0xdb, 0x20, 0x49, 0xb7, 0x07, 0x1a,
  0x6b, 0x81, 0xe8, 0x86, 0xa0, 0x76, 0x4c, 0x13, 0xad, 0xfc, 0x34, 0xab,
  0x56, 0x68, 0x0f, 0xc2, 0xf3, 0xe8, 0x07, 0x92, 0xaa, 0xad, 0x3b, 0x4b,
  0x3b, 0x91, 0xc7, 0x02, 0xfe, 0x81, 0xaf, 0x6a, 0x0d, 0xae, 0x13, 0xc6,
  0x28, 0x17, 0xd8, 0x84, 0x0f, 0xbe, 0x9d, 0x2e, 0x9a, 0x22, 0xba, 0xf7,
  0x3a, 0x7f, 0xdd, 0xdb, 0x30, 0x80, 0x6b, 0xf9, 0x5d, 0x52, 0x72, 0x4f,

  0x5d, 0x9c, 0x2c, 0xc6, 0x9b, 0x6f, 0xc8, 0xc9, 0x22, 0xe2, 0x8b, 0x0a,
  0x4e, 0x29, 0x81, 0x54, 0x60, 0xb5, 0xbc, 0xf6, 0x30, 0x3c, 0xb3, 0x02,


  0x43, 0xcd, 0xc2, 0xef, 0xd0, 0x1d, 0x03, 0xbb, 0x35, 0xe1, 0xfc, 0x34,
  0x2a, 0x49, 0xc5, 0x28, 0xbc, 0xe0, 0x40, 0xb3, 0x57, 0x3f, 0x5f, 0xd4,
  0x65, 0x13, 0x56, 0x37, 0x2b, 0x6f, 0x38, 0x54, 0xa6, 0xf2, 0xe5, 0x93,
  0xb5, 0x0b, 0x86, 0xfd, 0x4c, 0xc4, 0x89, 0x81, 0x97, 0x8f, 0x6a, 0x59,
  0x18, 0x41, 0x7a, 0x74, 0x93, 0xcc, 0xa5, 0x8d, 0x4e, 0x4b, 0x25, 0x78,
  0x6b, 0xd9, 0x74, 0x7d, 0x4e, 0x9c, 0xdc, 0x37, 0xa9, 0x16, 0xfd, 0x79,
  0xfe, 0x77, 0xd8, 0xe6, 0x18, 0xfb, 0xf2, 0x79, 0x57, 0x02, 0x64, 0x7d,
  0xc6, 0xe7, 0x82, 0x21, 0x9a, 0xcc, 0x58, 0x95, 0x91, 0x83, 0x85, 0x27,
  0x38, 0xdf, 0x5c, 0xb1, 0x1f, 0x45, 0xc7, 0x30, 0xe3, 0x93, 0x8f, 0x1f,
  0xce, 0x07, 0x1f, 0x2e, 0x9b, 0x84, 0x7d, 0x79, 0x71, 0x75, 0x7d, 0xf2,
  0xe6, 0xe3, 0xe5, 0xd5, 0xc5, 0xf5, 0xc5, 0xf1, 0xc5, 0x59, 0xb4, 0xbe,
  0xbd, 0xb1, 0xb2, 0x42, 0xcd, 0x78, 0x20, 0x1c, 0xac, 0x43, 0x9d, 0x3f,
  0xf3, 0x2c, 0x33, 0x8b, 0x75, 0x5c, 0x8f, 0x3f, 0xda, 0xf7, 0xda, 0xe7,
  0xbe, 0x16, 0x0f, 0x67, 0x57, 0x04, 0x89, 0x37, 0x62, 0xeb, 0x71, 0x34,
  0x5d, 0xf2, 0x4d, 0xb1, 0xd9, 0x0a, 0x8c, 0xf4, 0xe9, 0x29, 0x5c, 0x89,
  0x44, 0x4c, 0x9d, 0xe2, 0xa6, 0x95, 0xee, 0xb8, 0xfd, 0xa6, 0xce, 0x82,
  0x67, 0x40, 0x0a, 0x98, 0xa5, 0x8a, 0x72, 0x35, 0x59, 0x30, 0x22, 0x0a,
  0xc1, 0x68, 0x9b, 0x37, 0xa8, 0xc7, 0x80, 0x04, 0xb0, 0xf2, 0xcc, 0x68,
  0x74, 0x20, 0x4a, 0x2f, 0xfd, 0x5e, 0x53, 0xf2, 0x0a, 0xcc, 0x37, 0x93,
  0x8e, 0xa7, 0x32, 0x11, 0x8a, 0x60, 0x52, 0x2b, 0x15, 0x8e, 0xa7, 0xc3,
  0x03, 0xf8, 0x5b, 0x87, 0xab, 0x52, 0x65, 0x97, 0x17, 0x15, 0xe6, 0x97,
  0x19, 0x2d, 0xe4, 0xde, 0x99, 0x14, 0x0e, 0x87, 0x4a, 0x19, 0x61, 0x19,
  0x06, 0x38, 0xec, 0x89, 0x86, 0xc7, 0x18, 0xe9, 0x84, 0x6e, 0x24, 0xa9,
  0x2f, 0x8a, 0x91, 0x33, 0x70, 0x17, 0xf3, 0x04, 0x21, 0xf3, 0x26, 0x62,
  0xac, 0xa2, 0x8b, 0x67, 0xdf, 0x65, 0x82, 0x96, 0xa8, 0xe0, 0x8a, 0x02,
  0x09, 0x9b, 0xd0, 0xe9, 0xba, 0xa4, 0x68, 0x42, 0x5c, 0x00, 0x47, 0x13,

  0xe9, 0x1a, 0xec, 0x9e, 0xb7, 0x8d, 0x69, 0x35, 0xd9, 0xcf, 0xcb, 0xfe,
  0x8b, 0xfd, 0xfe, 0x0e, 0x02, 0x4f, 0x5c, 0xcc, 0x30, 0x8a, 0x26, 0x8a,
  0x05, 0x39, 0x97, 0xe9, 0x03, 0x82, 0xb2, 0x43, 0x29, 0x78, 0x76, 0xaf,
  0x64, 0xc4, 0x90, 0x2d, 0xa5, 0xf5, 0xb0, 0x2a, 0xc9, 0x14, 0x9a, 0x40,
  0xba, 0xe2, 0x0a, 0x32, 0x33, 0x02, 0x9b, 0xc0, 0x67, 0x0e, 0x24, 0x0b,
  0x4d, 0xf2, 0xb2, 0x9a, 0xbc, 0xf6, 0xd4, 0xf4, 0x8d, 0x1b, 0x1c, 0x5f,
  0x0a, 0x80, 0x80, 0x85, 0x3a, 0x20, 0x76, 0xae, 0xad, 0x9f, 0xb7, 0xfa,
  0x5b, 0xd1, 0xe0, 0xfd, 0xd7, 0x82, 0x32, 0xf9, 0xf5, 0x20, 0xa0, 0x09,
  0x90, 0x3e, 0xaf, 0xaf, 0xd7, 0xc2, 0x59, 0xb8, 0x38, 0x98, 0xdd, 0x9f,
  0xf1, 0x4f, 0x4d, 0x02, 0xc7, 0xbf, 0x3b, 0x2b, 0x8e, 0x3c, 0x27, 0x9f,
  0x6e, 0x69, 0xd7, 0x41, 0x22, 0x80, 0xfb, 0x5a, 0x26, 0xe1, 0x25, 0xf7,
  0x57, 0xa3, 0x99, 0xed, 0x78, 0x17, 0xed, 0xc9, 0x2b, 0x66, 0x9d, 0xdd,

  0x4f, 0x5d, 0x32, 0xd1, 0x94, 0x54, 0x3a, 0x34, 0x65, 0xda, 0x65, 0xed,
  0x0e, 0x24, 0x58, 0x01, 0xc5, 0xc9, 0xa0, 0xc9, 0x84, 0x54, 0x43, 0x2a,
  0x4b, 0xec, 0xd2, 0x2f, 0x29, 0xa2, 0x69, 0x52, 0xd6, 0xc2, 0xd0, 0x56,
  0x74, 0x4c, 0x54, 0x31, 0xe6, 0x68, 0xdb, 0x06, 0x0a, 0x6f, 0x0d, 0x36,
  0x16, 0x7b, 0x28, 0x49, 0x6d, 0xec, 0xec, 0x91, 0xa0, 0xdf, 0xd3, 0x07,
  0xbe, 0xdb, 0x7f, 0x4f, 0x8a, 0xdc, 0x0f, 0xaf, 0x93, 0xf2, 0xa0, 0x80,
  0x64, 0xa0, 0x72, 0x1f, 0x29, 0x62, 0x8a, 0xfd, 0x21, 0x7e, 0xd5, 0xbb,
  0x73, 0x7f, 0xa6, 0xf6, 0xbd, 0x0c, 0x30, 0xcc, 0x4a, 0x85, 0x20, 0x66,
  0x10, 0xf8, 0x5f, 0xaa, 0x21, 0x51, 0x87, 0x07, 0xcc, 0xb0, 0x8e, 0xf2,
  0x91, 0x4b, 0x30, 0x3d, 0x13, 0x93, 0xd4, 0xbf, 0x31, 0x9a, 0x32, 0x36,
  0xeb, 0xdf, 0x84, 0xd7, 0xb0, 0x55, 0x96, 0x05, 0x4d, 0x13, 0x7d, 0xce,

  0xe7, 0xe9, 0xbd, 0x28, 0x7a, 0x93, 0x64, 0x8f, 0xca, 0xd3, 0x6d, 0xe6,

  0x1a, 0x41, 0x9f, 0xdc, 0xb1, 0x4f, 0xdc, 0x56, 0xe7, 0x6b, 0x3e, 0xae,

  0x99, 0xa2, 0x3f, 0xa5, 0xfa, 0x9c, 0x43, 0x9c, 0xeb, 0xb5, 0xd9, 0x06,
  0xc9, 0x98, 0x72, 0xf7, 0x62, 0x9d, 0x00, 0x36, 0x34, 0xa8, 0x4b, 0xdf,
  0xd3, 0x11, 0x57, 0x6e, 0xc3, 0x06, 0xc5, 0x35, 0xc9, 0xa4, 0x2b, 0x97,
  0xc3, 0xbf, 0x32, 0x52, 0x7b, 0x84, 0xae, 0x85, 0x42, 0xb6, 0x41, 0xf2,
  0x1c, 0xe1, 0x54, 0xe1, 0x01, 0x0e, 0x5b, 0x01, 0x77, 0xc8, 0x42, 0xc3,
  0x51, 0xb0, 0x59, 0x21, 0xd2, 0xeb, 0x24, 0x46, 0x53, 0x0a, 0xd6, 0xb6,
  0x25, 0x2d, 0x2a, 0x83, 0xde, 0x9f, 0xde, 0x04, 0x79, 0x2a, 0xa7, 0xcf,
  0x35, 0x84, 0x2f, 0xef, 0x25, 0xe7, 0x6c, 0x9a, 0x0c, 0x62, 0x7c, 0xbc,
  0x75, 0x2c, 0xe5, 0xd4, 0x65, 0xf7, 0xcf, 0xf8, 0x87, 0xbf, 0x86, 0x1a,
  0xc9, 0xe2, 0x36, 0x2b, 0x23, 0xc1, 0xc7, 0x89, 0x2d, 0xd1, 0xeb, 0x6d,
  0x1f, 0x78, 0x6d, 0xc5, 0xc0, 0xea, 0xb1, 0x89, 0x8b, 0x3d, 0xe7, 0x03,
  0x1f, 0x32, 0x05, 0xa4, 0x53, 0xea, 0x5e, 0x18, 0x84, 0xfc, 0xfb, 0xb8,
  0xc8, 0xa8, 0x42, 0xc0, 0x35, 0x84, 0x10, 0xc7, 0x64, 0x21, 0xdd, 0x33,
  0xe2, 0x09, 0x26, 0x57, 0x17, 0x89, 0x05, 0xf4, 0xc5, 0x93, 0x64, 0xb8,
  0x22, 0x41, 0x08, 0xd7, 0x54, 0xdf, 0x45, 0x5e, 0x31, 0x56, 0x39, 0x66,
  0x63, 0xa3, 0xa6, 0x53, 0xa0, 0x8f, 0xd0, 0xd9, 0x64, 0x55, 0x92, 0x71,
  0x34, 0x73, 0xf8, 0x38, 0xd2, 0x72, 0x81, 0xd1, 0x42, 0x49, 0x93, 0xe3,
  0xc8, 0xab, 0xc3, 0xc1, 0xe4, 0x73, 0x9c, 0x4f, 0x47, 0x2e, 0x27, 0x1b,
  0xdc, 0x8b, 0xef, 0xf2, 0x74, 0x8c, 0xbc, 0x47, 0x87, 0x23, 0xf5, 0xcd,
  0x52, 0xc9, 0x75, 0xb8, 0xdb, 0x86, 0xcd, 0x63, 0x12, 0xfb, 0xca, 0xa6,
  0x79, 0xc7, 0x65, 0xad, 0x7a, 0x2b, 0xad, 0x25, 0x7c, 0x53, 0xc2, 0x0b,
  0x85, 0xab, 0x33, 0x0c, 0x33, 0x65, 0x1c, 0xbb, 0x12, 0xe3, 0x53, 0xd9,
  0x2d, 0xce, 0x90, 0x52, 0x10, 0x33, 0xb4, 0x7a, 0x46, 0x06, 0x49, 0xaa,
  0x09, 0x48, 0x5e, 0x6f, 0x51, 0x6e, 0x74, 0x01, 0x93, 0x96, 0x6b, 0xd5,

  0xdc, 0xfe, 0x13, 0x32, 0xe2, 0xe1, 0x51, 0x13, 0x01, 0x57, 0xaa, 0x60,
  0x0b, 0xaa, 0xcc, 0x86, 0x8d, 0x4e, 0x2b, 0x3a, 0xb0, 0x46, 0x1e, 0xb2,
  0xe6, 0xe7, 0x8a, 0xbf, 0x66, 0x3e, 0x5f, 0xfa, 0x0d, 0x10, 0x25, 0x5a,
  0x27, 0x95, 0xd6, 0x95, 0xed, 0x6c, 0x45, 0x0a, 0x90, 0x38, 0x6a, 0xb8,
  0x49, 0x83, 0xd3, 0xb7, 0x02, 0xd3, 0xbd, 0x31, 0x7e, 0x17, 0xf6, 0x23,
  0x6e, 0x1a, 0x64, 0x1e, 0x20, 0x98, 0x6c, 0xdc, 0x03, 0x26, 0xb0, 0x58,
  0xe1, 0x87, 0xb3, 0xae, 0xaa, 0x5a, 0x06, 0xb3, 0x0b, 0x05, 0xc2, 0x3f,

  0xe1, 0x44, 0x49, 0xd9, 0x3b, 0xbf, 0x02, 0x00, 0x34, 0x8d, 0xdd, 0xd0,

  0x4e, 0x86, 0x32, 0x31, 0x9b, 0x72, 0x16, 0x17, 0xd5, 0xda, 0xb9, 0x81,


  0x77, 0x90, 0x36, 0x50, 0x37, 0xac, 0x2d, 0x6d, 0x8d, 0xf7, 0x4e, 0xb6,
  0xed, 0x03, 0xd7, 0xc7, 0xd1, 0x88, 0x54, 0xf6, 0x9c, 0x49, 0xee, 0xbb,
  0xf3, 0x25, 0x36, 0xe5, 0xbc, 0x7d, 0x24, 0xac, 0x2c, 0x69, 0x02, 0x20,
  0x4f, 0x52, 0x38, 0xc8, 0xe5, 0x76, 0xe1, 0xd3, 0x0e, 0xf8, 0x82, 0x88,
  0x4f, 0xd2, 0x87, 0x70, 0x62, 0xe9, 0x4a, 0x14, 0x8a, 0x96, 0xc3, 0x08,
  0x01, 0xb0, 0x8c, 0x1b, 0x69, 0xc5, 0xfa, 0xf3, 0x51, 0x8c, 0x81, 0xdb,
  0x70, 0x32, 0xe3, 0x40, 0xee, 0x5b, 0x4f, 0x9f, 0x42, 0x3e, 0xad, 0x99,
  0xa4, 0x8e, 0x73, 0x90, 0x1b, 0x49, 0x3d, 0x54, 0xcf, 0x48, 0xf0, 0x1d,
  0xc5, 0x14, 0xaf, 0xd7, 0xb6, 0xdd, 0x32, 0xae, 0xfd, 0xa7, 0xfb, 0xdb,
  0x87, 0x6e, 0x88, 0x49, 0xe3, 0x59, 0xb5, 0x7b, 0x59, 0xea, 0x9f, 0x39,
  0x84, 0x1b, 0xbd, 0x6a, 0x51, 0xf4, 0xd0, 0xaf, 0x59, 0x94, 0xb7, 0x2a,
  0x5a, 0x06, 0xed, 0xb7, 0x77, 0x26, 0xfc, 0x99, 0x15, 0xb1, 0xaa, 0x96,
  0x25, 0xc0, 0x88, 0x2b, 0x5a, 0x09, 0x3b, 0xcb, 0x30, 0x0f, 0xfe, 0xd2,
  0x95, 0x3c, 0xbd, 0x8d, 0x44, 0x1a, 0xf8, 0xdf, 0x1f, 0x0f, 0xc8, 0x0d,
  0x38, 0xfe, 0xb9, 0x75, 0x1e, 0x27, 0x5d, 0x99, 0xcb, 0x27, 0x98, 0x46,
  0xba, 0xb8, 0x41, 0xdd, 0xf2, 0x30, 0x54, 0x3a, 0xe5, 0x6c, 0x84, 0x3c,
  0xf6, 0xdb, 0x7f, 0xbf, 0x98, 0x59, 0x90, 0xa2, 0x15, 0xdf, 0x97, 0xc7,
  0x7e, 0xf3, 0xef, 0xf3, 0xdd, 0x7d, 0xd2, 0xed, 0x43, 0x8c, 0xea, 0x8d,
  0xe4, 0xa7, 0x07, 0x78, 0xe2, 0xaf, 0x66, 0x8a, 0x92, 0xf3, 0xee, 0x73,
  0x45, 0xf9, 0x58, 0xb0, 0x93, 0x86, 0xb0, 0x45, 0xe2, 0x8a, 0xbf, 0x09,
  0x07, 0x23, 0xd6, 0xec, 0x6f, 0x8e, 0xb4, 0xb6, 0x39, 0xe4, 0x3f, 0x37,
  0xbf, 0x0a, 0x9d, 0x91, 0x96, 0xd2, 0xa0, 0x14, 0xd4, 0x5e, 0x38, 0xd4,
  0x5c, 0x85, 0xa1, 0x1f, 0x44, 0xe3, 0x35, 0x8d, 0x41, 0x70, 0xb3, 0x4c,
  0x0f, 0x25, 0x7c, 0x35, 0xd4, 0x81, 0x47, 0x76, 0x08, 0xd3, 0x80, 0xd1,
  0xbe, 0xd3, 0x30, 0x85, 0xcd, 0x19, 0x42, 0xc5, 0x23, 0x71, 0xbe, 0x58,

  0xb6, 0x35, 0x53, 0x6b, 0xb6, 0x31, 0xb5, 0x20, 0xb4, 0xef, 0xba, 0xd2,
  0x00, 0x07, 0x46, 0x43, 0xaa, 0x92, 0x34, 0x58, 0x09, 0x7e, 0xc8, 0x71,
  0xfa, 0x50, 0x3d, 0x5c, 0xaf, 0xc1, 0xa0, 0x1b, 0x94, 0xf3, 0x8b, 0x2b,
  0x3c, 0xbe, 0x38, 0x3f, 0x3f, 0x39, 0x6e, 0x06, 0x0b, 0x4d, 0x4d, 0x89,
  0x55, 0xf5, 0xbd, 0xfe, 0x8b, 0xf4, 0x79, 0xc2, 0xd6, 0x97, 0x68, 0x11,
  0x7f, 0x9f, 0x5a, 0x33, 0xc5, 0x02, 0xb3, 0xcb, 0xbf, 0x94, 0x02, 0x2b,
  0x86, 0x60, 0x15, 0x0a, 0x08, 0x54, 0xeb, 0x79, 0xf4, 0xe0, 0x96, 0xff,
  0x93, 0x33, 0x0d, 0x71, 0x3f, 0xb4, 0xc6, 0x93, 0x4c, 0x58, 0x99, 0x05,
  0x65, 0xcc, 0x8f, 0xc7, 0x9b, 0x92, 0x90, 0xae, 0xdf, 0x6e, 0xa3, 0x65,
  0x46, 0x6d, 0xc3, 0xb2, 0x9f, 0x5e, 0x3e, 0xe1, 0x56, 0xb0, 0xf3, 0xb8,
  0xb8, 0xc5, 0x70, 0xb6, 0x53, 0x00, 0x44, 0x05, 0xa0, 0x04, 0x20, 0x3d,
  0x1e, 0x87, 0x70, 0x05, 0xc8, 0xeb, 0xae, 0x15, 0x0f, 0xe4, 0xd5, 0xe3,
  0xc9, 0x48, 0xfb, 0xc4, 0x03, 0xad, 0xcc, 0xc4, 0xd7, 0xb3, 0xe4, 0x1e,
  0x3f, 0xc3, 0x60, 0x2a, 0x08, 0x0e, 0xe0, 0xf7, 0x63, 0x60, 0x0c, 0x70,
  0x8e, 0x2a, 0x3c, 0x0a, 0x2e, 0x01, 0x1e, 0xd5, 0x9c, 0x3b, 0x1e, 0x10,
  0xa8, 0x32, 0xb6, 0x10, 0xe3, 0xaa, 0x1e, 0x6f, 0xaf, 0xde, 0x09, 0x30,

  0x62, 0x23, 0xa0, 0xe6, 0xb5, 0x6c, 0x92, 0x92, 0x27, 0x03, 0x96, 0x48,
  0x65, 0x97, 0x6d, 0xd8, 0x32, 0xbc, 0xd3, 0x74, 0x0c, 0x68, 0xad, 0x94,
  0xb5, 0x21, 0xf4, 0x74, 0xe3, 0x96, 0xc8, 0xdf, 0x00, 0x81, 0xce, 0xe9,
  0xae, 0xe0, 0x27, 0x80, 0x89, 0xed, 0x37, 0x41, 0x7b, 0x09, 0xcf, 0x8a,
  0x9c, 0xa4, 0x08, 0x64, 0x37, 0xa5, 0xd2, 0x05, 0x7c, 0x98, 0x2e, 0xab,
  0xa7, 0xe6, 0x22, 0x43, 0xa5, 0xc2, 0x3e, 0xa9, 0x46, 0x95, 0x4e, 0xe4,
  0x63, 0x4c, 0x67, 0xd3, 0xbd, 0x57, 0x60, 0x1a, 0x8e, 0x42, 0xc8, 0x05,
  0x86, 0x3f, 0x17, 0xcb, 0xca, 0x0b, 0x24, 0x22, 0x44, 0x17, 0xa3, 0x33,
  0x7c, 0xd5, 0xf3, 0xdb, 0x59, 0xc5, 0x63, 0xf7, 0x4c, 0x89, 0x81, 0x93,

  0xd9, 0x5f, 0x56, 0x70, 0xff, 0x9f, 0x80, 0x50, 0x24, 0x08, 0x5d, 0xd3,
  0xd2, 0xa3, 0x6e, 0xd5, 0xd0, 0x8e, 0x59, 0x52, 0xdd, 0x24, 0xbf, 0x42,
  0x93, 0x16, 0xcc, 0x2b, 0xca, 0x22, 0x56, 0x21, 0xb1, 0x10, 0x4c, 0x64,
  0x83, 0xfb, 0x81, 0x95, 0x83, 0x8e, 0xad, 0xa4, 0x4d, 0x28, 0xdd, 0x72,
  0x87, 0x2d, 0x7e, 0xe8, 0xb7, 0x97, 0x4c, 0xa6, 0x9b, 0xf9, 0x13, 0x3a,
  0x8a, 0x79, 0xee, 0x53, 0xcc, 0x20, 0x3a, 0x84, 0xff, 0xac, 0xfc, 0xf6,


  0xf3, 0x3f, 0xeb, 0xe1, 0x15, 0x3e, 0x4f, 0xea, 0x5a, 0x2c, 0x4e, 0x0b,
  0xc6, 0xe9, 0x15, 0x9a, 0xde, 0xfb, 0x65, 0x78, 0x35, 0x89, 0xbc, 0x52,
  0x06, 0xdb, 0x3a, 0x34, 0x57, 0x0c, 0x07, 0x02, 0xf6, 0x21, 0x5c, 0x50,
  0x09, 0x41, 0x3d, 0x4f, 0x24, 0x3f, 0x29, 0x82, 0x6b, 0x65, 0xbc, 0xcd,
  0x3c, 0x2b, 0x53, 0xc6, 0xf7, 0xcc, 0x8d, 0x0b, 0x14, 0xae, 0x46, 0xff,
  0xa2, 0xba, 0x42, 0xb5, 0x83, 0x35, 0x65, 0x85, 0xbe, 0x52, 0xdb, 0x84,
  0xe7, 0x48, 0x25, 0x6f, 0x4b, 0x9a, 0xb5, 0x80, 0xb5, 0x8d, 0xf2, 0x77,
  0x61, 0x55, 0xd6, 0xbb, 0x25, 0x4f, 0x7a, 0xea, 0x37, 0xbf, 0x16, 0xcf,
  0x4f, 0xd9, 0xae, 0x1f, 0xcc, 0xca, 0x7c, 0x6d, 0xce, 0x07, 0xe6, 0x2c,
  0xeb, 0xf6, 0x94, 0xed, 0x66, 0xce, 0xb6, 0xe3, 0x95, 0x08, 0x24, 0x6d,
  0xd3, 0x68, 0xff, 0x17, 0xa6, 0x6c, 0xbb, 0x19, 0xdb, 0x31, 0xe5, 0x6b,
  0x07, 0xd2, 0xb5, 0x65, 0xa3, 0x25, 0x5f, 0x93, 0x33, 0xb6, 0x57, 0xa6,
  0x6c, 0xbb, 0x39, 0xdb, 0xab, 0x92, 0xb6, 0xa9, 0x28, 0x7d, 0x45, 0xca,

  0xf6, 0xaf, 0xcb, 0xd8, 0x6e, 0x4b, 0xd9, 0xfe, 0xe5, 0x39, 0xdb, 0xbf,
  0x6d, 0xca, 0xf6, 0x6f, 0x99, 0x8d, 0x4c, 0xb7, 0x07, 0x4f, 0x24, 0x1d,
  0x49, 0x69, 0xd3, 0x61, 0x2b, 0x2c, 0xad, 0x16, 0xfc, 0xd5, 0x12, 0x58,
  0x9c, 0x30, 0xb3, 0x0c, 0xc3, 0x1a, 0x8d, 0xa3, 0xb8, 0xfb, 0x75, 0x43,


  0x42, 0x2b, 0x81, 0x0c, 0x38, 0x37, 0x0e, 0xbc, 0x1b, 0xba, 0xe9, 0x65,
  0x39, 0xeb, 0xd1, 0x0c, 0xb0, 0xe6, 0xd8, 0xb3, 0x12, 0x2d, 0x9f, 0x69,
  0x3c, 0xf7, 0xdb, 0xb3, 0x9c, 0x6a, 0x56, 0x6e, 0xef, 0x5a, 0x5b, 0x5d,
  0xfe, 0xb2, 0xc4, 0x7a, 0xd8, 0x90, 0xdd, 0x2e, 0x05, 0x23, 0x03, 0xe1,
  0x32, 0x8a, 0x72, 0xc2, 0xaf, 0x91, 0x97, 0x34, 0x31, 0x7d, 0xf9, 0x4c,
  0x48, 0xc2, 0xb4, 0xd9, 0xf5, 0x8a, 0x61, 0xa8, 0x00, 0xde, 0x5d, 0x07,
  0xc9, 0x10, 0x2c, 0x7b, 0x51, 0xa6, 0x5d, 0xd2, 0x2d, 0xdc, 0xee, 0xef,
  0x72, 0x85, 0xb4, 0x86, 0x74, 0x64, 0x9e, 0x1e, 0xaa, 0x11, 0x7d, 0x9f,
  0x41, 0xa5, 0x6d, 0x0e, 0x1a, 0xf7, 0xbd, 0xd2, 0x77, 0xfa, 0xd1, 0x15,
  0xaa, 0x8f, 0xa0, 0xac, 0xc3, 0x8c, 0x64, 0x70, 0xf9, 0x5d, 0x68, 0xb8,
  0x3a, 0x90, 0x29, 0xd0, 0xcf, 0x87, 0xab, 0x33, 0x3f, 0x3e, 0x4d, 0xd1,
  0x83, 0x83, 0xcd, 0x4d, 0xca, 0x90, 0xba, 0x89, 0x1f, 0x1e, 0xfa, 0x65,
  0xb2, 0x39, 0xce, 0x47, 0xe5, 0x26, 0x9e, 0xa0, 0x7e, 0xf9, 0xa6, 0x9a,
  0xcf, 0x56, 0x65, 0x3d, 0xa4, 0xa5, 0x16, 0xe5, 0x2a, 0x6c, 0xab, 0xcd,
  0xbc, 0x64, 0x6b, 0x2b, 0x75, 0xe1, 0xca, 0x89, 0xef, 0x37, 0x86, 0x93,
  0xaa, 0x02, 0x58, 0x14, 0xfc, 0x1f, 0xf5, 0xed, 0xc0, 0xa0, 0x52, 0xa0,
  0x70, 0xd9, 0xed, 0x6d, 0xea, 0xd4, 0x10, 0xf8, 0x07, 0xc4, 0x76, 0x00,
  0xc2, 0x92, 0x26, 0x15, 0xb1, 0xb0, 0xfa, 0x9e, 0xe9, 0xa6, 0xd7, 0x9a,
  0x8a, 0x1a, 0xf2, 0xf2, 0x5b, 0x7f, 0x11, 0x9d, 0xb5, 0xf4, 0x19, 0xfd,
  0xcd, 0x59, 0x02, 0x50, 0x37, 0x4a, 0xf9, 0xe7, 0x28, 0xbb, 0xee, 0xa3,
  0x9f, 0xe2, 0x96, 0x99, 0x84, 0xbc, 0x43, 0xce, 0xb6, 0x5b, 0x39, 0x13,
  0xf3, 0xf0, 0xa7, 0x98, 0x09, 0x15, 0xe9, 0x07, 0xf9, 0x63, 0x6d, 0x0e,
  0xf4, 0xd8, 0xa7, 0xf8, 0xfe, 0xdd, 0x76, 0xdb, 0x67, 0xa9, 0x91, 0x28,
  0x3d, 0xf1, 0x1b, 0x7e, 0xf8, 0x83, 0x71, 0x56, 0x31, 0xa6, 0xc1, 0x21,
  0xfe, 0xf7, 0x40, 0x77, 0x78, 0x65, 0x87, 0xb2, 0x16, 0xf8, 0x77, 0xa7,

  0x3b, 0xba, 0x38, 0xc1, 0x56, 0x82, 0x86, 0xb4, 0xa1, 0x82, 0x30, 0x26,
  0x94, 0x00, 0x43, 0x13, 0x5e, 0x7f, 0x4f, 0x51, 0xe5, 0x18, 0x41, 0x85,
  0x21, 0x6d, 0x18, 0xa0, 0x44, 0x11, 0x96, 0xc0, 0x50, 0x08, 0x8b, 0x21,
  0xaa, 0xe5, 0x66, 0x9d, 0xb9, 0xa1, 0x98, 0x57, 0xea, 0x32, 0xa2, 0x8b,

  0xec, 0xb6, 0x8e, 0x29, 0x93, 0x99, 0x9f, 0xd6, 0xf2, 0x14, 0xee, 0x3d,
  0xf1, 0x6c, 0x17, 0x89, 0x68, 0x68, 0xfc, 0x68, 0xc4, 0x57, 0x9a, 0x4c,
  0x54, 0x31, 0x51, 0x67, 0x16, 0xbc, 0xc2, 0x5c, 0xf1, 0x83, 0xa8, 0xd3,
  0xfb, 0x10, 0x1d, 0x74, 0xbc, 0x2d, 0xba, 0xc8, 0xa4, 0x6f, 0x08, 0x79,
  0xbc, 0x0a, 0x2a, 0x84, 0xa7, 0x56, 0x44, 0xae, 0x66, 0x72, 0x83, 0x80,
  0x45, 0xd6, 0x9c, 0x30, 0x98, 0xfb, 0x53, 0x2f, 0x08, 0x37, 0xd7, 0x1e,
  0x93, 0xa6, 0x47, 0x0e, 0x0a, 0x12, 0x74, 0xda, 0x58, 0x00, 0x6d, 0xd2,
  0x9e, 0x18, 0xff, 0x1f, 0x59, 0x2b, 0x06, 0x13, 0x31, 0x98, 0x89, 0x35,
  0xdf, 0x3e, 0x60, 0x9d, 0xf4, 0x97, 0x96, 0x52, 0xba, 0x45, 0x5e, 0x96,
  0xe9, 0x10, 0x38, 0xf5, 0x54, 0x58, 0x64, 0x99, 0x70, 0x3e, 0x15, 0xb7,
  0xea, 0xc4, 0xdd, 0x34, 0x00, 0x00, 0xa5, 0x0f, 0xad, 0xc5, 0x2b, 0x15,
  0xd0, 0x01, 0x71, 0x2e, 0xc1, 0xec, 0x98, 0xb1, 0xdd, 0xa5, 0x38, 0x34,

  0x53, 0x5b, 0x1c, 0x0d, 0x8b, 0x34, 0x99, 0x60, 0xaa, 0x23, 0xe3, 0x49,
  0xb1, 0xe2, 0xd5, 0x64, 0xb2, 0x33, 0x04, 0xe6, 0xc0, 0x24, 0x1d, 0xcc,
  0xb4, 0x2d, 0x11, 0xb8, 0x90, 0xd2, 0xaf, 0x29, 0xf7, 0xd1, 0xe6, 0x76,
  0x17, 0x09, 0x66, 0x0e, 0xdc, 0x25, 0x72, 0xac, 0xb1, 0xf6, 0x6f, 0x69,
  0xc9, 0x49, 0x2d, 0x0c, 0xbe, 0x33, 0x55, 0x3b, 0x10, 0x26, 0x90, 0xc1,
  0x27, 0xc1, 0x2f, 0x46, 0xda, 0xaa, 0x3d, 0xae, 0x95, 0xee, 0xf7, 0x3f,
  0x19, 0x8f, 0x77, 0xbc, 0xd0, 0xbf, 0xa0, 0x0e, 0xa0, 0xde, 0x2e, 0x6a,
  0x55, 0x56, 0xbc, 0x93, 0x19, 0xed, 0xa1, 0xa9, 0x84, 0xd3, 0xe1, 0x27,
  0x08, 0xac, 0x1e, 0x9d, 0x37, 0xb5, 0x9c, 0x40, 0x62, 0x39, 0x26, 0xd0,
  0x71, 0xbe, 0x9a, 0x59, 0x5d, 0x45, 0xd8, 0x02, 0x04, 0xd4, 0xe2, 0x06,
  0x86, 0x3f, 0x78, 0x22, 0xde, 0xa6, 0xcb, 0xb7, 0x27, 0xc8, 0x3b, 0xf9,
  0xf1, 0x54, 0x10, 0xc2, 0x3e, 0xf2, 0x18, 0x67, 0xe0, 0xcb, 0x64, 0xc4,
  0xa1, 0xe6, 0xdc, 0x78, 0x4d, 0x8d, 0x77, 0x33, 0xe3, 0x41, 0xe7, 0x73,
  0x62, 0xf5, 0x16, 0x39, 0x12, 0x1d, 0xac, 0xe1, 0x28, 0x31, 0xdd, 0x50,
  0xea, 0x21, 0xf0, 0xd2, 0xeb, 0x04, 0xe8, 0xf2, 0x72, 0x1d, 0xea, 0x2e,
  0x8d, 0x8d, 0x02, 0x65, 0x3f, 0xc4, 0xfb, 0x29, 0x10, 0xc2, 0x71, 0x6b,
  0x6d, 0x08, 0x72, 0x7b, 0x46, 0xdc, 0x09, 0x54, 0x76, 0x9e, 0x0f, 0x06,

  0x7e, 0x8a, 0x7c, 0x06, 0xc6, 0x49, 0x3e, 0xcd, 0xd2, 0xbf, 0x27, 0x63,
  0x09, 0x5a, 0x36, 0xd3, 0x5b, 0x6b, 0x45, 0x0a, 0x91, 0x13, 0x90, 0xc7,
  0x44, 0x09, 0x9f, 0xbf, 0x31, 0x12, 0x1c, 0x4a, 0x1d, 0x4c, 0x07, 0x43,
  0x00, 0x2b, 0x93, 0x09, 0x88, 0x41, 0x06, 0x6e, 0xc2, 0x23, 0xb6, 0x98,

  0xc9, 0x9d, 0xe5, 0x0f, 0x7b, 0x87, 0xab, 0x54, 0x21, 0xd8, 0x33, 0x2d,
  0x08, 0x4f, 0x49, 0xf4, 0x2b, 0x8a, 0x0a, 0xa8, 0xb9, 0xde, 0x2f, 0x2f,
  0x29, 0x08, 0xa3, 0x2f, 0x25, 0x0f, 0xcc, 0x40, 0x5b, 0xf0, 0xed, 0x34,
  0x27, 0xbb, 0x4c, 0x42, 0xe2, 0x45, 0xf7, 0x98, 0x05, 0xe9, 0xb3, 0x50,
  0xee, 0x54, 0xf9, 0x8c, 0xfd, 0xbb, 0xd5, 0x44, 0xb8, 0x33, 0x81, 0x8e,
  0x67, 0x40, 0xdb, 0xa1, 0x1b, 0x5f, 0x81, 0xc9, 0xc5, 0x9f, 0x4e, 0xed,
  0x3a, 0x18, 0x7f, 0x21, 0x61, 0x3c, 0x3a, 0x53, 0x09, 0x24, 0x36, 0x4a,
  0xaa, 0xf8, 0x9f, 0x1e, 0x1e, 0x5a, 0x2c, 0xba, 0x3b, 0xb9, 0x97, 0xa5,
  0x1a, 0x4c, 0xda, 0x46, 0xe3, 0x00, 0x7d, 0x04, 0x60, 0xc3, 0xba, 0x2a,
  0x75, 0xdd, 0xc3, 0xaf, 0xb1, 0x52, 0x4b, 0xa9, 0xa2, 0x49, 0x5a, 0x16,
  0x24, 0xde, 0x4c, 0x91, 0x53, 0x44, 0xc4, 0xc7, 0x6f, 0x9a, 0x9f, 0xd5,
  0xa5, 0x18, 0x43, 0x90, 0x7a, 0xa4, 0x25, 0xc8, 0x34, 0xa4, 0x05, 0x2c,
  0xc1, 0x26, 0x43, 0xf0, 0x58, 0x2e, 0x2b, 0x32, 0xb4, 0xd2, 0x45, 0xee,
  0xc3, 0x2c, 0x57, 0x3c, 0x75, 0xbd, 0x85, 0x72, 0xd9, 0xe6, 0x62, 0x1f,
  0x65, 0x90, 0x16, 0x5d, 0xfe, 0x13, 0x54, 0xa2, 0xfc, 0xaa, 0x52, 0x94,
  0x4f, 0x5b, 0x89, 0x62, 0x25, 0x05, 0x4a, 0x1d, 0x5f, 0x4e, 0x50, 0x94,
  0x10, 0x5d, 0x32, 0x9c, 0x06, 0x75, 0x1f, 0x9b, 0xee, 0x25, 0xfc, 0x5a,
  0x63, 0xb8, 0xf0, 0x65, 0xea, 0x46, 0xb5, 0x2c, 0xd9, 0xc4, 0xe3, 0x91,

  0xeb, 0xc2, 0x35, 0x42, 0xcd, 0xf9, 0x68, 0x06, 0x58, 0x32, 0x3e, 0x4e,

  0x04, 0x9f, 0xeb, 0xcf, 0xb6, 0x7b, 0xc8, 0xa7, 0x36, 0xc0, 0xb6, 0x81,
  0x37, 0x1f, 0x3a, 0xf2, 0xf8, 0xcb, 0x27, 0x05, 0x32, 0xdd, 0x33, 0x7c,
  0xcd, 0x02, 0x60, 0x3a, 0xfc, 0xce, 0x74, 0x36, 0xe5, 0x1e, 0x6d, 0x55,
  0xf8, 0xc2, 0x50, 0xb3, 0x52, 0x46, 0x3a, 0x14, 0xf6, 0x86, 0x99, 0x71,
  0xf8, 0x7e, 0x0b, 0x83, 0x4b, 0x34, 0xee, 0xaa, 0x26, 0x31, 0x70, 0xf4,
  0x61, 0x52, 0xdd, 0xa3, 0x16, 0x47, 0xfb, 0xa1, 0x1b, 0xe9, 0x70, 0x01,
  0xd9, 0xa2, 0xd6, 0x7c, 0x97, 0x2e, 0xa7, 0xc1, 0x21, 0x43, 0x61, 0x0c,
  0x5f, 0xe3, 0x17, 0xd1, 0x98, 0xae, 0x77, 0xfb, 0x82, 0xed, 0x80, 0x6c,

  0x88, 0xba, 0xb6, 0x37, 0x9a, 0x8b, 0x5b, 0xab, 0x18, 0xd2, 0xb4, 0x25,
  0x79, 0xd0, 0xf5, 0xf1, 0x9b, 0x6b, 0x2c, 0xd7, 0x36, 0x08, 0x58, 0x81,
  0x81, 0x31, 0x7a, 0x57, 0xe6, 0xa3, 0xe7, 0xef, 0xa8, 0x5a, 0x5d, 0x3f,
  0x66, 0x89, 0x71, 0xb9, 0x50, 0x68, 0xb8, 0x8d, 0xc9, 0xb0, 0x27, 0x47,
  0x7e, 0x1b, 0x2f, 0xe0, 0x67, 0x18, 0x12, 0x24, 0x3c, 0x59, 0xee, 0x5d,
  0xe7, 0xe5, 0x25, 0x10, 0x01, 0xb8, 0x13, 0x6b, 0x84, 0xc5, 0xe9, 0x7c,
  0x7c, 0xb0, 0x7d, 0x31, 0xce, 0x42, 0x2d, 0x52, 0x4a, 0x41, 0x6e, 0x52,
  0xef, 0x94, 0x06, 0xc9, 0x25, 0xd8, 0xe2, 0x0a, 0x57, 0x41, 0xa4, 0xce,
  0xf8, 0x00, 0x2b, 0x1f, 0xbe, 0xba, 0xb6, 0x48, 0xbf, 0x7b, 0xfa, 0x75,
  0xce, 0x70, 0xdb, 0x54, 0x91, 0xe5, 0xcd, 0x5f, 0xb2, 0xf8, 0xb4, 0x71,

  0x9e, 0x75, 0xf5, 0x98, 0x3e, 0xb8, 0x7e, 0x3f, 0x54, 0x04, 0x7f, 0xd2,
  0x17, 0x04, 0x02, 0x59, 0xc6, 0x37, 0xed, 0x45, 0xdb, 0x22, 0x93, 0xa1,
  0x1c, 0x8e, 0xda, 0xad, 0x95, 0xd8, 0x43, 0x20, 0x36, 0xb7, 0x3e, 0xc0,
  0xba, 0x88, 0xc1, 0xf1, 0xe5, 0x46, 0x74, 0xd9, 0x40, 0x82, 0xa1, 0xa2,
  0x24, 0x14, 0xa6, 0x2e, 0x1f, 0x96, 0x76, 0x6e, 0x8c, 0x71, 0xd9, 0x8e,
  0x1a, 0x92, 0xca, 0x15, 0x33, 0x48, 0xae, 0x14, 0xfa, 0xfd, 0xcd, 0x19,
  0x53, 0x63, 0x2d, 0x47, 0x54, 0xa4, 0xc1, 0xa0, 0x20, 0x62, 0x52, 0xba,
  0xd7, 0x14, 0x2c, 0xe8, 0x1c, 0x4b, 0xed, 0xb8, 0x81, 0x92, 0x38, 0xe5,
  0x15, 0xff, 0x64, 0xe6, 0xa5, 0x3a, 0xd2, 0x46, 0x68, 0xd6, 0xb9, 0x83,
  0x7e, 0x24, 0x9d, 0x0c, 0x4b, 0x96, 0x4a, 0x8d, 0x4e, 0x03, 0xc4, 0xc3,
  0xa6, 0x49, 0xe6, 0x77, 0x2e, 0xa1, 0x8f, 0xa2, 0x20, 0x17, 0x92, 0x1e,
  0xf7, 0x9b, 0xa8, 0xf9, 0x4e, 0xd0, 0x40, 0x26, 0x97, 0xe6, 0x16, 0x6d,
  0xbd, 0x05, 0x61, 0x93, 0x75, 0x3c, 0x6c, 0x64, 0x88, 0x1c, 0x71, 0x8a,
  0x61, 0x9a, 0x8a, 0x24, 0xdc, 0xe2, 0x11, 0x37, 0x03, 0x1e, 0x2b, 0xcb,
  0x9b, 0x1d, 0xe0, 0x1b, 0x3b, 0xfd, 0xcf, 0x19, 0x17, 0xf2, 0x06, 0x84,
  0x75, 0x00, 0x8e, 0x97, 0xd3, 0x47, 0xa4, 0xe5, 0x69, 0x63, 0x3c, 0xd1,
  0xc2, 0xfb, 0x56, 0xf1, 0xef, 0xfd, 0x27, 0x52, 0xda, 0xdf, 0x96, 0x7e,
  0xfc, 0x6e, 0x1d, 0x09, 0x2a, 0x42, 0xb2, 0xda, 0xe0, 0x06, 0x7d, 0x9c,


  0x69, 0x30, 0x4c, 0x2b, 0x02, 0xc6, 0x57, 0x2b, 0xb2, 0x7e, 0x35, 0xa9,
  0x89, 0x55, 0x41, 0x6f, 0x05, 0x6b, 0xe2, 0xfb, 0xd1, 0x7f, 0xe2, 0xa7,
  0xf4, 0x6d, 0x2e, 0xcb, 0xa0, 0x64, 0x88, 0xaf, 0x4f, 0xde, 0x5e, 0x5c,
  0x9d, 0xd4, 0xcb, 0x15, 0x2b, 0xee, 0x95, 0x4e, 0xc1, 0xfe, 0xe6, 0xec,
  0x08, 0xd5, 0x4e, 0x61, 0x10, 0x24, 0x53, 0x21, 0x45, 0xbb, 0x3f, 0xba,
  0xfc, 0xfe, 0x8d, 0x99, 0x1d, 0x6a, 0x09, 0x19, 0x77, 0x5a, 0x92, 0x41,
  0xbb, 0xbc, 0xd3, 0x4d, 0xd1, 0x8e, 0x5a, 0x00, 0x36, 0x94, 0x92, 0x06,
  0xd5, 0x66, 0x7e, 0x94, 0x62, 0xc1, 0x89, 0x31, 0x5a, 0xaa, 0x4f, 0x18,

  0xea, 0x65, 0x89, 0xa5, 0xf7, 0x66, 0x50, 0x4f, 0xef, 0x65, 0xeb, 0x88,
  0x01, 0xa7, 0x38, 0xb5, 0x38, 0x66, 0xf4, 0x38, 0x84, 0x94, 0xeb, 0x47,
  0xfe, 0x87, 0x34, 0x29, 0x84, 0xbe, 0x12, 0x62, 0xd8, 0xd8, 0x3b, 0x9d,
  0x03, 0x21, 0x2c, 0xed, 0xd0, 0xe1, 0x82, 0x44, 0x6b, 0x7a, 0x57, 0x75,
  0x19, 0xe9, 0x4f, 0xc2, 0x3d, 0xee, 0x46, 0x06, 0x22, 0xe4, 0xf0, 0xcd,
  0xf5, 0x12, 0x0b, 0x1d, 0x9c, 0xa9, 0x9a, 0xdf, 0x44, 0x6a, 0x41, 0xaf,
  0xfd, 0x79, 0xcd, 0xd6, 0x84, 0x70, 0x0f, 0xbe, 0x70, 0xcf, 0x4a, 0xdb,
  0xc3, 0x6c, 0xe3, 0xa9, 0xfc, 0x2d, 0x5d, 0x71, 0x5b, 0x3d, 0xb6, 0x84,
  0xee, 0x24, 0xa5, 0x87, 0x5a, 0x89, 0x2e, 0x19, 0xae, 0x94, 0x18, 0x87,
  0x08, 0x53, 0x1d, 0xa5, 0x6b, 0x80, 0xbc, 0x7d, 0xe7, 0x5e, 0xe1, 0xf6,
  0x35, 0x52, 0x86, 0x43, 0x01, 0x33, 0x45, 0xae, 0xa7, 0x50, 0x04, 0x35,

  0x8c, 0x2a, 0x1f, 0xb3, 0x0a, 0x2f, 0x2a, 0xf3, 0x94, 0x51, 0x5e, 0x04,
  0x0b, 0xc0, 0x90, 0x90, 0x2c, 0xe9, 0x96, 0x84, 0x34, 0xf1, 0x6a, 0xff,
  0x15, 0x8a, 0x76, 0xca, 0x50, 0x92, 0xae, 0x5e, 0x82, 0xef, 0x4c, 0xd1,
  0x53, 0xee, 0x24, 0xe8, 0xa1, 0x29, 0xbb, 0x6b, 0xd0, 0x4e, 0xcc, 0xc3,
  0x64, 0xc6, 0x9d, 0xc4, 0x06, 0xce, 0x20, 0x3e, 0x98, 0xd2, 0x8a, 0x03,
  0x43, 0x18, 0x3f, 0x20, 0x9f, 0xb4, 0xbc, 0x8d, 0xd6, 0xff, 0x6d, 0xc3,
  0xb4, 0x5b, 0x27, 0xfa, 0x41, 0xdf, 0x6c, 0x9a, 0x2d, 0x3d, 0xca, 0x47,
  0xe7, 0x5c, 0x5a, 0xdb, 0x54, 0xda, 0x73, 0x5a, 0xdf, 0x30, 0x54, 0x93,
  0x57, 0x56, 0xf9, 0x22, 0xe2, 0xd6, 0x6f, 0x85, 0x17, 0x1c, 0x93, 0xe3,
  0x5a, 0x69, 0xa7, 0xb6, 0x97, 0x2d, 0xf8, 0x12, 0x91, 0x98, 0x10, 0xa1,
  0x62, 0x8b, 0xc3, 0x55, 0xb5, 0xab, 0x7e, 0xf4, 0x21, 0xa3, 0x44, 0x3c,
  0xa1, 0x3b, 0x91, 0x13, 0x69, 0x06, 0xeb, 0x07, 0x9a, 0x06, 0x49, 0x11,
  0x60, 0x42, 0x7f, 0xab, 0x33, 0x1f, 0x61, 0x92, 0x8d, 0x00, 0x29, 0x5d,
  0x5a, 0x61, 0x6b, 0x86, 0x6d, 0x45, 0xd1, 0x5b, 0xbf, 0x47, 0x1e, 0xf7,
  0xf8, 0x42, 0x52, 0x87, 0xe5, 0xd0, 0xd8, 0x18, 0x02, 0x4f, 0x66, 0xb3,
  0x1e, 0x83, 0xa8, 0x23, 0xa8, 0x34, 0x2a, 0xf7, 0x5c, 0x25, 0x4d, 0x09,
  0x6c, 0xae, 0xe1, 0xe3, 0x49, 0x16, 0x2a, 0xf6, 0xee, 0x63, 0x09, 0x90,
  0xc2, 0x8d, 0x48, 0x29, 0x96, 0x06, 0xd6, 0xb0, 0x72, 0xcf, 0x3a, 0x43,
  0x68, 0x73, 0x78, 0x49, 0x6d, 0x5d, 0xad, 0x7c, 0x58, 0xd2, 0xd1, 0xcd,
  0xb4, 0x58, 0x70, 0x67, 0xbd, 0x50, 0xdb, 0x3f, 0x57, 0xeb, 0xe6, 0x47,
  0x95, 0x28, 0xca, 0xa4, 0xe2, 0xc9, 0xf0, 0xbb, 0xa7, 0x6f, 0x6a, 0x2d,
  0xba, 0x71, 0x2b, 0xd0, 0xf4, 0x0b, 0x0f, 0x67, 0x9b, 0x84, 0xe3, 0x7d,
  0xb4, 0x52, 0xc3, 0x0c, 0x65, 0x4d, 0x8c, 0xa1, 0xb6, 0x51, 0xa5, 0xdf,
  0x85, 0x87, 0x93, 0x51, 0x58, 0x55, 0xe5, 0x31, 0x74, 0x60, 0x22, 0x15,
  0xed, 0x21, 0x8f, 0xc4, 0x30, 0x4d, 0x0a, 0xf3, 0x19, 0x3f, 0x49, 0xf2,
  0x66, 0x9e, 0x8f, 0xb1, 0xa6, 0x2b, 0x79, 0x7a, 0x2f, 0xf0, 0x49, 0x7b,

  0xdf, 0xa4, 0x1c, 0xae, 0x34, 0x3d, 0x5f, 0xb9, 0x62, 0x0f, 0xa1, 0xee,

  0xab, 0x52, 0x76, 0x26, 0x3c, 0x9c, 0x5d, 0xaa, 0x76, 0xba, 0x94, 0x37,
  0xdd, 0x25, 0x64, 0x51, 0x3e, 0xaa, 0x9c, 0x15, 0xe0, 0x03, 0xe1, 0xe1,
  0x98, 0xb1, 0x06, 0x56, 0x86, 0x05, 0x52, 0x64, 0x51, 0xae, 0x5e, 0x19,
  0x3f, 0xe8, 0x1d, 0x32, 0xfc, 0x90, 0xd9, 0xb5, 0x77, 0xc2, 0xed, 0x2b,
  0x0b, 0x9d, 0x30, 0xcd, 0xa0, 0x79, 0xc0, 0xda, 0xe1, 0xa8, 0xe0, 0xa3,
  0xec, 0x85, 0x87, 0x33, 0x27, 0x2c, 0x60, 0xd7, 0x2b, 0x0e, 0x58, 0xbe,
  0xe2, 0xed, 0xc2, 0x2c, 0x03, 0xf5, 0x6e, 0x59, 0x8c, 0x92, 0x8f, 0x34,
  0xb7, 0x2a, 0x2e, 0xa6, 0x49, 0xf5, 0x71, 0xf5, 0x86, 0xcc, 0x04, 0x4d,
  0xe1, 0x71, 0x4e, 0xad, 0xaa, 0x0d, 0xb3, 0x10, 0x74, 0xd9, 0x58, 0xd0,
  0x05, 0x40, 0xc1, 0xe3, 0x76, 0xe0, 0x55, 0xfb, 0x86, 0x38, 0xdf, 0x8b,
  0x14, 0x4a, 0x07, 0xc4, 0x65, 0x9a, 0x29, 0x88, 0x8d, 0xf0, 0x18, 0x67,
  0x8a, 0x51, 0x08, 0x79, 0x69, 0x55, 0xb8, 0x6a, 0x7e, 0x8b, 0x25, 0x56,

  0x46, 0x09, 0xf8, 0x18, 0x68, 0x0e, 0xe2, 0xd2, 0x31, 0x3f, 0xae, 0xc7,
  0xcd, 0x6b, 0x92, 0x1a, 0x42, 0xd3, 0xd1, 0xd4, 0x3d, 0xe9, 0xc8, 0x2f,
  0x85, 0x76, 0x04, 0xa2, 0x7e, 0xd0, 0xdc, 0xc8, 0xe6, 0xec, 0x16, 0xf7,
  0x63, 0xe3, 0x88, 0x81, 0xbf, 0xea, 0x77, 0x55, 0xb8, 0x53, 0x6b, 0x68,
  0x6d, 0x1a, 0x8c, 0x09, 0x4c, 0x3c, 0xd8, 0x44, 0x11, 0xb0, 0x5b, 0x3f,
  0x9d, 0x55, 0xbe, 0xfe, 0xe3, 0x7d, 0xbc, 0x48, 0x38, 0xef, 0x95, 0xb6,
  0x57, 0x0e, 0xa3, 0x7d, 0x6b, 0xe4, 0x69, 0x3b, 0x45, 0xe6, 0xee, 0x96,

  0x75, 0x15, 0x81, 0x2d, 0x6a, 0x67, 0x77, 0xf2, 0xd5, 0xc6, 0x75, 0x18,
  0x27, 0xe8, 0x97, 0x15, 0x42, 0xc0, 0x84, 0x2d, 0x1e, 0x48, 0xb9, 0xde,
  0x2a, 0x32, 0x6a, 0xdd, 0xe3, 0x62, 0xfe, 0xc4, 0x15, 0x87, 0x07, 0xec,
  0xaa, 0x18, 0x87, 0xc3, 0xac, 0xca, 0xbb, 0x97, 0x72, 0x89, 0x5b, 0x76,
  0xbe, 0x6d, 0x06, 0x35, 0x1a, 0x5c, 0x35, 0x13, 0x97, 0xfa, 0xdc, 0xc9,
  0xd8, 0xad, 0x05, 0x55, 0xae, 0xa2, 0x8e, 0xc5, 0x3a, 0xb3, 0xf0, 0x70,
  0x86, 0x3c, 0xf5, 0x3d, 0xd9, 0x9e, 0xae, 0xe3, 0xbb, 0xe4, 0x4e, 0x22,
  0x60, 0x36, 0xfa, 0xb4, 0xa1, 0xd7, 0xfb, 0x17, 0xb1, 0x07, 0xb4, 0xcf,
  0x67, 0x99, 0x6b, 0x91, 0xe3, 0x17, 0x41, 0xf2, 0xae, 0x28, 0x65, 0x71,
  0xda, 0x10, 0x98, 0x03, 0xe7, 0x7e, 0xb4, 0x14, 0x77, 0xa5, 0x84, 0x3c,
  0x4a, 0x54, 0xa5, 0x4e, 0x54, 0xa2, 0xa4, 0x12, 0x5c, 0xdc, 0x18, 0x7b,
  0x7c, 0xf8, 0x79, 0xf3, 0xfc, 0x49, 0xce, 0xda, 0x62, 0x18, 0x64, 0x8c,
  0x1c, 0x8a, 0x12, 0xa2, 0xdd, 0x6e, 0xcb, 0x44, 0xac, 0x04, 0x7d, 0x3c,
  0xe2, 0xb6, 0x21, 0x7e, 0x93, 0xdf, 0x46, 0x02, 0x5d, 0xd9, 0x77, 0xdc,

  0x10, 0x0c, 0xb6, 0x9d, 0x4c, 0xc7, 0x6e, 0xcb, 0x6c, 0x67, 0xf9, 0x45,
  0x97, 0xb7, 0x60, 0x0a, 0x8b, 0xa7, 0x3f, 0x82, 0x45, 0x22, 0xa4, 0x12,

  0x93, 0xae, 0x82, 0xa8, 0x07, 0x1b, 0xd1, 0x95, 0x84, 0x36, 0x51, 0xa7,
  0x7b, 0x84, 0x7b, 0xcf, 0x03, 0xac, 0xa7, 0x7d, 0x10, 0x86, 0x5c, 0x14,


  0x80, 0x0a, 0x12, 0xc2, 0xf1, 0x87, 0x02, 0xc5, 0x1b, 0x12, 0x10, 0x65,

  0x87, 0xdb, 0xe6, 0x76, 0x7f, 0xbb, 0xeb, 0x5a, 0x9d, 0x36, 0xf5, 0x0f,
  0x75, 0xef, 0x58, 0xfa, 0x0c, 0x31, 0xe0, 0x42, 0xd3, 0xcf, 0x70, 0x85,
  0x1f, 0x2e, 0x7d, 0xb7, 0x30, 0xb9, 0x96, 0xad, 0xc1, 0x72, 0x1f, 0x3f,
  0xfa, 0x8a, 0xe9, 0x56, 0x6f, 0xef, 0xd5, 0xab, 0x9a, 0x3c, 0x2f, 0x1d,
  0x28, 0xf5, 0xfd, 0xad, 0x2d, 0x5a, 0x9b, 0x57, 0x13, 0x0d, 0xbf, 0xe8,
  0xbd, 0xa2, 0x17, 0xeb, 0xaf, 0x95, 0x09, 0x1c, 0xc1, 0xb8, 0xfd, 0xbd,
  0x1e, 0xfe, 0x26, 0xf0, 0x39, 0xf2, 0xa7, 0xb4, 0xbe, 0xf5, 0x0a, 0x3f,
  0x17, 0x78, 0x8b, 0x1e, 0xe6, 0x7d, 0xcc, 0x27, 0x13, 0x74, 0x64, 0xe1,
  0x93, 0x8a, 0xcb, 0x73, 0x1f, 0x17, 0x63, 0x7f, 0xb9, 0x5b, 0xdd, 0xde,
  0x76, 0xdb, 0x72, 0x29, 0x9a, 0x4c, 0x09, 0x70, 0x78, 0x9e, 0x68, 0x27,

  0x82, 0xf5, 0xc1, 0x05, 0x42, 0xcd, 0x81, 0xb6, 0x61, 0x46, 0xdb, 0xaf,
  0x5e, 0x75, 0x71, 0x66, 0xfb, 0xaf, 0x5e, 0xb5, 0x16, 0x84, 0x3b, 0x9f,
  0xb9, 0xcf, 0xad, 0xfb, 0x09, 0x5f, 0xb7, 0x44, 0x53, 0xa2, 0x91, 0x13,
  0xfe, 0x0e, 0xfe, 0x26, 0x7a, 0x1d, 0x9d, 0x5f, 0x5c, 0x9f, 0x38, 0x9e,

  0x19, 0xba, 0x5f, 0x1c, 0x30, 0x74, 0x4c, 0x4d, 0x8a, 0xc1, 0x2e, 0xa8,
  0x95, 0x17, 0x59, 0xbd, 0x60, 0x93, 0xf8, 0xc6, 0x24, 0x15, 0xab, 0xa8,
  0x47, 0xf0, 0x0f, 0x7e, 0x46, 0x04, 0x35, 0xec, 0x9a, 0xa6, 0x95, 0x0b,
  0xdb, 0xb4, 0x0e, 0x87, 0xbd, 0x41, 0x2e, 0x0e, 0x4e, 0x72, 0x93, 0x60,

  0xca, 0x5a, 0x89, 0xd5, 0x1d, 0x9c, 0x08, 0x8b, 0xff, 0xc8, 0x17, 0x6b,
  0x5e, 0x81, 0x45, 0x32, 0xc3, 0xbc, 0x55, 0x91, 0x84, 0xfc, 0x42, 0x8f,
  0x9e, 0x94, 0xeb, 0x42, 0xf6, 0x2a, 0x37, 0x0a, 0x8f, 0x09, 0xd5, 0xd2,
  0xfd, 0x78, 0x20, 0x9e, 0x82, 0x9c, 0x90, 0x13, 0x31, 0xb4, 0x32, 0x0b,
  0x87, 0x71, 0xd1, 0x8d, 0xd7, 0x4a, 0xeb, 0xf0, 0x34, 0xde, 0xb9, 0x0c,
  0xcf, 0xc1, 0xc3, 0x23, 0x64, 0x27, 0xfe, 0x38, 0x59, 0x68, 0x4a, 0x69,
  0x56, 0x1f, 0x07, 0x68, 0x79, 0x92, 0x4e, 0x97, 0x45, 0x38, 0xfd, 0x92,
  0xba, 0x3c, 0x48, 0xa6, 0x83, 0x76, 0x0d, 0x88, 0xef, 0xe3, 0x22, 0xd1,
  0x26, 0x77, 0xd9, 0xa3, 0xb9, 0xdb, 0x6a, 0x05, 0x6b, 0x3d, 0x10, 0xb6,
  0x74, 0xf0, 0x2c, 0x69, 0x2c, 0xe1, 0x02, 0x3d, 0x06, 0xbd, 0x04, 0x92,
  0xa2, 0x43, 0x5e, 0x3d, 0xe9, 0xed, 0x27, 0xe9, 0x35, 0xe2, 0x40, 0xc4,
  0xc3, 0xa6, 0x26, 0x7e, 0x71, 0x24, 0x5b, 0xe0, 0xe7, 0xd4, 0xad, 0xcd,
  0xac, 0xef, 0x1e, 0x9f, 0x25, 0x6f, 0xcb, 0x4d, 0xee, 0xf4, 0x08, 0xf1,
  0x41, 0x1b, 0x90, 0xf3, 0x30, 0x9c, 0x0b, 0xfd, 0x95, 0x0f, 0x09, 0x9e,
  0xbf, 0xcf, 0x66, 0x79, 0x3c, 0xb6, 0xce, 0x93, 0x85, 0xa6, 0xeb, 0x0a,
  0xe4, 0x98, 0x1c, 0xad, 0x97, 0xd5, 0x81, 0x27, 0xcd, 0x67, 0x1c, 0xad,
  0x3b, 0x80, 0x22, 0x44, 0xa1, 0x8e, 0x1b, 0x84, 0xb9, 0x14, 0x52, 0x0a,
  0x03, 0x64, 0x20, 0xdc, 0x8d, 0x6f, 0xf6, 0x22, 0xbd, 0xf3, 0x69, 0x99,
  0x44, 0x17, 0xea, 0x99, 0x89, 0x42, 0xd2, 0x71, 0x69, 0x44, 0x83, 0xd3,
  0xff, 0x79, 0xf2, 0x29, 0xa3, 0x4e, 0x45, 0x7c, 0x6f, 0x0a, 0x07, 0xbf,
  0x67, 0xc0, 0x4a, 0x89, 0x06, 0x19, 0xa4, 0x8a, 0x78, 0x26, 0x36, 0x3c,

  0xac, 0x97, 0x83, 0x0a, 0x14, 0x56, 0x94, 0x96, 0xb8, 0x40, 0x58, 0x3e,
  0x6d, 0x63, 0x7d, 0x9f, 0x45, 0x2e, 0xe3, 0x5c, 0x74, 0xaa, 0xf8, 0x62,
  0x07, 0x20, 0x9f, 0xe3, 0x9c, 0x5c, 0x89, 0x64, 0xda, 0xa3, 0xb7, 0x97,
  0xe1, 0xa4, 0x02, 0xdd, 0x2e, 0x09, 0x11, 0x11, 0x27, 0x05, 0x73, 0x7d,
  0xa2, 0x27, 0xa1, 0x5b, 0x69, 0x9f, 0x70, 0x43, 0x06, 0x0c, 0x4f, 0x15,

  0xd1, 0xe1, 0x87, 0xab, 0xb3, 0x96, 0x72, 0xc9, 0x01, 0x9d, 0x01, 0x6e,
  0x56, 0xe7, 0x2a, 0x21, 0x34, 0xb3, 0x22, 0xba, 0x8c, 0xa7, 0x49, 0xc7,
  0x05, 0x90, 0xab, 0x21, 0x48, 0x8a, 0x03, 0x22, 0xe4, 0x4e, 0x71, 0xdb,
  0x6e, 0x20, 0x13, 0xb7, 0x61, 0x61, 0xb7, 0xc8, 0x71, 0x32, 0x8b, 0x65,
  0xef, 0x96, 0x05, 0x86, 0xf3, 0x69, 0xe7, 0x03, 0xad, 0xa4, 0xd4, 0x4f,
  0xd9, 0x80, 0xfe, 0xe4, 0x2c, 0x53, 0x2e, 0xcb, 0x8a, 0x17, 0x48, 0x43,
  0x51, 0xe7, 0x0b, 0xf4, 0xc0, 0x77, 0x74, 0x9a, 0xbd, 0xc4, 0x0f, 0xb2,
  0xe9, 0x56, 0x60, 0x60, 0xb8, 0xe6, 0x85, 0xaa, 0xfb, 0xee, 0x71, 0xd6,

  0x1a, 0x6f, 0x4d, 0x10, 0x8f, 0xb7, 0xa4, 0x58, 0xb2, 0xd7, 0x2a, 0x0c,
  0xc3, 0x5f, 0x08, 0xba, 0xc8, 0x38, 0xac, 0x98, 0x71, 0x12, 0x9d, 0xc9,
  0xfc, 0x0e, 0x24, 0xd8, 0xc2, 0xba, 0x90, 0x4e, 0xad, 0x96, 0x19, 0x14,
  0x5a, 0x6c, 0x3c, 0xc3, 0x86, 0x38, 0xc6, 0xfb, 0x85, 0x6b, 0x1c, 0xe7,
  0xd8, 0x43, 0x85, 0x7a, 0xae, 0x67, 0xc6, 0x99, 0x5c, 0x3b, 0xd9, 0x4f,
  0x0e, 0x75, 0x68, 0x03, 0x40, 0x47, 0x5d, 0xe9, 0xf2, 0xd4, 0x03, 0xea,
  0xc8, 0xa4, 0x0e, 0xde, 0x39, 0x56, 0x87, 0xf6, 0xfe, 0xc3, 0x69, 0x1c,
  0xe2, 0x34, 0xff, 0x68, 0x41, 0xcc, 0x75, 0xa6, 0x5b, 0x51, 0x99, 0x0a,
  0x1d, 0xa1, 0xd7, 0x7c, 0xc4, 0x56, 0xcc, 0x8a, 0xb0, 0x0c, 0xba, 0xf3,
  0x7b, 0x4e, 0x41, 0xcb, 0x31, 0x97, 0x6e, 0xf6, 0xde, 0xa4, 0x20, 0x44,
  0x4a, 0x46, 0x20, 0x22, 0x2d, 0x97, 0xdb, 0x05, 0xeb, 0x45, 0xe4, 0x12,
  0xde, 0x9e, 0x8f, 0xee, 0x37, 0x92, 0xba, 0x0e, 0xf3, 0x8a, 0x89, 0xd9,
  0x00, 0x45, 0x3c, 0xe1, 0x2c, 0xb6, 0xda, 0x42, 0x6c, 0x9d, 0x15, 0xd2,

  0x00, 0x5e, 0x3a, 0x18, 0x08, 0xbc, 0x07, 0xfa, 0x2d, 0x03, 0xbb, 0x63,
  0x70, 0x81, 0x28, 0x73, 0x86, 0x5a, 0xd8, 0xd7, 0xba, 0x30, 0x79, 0xc6,
  0xa6, 0xe9, 0x7f, 0xcd, 0xc9, 0x1e, 0xcd, 0x30, 0x20, 0x4c, 0xca, 0x34,
  0xc2, 0xe1, 0xc8, 0x09, 0xa3, 0xf0, 0x71, 0x69, 0xea, 0x08, 0x86, 0xed,

  0x37, 0x96, 0xa0, 0x3d, 0x7c, 0xc2, 0x02, 0xf7, 0xb1, 0xb6, 0x30, 0xca,
  0x19, 0x75, 0x09, 0x0f, 0x63, 0x03, 0x59, 0x2e, 0x08, 0x2f, 0xa1, 0x10,
  0x3a, 0x65, 0xef, 0xe0, 0x23, 0xae, 0x1c, 0xe4, 0x84, 0x8d, 0xe8, 0x4f,
  0x3d, 0xdb, 0x78, 0x63, 0xfd, 0x31, 0x01, 0x0d, 0xdb, 0x26, 0x7d, 0x90,
  0x21, 0x15, 0xa8, 0xfe, 0x8c, 0xb8, 0x3b, 0x68, 0x59, 0xab, 0x4b, 0x21,
  0x23, 0xc4, 0x89, 0x2c, 0xf2, 0xa6, 0x83, 0x16, 0x40, 0x69, 0x96, 0x59,
  0xf2, 0x80, 0x18, 0xe0, 0xed, 0xc3, 0xf9, 0x4a, 0xf6, 0xf7, 0x47, 0x57,
  0xe7, 0xa7, 0xe7, 0xdf, 0x1c, 0x20, 0x42, 0x5d, 0x52, 0x8c, 0xb0, 0x91,
  0x75, 0xf4, 0xd7, 0xe5, 0x38, 0x1d, 0x31, 0xa7, 0x90, 0x16, 0xc1, 0xb5,
  0xca, 0x98, 0x44, 0x1c, 0xac, 0xc0, 0x5c, 0xbc, 0x42, 0x18, 0x49, 0xe6,
  0xc5, 0xba, 0x9e, 0x22, 0x9f, 0x2e, 0xcd, 0xd6, 0x8f, 0x48, 0x15, 0xa1,
  0x30, 0x00, 0x85, 0x47, 0x91, 0x1f, 0x31, 0xd1, 0x62, 0xe3, 0x25, 0x50,
  0x14, 0xde, 0x9c, 0x9d, 0x45, 0x3e, 0x94, 0x2f, 0xa7, 0x8f, 0x0a, 0x7d,
  0x71, 0xc6, 0x10, 0x0d, 0x64, 0xf2, 0x4d, 0x31, 0x9e, 0x07, 0xc2, 0x9f,
  0xfb, 0x16, 0x3a, 0x5c, 0x0f, 0x4c, 0xd7, 0xef, 0xfd, 0x4c, 0x4e, 0xca,
  0x33, 0xa6, 0xe4, 0x40, 0x3a, 0xe1, 0xb4, 0x18, 0x93, 0x2d, 0x04, 0x4c,
  0x32, 0x9f, 0x54, 0xa8, 0x1e, 0xd5, 0x24, 0x69, 0xbd, 0x2b, 0xd0, 0x2a,
  0x67, 0xfb, 0x0d, 0x5b, 0x39, 0x35, 0xe0, 0x14, 0x8e, 0x48, 0x52, 0xd2,

  0x2a, 0xd0, 0x23, 0xeb, 0x85, 0xd4, 0x49, 0x0a, 0x7d, 0x52, 0x1e, 0x35,
  0x8f, 0x93, 0xd8, 0x74, 0xc7, 0x2e, 0x91, 0x5b, 0xfa, 0xec, 0xe2, 0x3e,
  0x29, 0xc4, 0xf8, 0x34, 0x55, 0xc4, 0xc0, 0xec, 0xfa, 0xd1, 0x20, 0x87,
  0xe7, 0x03, 0x55, 0x0b, 0xda, 0x73, 0xb1, 0xd6, 0xbc, 0x9d, 0x93, 0x68,
  0x4d, 0x5e, 0x15, 0xf5, 0xa3, 0xa2, 0x98, 0x5b, 0x7d, 0xbd, 0x81, 0x7e,
  0xcf, 0x48, 0xff, 0xc3, 0xc4, 0x28, 0x14, 0x8f, 0x1a, 0xda, 0x41, 0x0a,
  0xe9, 0xf4, 0x80, 0x9d, 0x76, 0x70, 0x67, 0xa9, 0x0b, 0xb5, 0x33, 0xd2,
  0x13, 0xbd, 0x54, 0xdd, 0x34, 0xf5, 0xe6, 0x82, 0x83, 0x2d, 0xea, 0x9c,
  0xd6, 0x4f, 0xb1, 0xd8, 0x9d, 0x8e, 0xe7, 0x54, 0x3a, 0x85, 0x99, 0x50,
  0x29, 0x57, 0xe9, 0x25, 0xa8, 0x61, 0x7a, 0x01, 0xf0, 0x0b, 0xdb, 0xfe,
  0x11, 0x8b, 0xf4, 0x9c, 0x3a, 0x79, 0xf7, 0x65, 0x11, 0x37, 0x5d, 0xeb,

  0x5c, 0x48, 0x09, 0xd2, 0xa7, 0xf2, 0xea, 0xf4, 0x26, 0xfd, 0x8d, 0x60,
  0x5e, 0x0d, 0xcf, 0x41, 0x24, 0x52, 0x19, 0xdf, 0xd9, 0x84, 0xaf, 0x56,
  0xc6, 0xa7, 0xc5, 0x2a, 0x4d, 0x19, 0x4d, 0x07, 0x6a, 0xbc, 0x4a, 0x3a,
  0x54, 0x1c, 0x39, 0x85, 0x2c, 0x6e, 0xa8, 0xb2, 0x86, 0x49, 0xe0, 0x0f,
  0x27, 0x15, 0x5f, 0x12, 0xe4, 0x6a, 0x65, 0xc2, 0x12, 0xb9, 0x49, 0xb3,
  0xbb, 0x9c, 0x7e, 0x23, 0x41, 0xaa, 0x40, 0x8a, 0x4a, 0xda, 0x5a, 0xd6,
  0x72, 0xdd, 0xd8, 0x55, 0x75, 0xd0, 0x68, 0x11, 0x01, 0xac, 0x85, 0x4b,
  0x03, 0xdd, 0x9e, 0x2d, 0xb6, 0x4d, 0x4b, 0x93, 0x14, 0xf8, 0x32, 0x21,
  0xf1, 0x76, 0x4d, 0x4b, 0x71, 0x78, 0x71, 0x56, 0x26, 0xd2, 0xe5, 0x98,
  0x4b, 0x02, 0x55, 0xe0, 0x88, 0xbc, 0x49, 0x8d, 0xef, 0xa7, 0x5d, 0x92,
  0xf4, 0xeb, 0x0d, 0x4b, 0x6b, 0xf6, 0x2b, 0x66, 0x34, 0xd2, 0x45, 0xa2,
  0x1b, 0x3c, 0xba, 0xc9, 0x73, 0xa9, 0x39, 0x6d, 0x63, 0xb6, 0x11, 0xa9,
  0x34, 0x84, 0x88, 0xd1, 0xa2, 0x3f, 0xd4, 0x5b, 0x55, 0x4a, 0x32, 0x79,
  0xf3, 0xee, 0x39, 0x50, 0x83, 0x35, 0x74, 0xd2, 0xba, 0x6c, 0xe3, 0xf9,
  0x18, 0xe1, 0x2c, 0xcc, 0xd5, 0x87, 0x57, 0x24, 0x2e, 0xc0, 0xa2, 0x3b,
  0xbc, 0x3d, 0x92, 0x59, 0xe9, 0x6e, 0x4a, 0x50, 0xd8, 0x71, 0xae, 0xa5,
  0x05, 0xc8, 0x26, 0xaa, 0x21, 0xb3, 0x29, 0xab, 0x07, 0x34, 0x68, 0xa6,

  0x69, 0x45, 0x0c, 0xe4, 0x4f, 0x3b, 0x5b, 0x6d, 0x4c, 0x1e, 0x07, 0xd2,
  0x1a, 0x57, 0xbc, 0x8d, 0xa5, 0xb1, 0xbf, 0x48, 0x0c, 0xda, 0xc2, 0x00,
  0x94, 0x21, 0xcb, 0x05, 0xfa, 0xe9, 0x7a, 0x48, 0x2f, 0x71, 0xd9, 0xb6,
  0xff, 0xfd, 0xdf, 0xa3, 0xf7, 0xa1, 0xe5, 0x5f, 0x57, 0xce, 0x19, 0xe3,
  0x40, 0xa1, 0x04, 0x33, 0xe5, 0x25, 0xea, 0x27, 0x71, 0x94, 0x76, 0xab,
  0x33, 0x90, 0x5d, 0x4f, 0x4d, 0xee, 0xe4, 0x72, 0xe2, 0x68, 0xbe, 0xf9,
  0x1a, 0xcf, 0x17, 0x51, 0x80, 0x65, 0x75, 0xf5, 0x06, 0x68, 0x9a, 0x4a,
  0x6c, 0xe1, 0x2e, 0xe3, 0x5b, 0x6d, 0xdd, 0xe7, 0xa3, 0xaf, 0x08, 0x23,
  0x65, 0x63, 0x3c, 0x96, 0x74, 0x4d, 0xda, 0x10, 0xfc, 0x52, 0x5d, 0x30,
  0x52, 0xce, 0x59, 0x2f, 0xe8, 0xed, 0x0f, 0x76, 0x8d, 0x90, 0xec, 0x71,

  0x17, 0x0a, 0xbf, 0xc3, 0x6f, 0x77, 0xa2, 0x75, 0xe4, 0xaa, 0x1b, 0x46,


  0x79, 0xf5, 0xeb, 0x9f, 0xb5, 0x39, 0x0b, 0xdb, 0x30, 0x31, 0x4b, 0xc8,

  0x66, 0xf2, 0x2c, 0xea, 0xaf, 0x60, 0xe5, 0x15, 0x20, 0xff, 0xb1, 0xe7,
  0x1b, 0x57, 0x0f, 0x4e, 0x96, 0xb3, 0x90, 0x99, 0x83, 0x77, 0x5b, 0x82,
  0x43, 0x69, 0x59, 0x2e, 0xc5, 0x08, 0x34, 0x00, 0x33, 0x06, 0x71, 0x30,
  0x9a, 0xc1, 0x7c, 0xe8, 0xd3, 0xe5, 0x0c, 0xb3, 0x4a, 0x5a, 0xd5, 0x13,
  0xf2, 0x0e, 0x6b, 0x0b, 0x73, 0xd1, 0x31, 0xc5, 0x8e, 0x92, 0xd3, 0xe1,
  0x46, 0x74, 0xd2, 0x48, 0x0d, 0x37, 0xa1, 0x4b, 0xb2, 0xaa, 0x31, 0x5c,
  0xe7, 0xe2, 0xf2, 0xfa, 0xf4, 0xe2, 0x7c, 0x10, 0xfd, 0x5b, 0x67, 0x65,
  0x79, 0x57, 0x1d, 0x58, 0xf9, 0x87, 0xae, 0x3d, 0x93, 0xe8, 0x50, 0xfc,
  0x0c, 0x6d, 0xb6, 0xb1, 0xa3, 0xc4, 0x8f, 0x40, 0x7a, 0x03, 0x7f, 0xd5,
  0x37, 0x05, 0xda, 0x4d, 0x4e, 0xab, 0x81, 0x46, 0xe7, 0x69, 0xcb, 0x06,
  0xce, 0xaf, 0x69, 0x44, 0x33, 0xb3, 0xb7, 0x36, 0x4b, 0x63, 0xf8, 0x30,
  0x07, 0x16, 0xce, 0x57, 0x4b, 0xe5, 0x94, 0x17, 0x68, 0x8b, 0xef, 0x49,
  0x2d, 0x65, 0x0b, 0x7a, 0x9d, 0x79, 0xa6, 0x2a, 0x5a, 0x65, 0xa0, 0xc3,
  0xdc, 0x37, 0x27, 0xd7, 0xe8, 0xa4, 0xa1, 0x2a, 0x57, 0x3b, 0x41, 0x72,
  0x75, 0x89, 0xe2, 0x13, 0x1b, 0xe5, 0x4c, 0x8b, 0x5b, 0xf1, 0xd2, 0x80,
  0xf6, 0x3c, 0x8b, 0xb3, 0x60, 0x09, 0x1b, 0x68, 0xb4, 0xc7, 0xb0, 0x1b,

  0xb9, 0x85, 0x7e, 0x55, 0xdf, 0x89, 0xd3, 0xd7, 0x84, 0x61, 0x99, 0x2e,
  0x3f, 0x5c, 0x8b, 0x9f, 0xea, 0xcd, 0xc9, 0xd9, 0xc9, 0xf5, 0x49, 0xd3,
  0x72, 0x1f, 0x32, 0x98, 0x25, 0x95, 0xba, 0x54, 0xc9, 0xe8, 0x26, 0xcb,
  0x67, 0xf9, 0x34, 0x95, 0x86, 0xaf, 0xd1, 0xf7, 0xc9, 0xf0, 0xcd, 0xd1,
  0x77, 0xa8, 0x4f, 0xa0, 0xcf, 0xe9, 0xf2, 0xea, 0xe2, 0xf2, 0xed, 0xe9,
  0xf9, 0x9b, 0x6e, 0x74, 0x7c, 0x71, 0xf9, 0x97, 0x6e, 0xf4, 0xfe, 0xe2,
  0xbb, 0x93, 0x40, 0x8a, 0x33, 0x22, 0xdc, 0x7a, 0x14, 0x63, 0x9a, 0xf5,
  0x59, 0xc3, 0x3b, 0xe3, 0x90, 0x85, 0x23, 0x44, 0x30, 0xff, 0x1f, 0xb4,
  0x5f, 0x64, 0xb7, 0x74, 0xd7, 0x60, 0xeb, 0x40, 0x86, 0xbe, 0x3b, 0x39,
  0x7a, 0xd3, 0xf5, 0x00, 0xcc, 0xb1, 0x95, 0x0a, 0x7c, 0x0c, 0xd7, 0x67,
  0x16, 0x4d, 0xb0, 0xd7, 0x6c, 0x7d, 0x90, 0x86, 0xc0, 0x41, 0x2e, 0xbe,
  0xb1, 0x40, 0xb0, 0x54, 0xa5, 0x3f, 0x6e, 0xcb, 0x9c, 0x10, 0x2c, 0xfe,
  0xd6, 0x16, 0xcb, 0x4e, 0xd9, 0x05, 0x2a, 0x6b, 0xae, 0x9a, 0x2d, 0x60,
  0x4d, 0x94, 0x56, 0xaf, 0x45, 0x58, 0x6e, 0x96, 0x6c, 0x0b, 0x62, 0x50,
  0xb7, 0x06, 0x15, 0x40, 0xfc, 0x88, 0x5d, 0x8f, 0xb1, 0xf4, 0x34, 0xa4,
  0xa6, 0x45, 0x60, 0x26, 0xa1, 0x56, 0x3d, 0xb1, 0x28, 0xb1, 0xab, 0x35,
  0x6c, 0x01, 0x52, 0x17, 0xd8, 0x26, 0xdc, 0x3c, 0xdd, 0x20, 0xd3, 0xd3,

  0xf3, 0x07, 0xfe, 0xb1, 0x80, 0x45, 0x05, 0x12, 0xb7, 0x97, 0x13, 0x20,
  0xcb, 0x84, 0x53, 0xa6, 0xf8, 0x98, 0x8c, 0x5b, 0x20, 0xea, 0x9d, 0xaa,
  0x53, 0x62, 0x95, 0x82, 0xa5, 0x37, 0x46, 0x1d, 0x33, 0x8c, 0x15, 0xa5,
  0x3e, 0xab, 0x3a, 0x9b, 0x70, 0x3d, 0x24, 0xb8, 0xce, 0x80, 0xbe, 0xaf,
  0x47, 0xac, 0x68, 0x46, 0xe2, 0xc1, 0x71, 0x37, 0x85, 0x40, 0x37, 0x3c,
  0x5f, 0x16, 0x08, 0x58, 0x4f, 0xb8, 0xd0, 0x93, 0xc0, 0x4a, 0x32, 0xf1,
  0x88, 0x46, 0x18, 0x7a, 0xeb, 0xb1, 0x2d, 0xed, 0xe6, 0xfc, 0x2a, 0xf7,
  0x14, 0xdd, 0x54, 0xe6, 0xe0, 0x85, 0xa8, 0x68, 0x9d, 0xb5, 0x96, 0xda,
  0xe6, 0x96, 0xef, 0x6e, 0x3d, 0x58, 0x1f, 0x3b, 0x6a, 0x13, 0x65, 0xd4,
  0x13, 0xac, 0x6f, 0x2a, 0xde, 0xf3, 0xb6, 0x6e, 0xfd, 0x6d, 0x0b, 0x63,
  0x74, 0xbd, 0xb6, 0xa6, 0xa0, 0xdf, 0xb0, 0xa8, 0xb3, 0x53, 0xb8, 0x0e,
  0x01, 0x68, 0x9c, 0x71, 0x4e, 0x8d, 0xa3, 0x29, 0x1d, 0x81, 0xf4, 0x2a,
  0xda, 0x7d, 0x18, 0xcb, 0xff, 0x30, 0x76, 0x52, 0x0f, 0x7e, 0x99, 0x5a,
  0xac, 0x3f, 0xf1, 0x69, 0xef, 0xcc, 0xae, 0x4e, 0xae, 0xaf, 0xfa, 0xd1,
  0xba, 0x8b, 0xf9, 0xfa, 0xa2, 0xbf, 0xe5, 0x07, 0x6d, 0xb0, 0x89, 0x7b,
  0xf0, 0xab, 0xd4, 0xdd, 0xbd, 0xe5, 0xab, 0xc4, 0x1b, 0xf0, 0xbb, 0x7e,
  0x1e, 0xb1, 0x83, 0xf4, 0xb4, 0x15, 0xfa, 0x9e, 0xdb, 0x2a, 0xbe, 0xf6,
  0x3d, 0xfc, 0xc5, 0x8a, 0x55, 0xbe, 0x3b, 0x39, 0x0b, 0xf4, 0xf6, 0xf9,
  0xee, 0xea, 0xed, 0x5f, 0xea, 0xab, 0xdc, 0xdd, 0x0b, 0x7c, 0xf5, 0xb7,
  0x74, 0xa8, 0x27, 0x65, 0x3e, 0x03, 0x85, 0x85, 0xaa, 0x38, 0xa8, 0x88,
  0xe3, 0x00, 0x44, 0x00, 0xe6, 0x9a, 0xff, 0xd8, 0x95, 0xbf, 0xfc, 0xdc,
  0xef, 0xf7, 0xbf, 0xf4, 0x51, 0xd1, 0xc9, 0x47, 0x63, 0x96, 0x2b, 0xcf,
  0x36, 0x2d, 0x70, 0xaa, 0x9a, 0xa1, 0x2a, 0x21, 0x8c, 0x5a, 0x2c, 0xe2,
  0xb4, 0xa0, 0x9e, 0x40, 0x41, 0x81, 0x8b, 0x4b, 0xb2, 0x95, 0x5e, 0x46,
  0x9b, 0x13, 0x44, 0x30, 0xbe, 0xae, 0xeb, 0xe5, 0x86, 0xd4, 0x55, 0x5b,
  0x19, 0x1c, 0x8f, 0x3d, 0x47, 0x08, 0xf7, 0x65, 0xc1, 0xcf, 0x16, 0xe8,
  0x9f, 0x65, 0x5b, 0xc7, 0xca, 0xda, 0x4c, 0x65, 0x87, 0xac, 0x7e, 0x6c,
  0xa6, 0x1f, 0xf4, 0x5e, 0x48, 0x9d, 0xe4, 0xb1, 0x84, 0xd4, 0xc9, 0x91,

  0x1c, 0x93, 0x58, 0xa1, 0x36, 0xb3, 0x49, 0x35, 0xda, 0xc4, 0x75, 0x96,
  0x35, 0x0d, 0xd0, 0xa8, 0x70, 0x9e, 0x13, 0xc9, 0xcd, 0x93, 0xa4, 0x0a,
  0x5a, 0x4e, 0x6e, 0x71, 0x4a, 0x12, 0x6c, 0x11, 0xaf, 0xa3, 0xa9, 0xb3,
  0x7e, 0xe0, 0x73, 0xb3, 0x5a, 0x47, 0x24, 0xb7, 0x02, 0x51, 0x5b, 0x5d,
  0x78, 0xec, 0xd0, 0x29, 0x53, 0xf3, 0xd5, 0x7e, 0xe2, 0xce, 0x4a, 0x49,
  0x98, 0x48, 0x41, 0xe8, 0xe3, 0x93, 0x9a, 0x44, 0x50, 0x0f, 0x9d, 0x7b,
  0xe8, 0x2d, 0xb5, 0xcf, 0x34, 0x01, 0x46, 0x12, 0x57, 0x23, 0x1e, 0x57,
  0xea, 0xcb, 0xc3, 0xaf, 0x4d, 0xc2, 0x06, 0x95, 0x99, 0xaf, 0xfd, 0xdb,

  0x1a, 0x2a, 0xc2, 0xf4, 0x7a, 0xb0, 0xb6, 0x5d, 0x09, 0x17, 0x0d, 0x1b,
  0x7c, 0x2a, 0xa0, 0x37, 0x98, 0x4d, 0x31, 0xc4, 0xa7, 0xbc, 0xd4, 0x25,
  0x1e, 0x5a, 0x42, 0x3f, 0xfa, 0x3e, 0x9d, 0x8d, 0x47, 0x71, 0x41, 0xe9,
  0x61, 0xbe, 0x78, 0x15, 0x32, 0xe1, 0xfb, 0x54, 0xe6, 0xf4, 0x55, 0x7b,
  0x79, 0xb4, 0x99, 0x4c, 0x98, 0xea, 0x03, 0x45, 0x3f, 0xe6, 0x30, 0x30,
  0xf8, 0xdd, 0x56, 0x74, 0xc6, 0xe4, 0xa3, 0x7b, 0x8c, 0xa2, 0xae, 0xde,
  0xc1, 0xa3, 0x7e, 0xae, 0x1a, 0x87, 0xe8, 0xed, 0xf9, 0xb1, 0x94, 0x74,


  0x71, 0xb7, 0x47, 0xee, 0xab, 0x17, 0x5d, 0xfe, 0xd7, 0x0b, 0x5b, 0x7e,
  0xe2, 0x18, 0x69, 0x6c, 0xc7, 0xb0, 0xd6, 0x7f, 0x7a, 0xa9, 0x45, 0xae,
  0x4d, 0x9e, 0x38, 0x70, 0x30, 0xc9, 0x79, 0x96, 0x5a, 0xb6, 0x06, 0xef,
  0xe8, 0x6c, 0x71, 0x47, 0x80, 0x7f, 0xfd, 0x38, 0x2c, 0x10, 0x76, 0xa4,
  0x2a, 0x7f, 0x5e, 0x55, 0x4f, 0x0c, 0x3a, 0xff, 0xcb, 0x7e, 0xa0, 0xfd,
  0x76, 0xf0, 0x43, 0x26, 0xdd, 0xd7, 0x7e, 0x0d, 0x81, 0xa2, 0x28, 0x6c,
  0x87, 0x59, 0x3f, 0xb6, 0x9c, 0x38, 0xf8, 0xa1, 0x57, 0x4f, 0x7c, 0x88,
  0x8f, 0xd4, 0xe0, 0xbe, 0xdd, 0x2b, 0x55, 0x98, 0xe9, 0x4b, 0x2f, 0xed,
  0xbd, 0xfe, 0xd6, 0xf3, 0x33, 0x94, 0xad, 0xf1, 0xcd, 0xf0, 0x83, 0xfc,
  0x13, 0xa2, 0x12, 0x49, 0x11, 0xcb, 0xdb, 0x68, 0x6e, 0x65, 0x67, 0x0c,
  0x84, 0xcd, 0xa9, 0xf1, 0x72, 0xd8, 0x00, 0x2a, 0x11, 0x2a, 0xc0, 0x38,
  0x2c, 0xbd, 0x1d, 0x38, 0xcd, 0x1a, 0xee, 0x16, 0xe1, 0x89, 0x18, 0x14,
  0xe5, 0x1f, 0x23, 0xfc, 0x82, 0x72, 0xb9, 0x13, 0x2c, 0x62, 0xba, 0x3a,
  0x79, 0xfb, 0x61, 0x70, 0xf2, 0x26, 0x8a, 0x03, 0x10, 0x58, 0x14, 0x2f,
  0x4d, 0xc9, 0x2d, 0x27, 0x0d, 0x82, 0xaa, 0x3c, 0xe7, 0x8c, 0x20, 0x99,
  0x8b, 0xd7, 0x73, 0x50, 0x92, 0x8b, 0xc0, 0x32, 0xf6, 0xeb, 0x4e, 0x58,
  0x8f, 0x93, 0x17, 0x7f, 0x01, 0xee, 0x08, 0xaf, 0x7a, 0x9c, 0x60, 0x73,
  0xae, 0x43, 0xce, 0x82, 0xf1, 0x40, 0xd5, 0x6c, 0x1b, 0xaf, 0x72, 0x96,
  0x24, 0x0b, 0x29, 0xfa, 0xb3, 0x9d, 0xe4, 0xe1, 0x6c, 0xd4, 0x13, 0x28,
  0xcd, 0x39, 0x68, 0x54, 0x0d, 0x1c, 0xc6, 0x2d, 0x9d, 0xa4, 0x08, 0x5e,
  0x8d, 0x33, 0xd6, 0x2d, 0x66, 0x80, 0xdd, 0x16, 0xde, 0x95, 0xf5, 0xb4,
  0x6a, 0xb8, 0xd0, 0xbd, 0xae, 0x7a, 0xe4, 0x52, 0x47, 0x80, 0x1e, 0xb0,
  0x8b, 0x78, 0x32, 0xf1, 0x6c, 0x9a, 0x17, 0x30, 0xde, 0xdc, 0xd4, 0x29,
  0x32, 0x9c, 0x43, 0xb9, 0xd1, 0xec, 0xc5, 0xe9, 0xd7, 0x7c, 0x73, 0xa9,
  0x23, 0x85, 0xc0, 0x13, 0xae, 0xe1, 0x46, 0xb6, 0xc0, 0xfb, 0x44, 0x1e,
  0x13, 0x0c, 0x0f, 0xb2, 0x4c, 0x1b, 0x48, 0xd5, 0x35, 0xed, 0x07, 0x6f,
  0xa1, 0x67, 0x6e, 0x62, 0xd7, 0x91, 0xa6, 0x3b, 0x47, 0x55, 0x77, 0x0d,
  0x07, 0xb8, 0x73, 0xff, 0x3d, 0xbb, 0xb9, 0x6d, 0xef, 0x84, 0x6e, 0xc0,
  0x3c, 0x7e, 0x20, 0x17, 0x55, 0x2b, 0x39, 0xb0, 0xc3, 0x16, 0xb7, 0x03,
  0x1f, 0x2b, 0x98, 0xe5, 0x13, 0x83, 0xb5, 0x95, 0x2f, 0x9c, 0x97, 0x64,
  0x4e, 0x5a, 0x1c, 0x58, 0x64, 0x77, 0xfb, 0xa1, 0x47, 0x4a, 0xe3, 0x36,
  0x2d, 0xcd, 0xc8, 0x4f, 0x18, 0xe3, 0x32, 0xd1, 0x88, 0x5b, 0xe7, 0xd6,
  0x52, 0xf4, 0xbd, 0x0d, 0xfc, 0xf1, 0x2c, 0xc7, 0x28, 0x25, 0x13, 0x03,
  0x7d, 0xdf, 0x87, 0xec, 0x43, 0x23, 0xa1, 0x40, 0x42, 0x54, 0x83, 0x96,
  0x7d, 0xc2, 0xd4, 0xca, 0x86, 0x8a, 0xc5, 0x10, 0xc0, 0x8c, 0x3d, 0x60,
  0x13, 0x3b, 0x8e, 0xbc, 0xe9, 0xe5, 0xb0, 0xf2, 0x38, 0xac, 0x28, 0xd0,
  0x10, 0xdd, 0x3a, 0xb2, 0xb2, 0x6c, 0x36, 0x95, 0x67, 0x52, 0x83, 0x6a,
  0x6a, 0xa5, 0x26, 0x35, 0xf2, 0x01, 0x55, 0xad, 0xab, 0xed, 0x73, 0xa8,
  0xb4, 0x09, 0x97, 0x43, 0x76, 0x66, 0x9c, 0xb9, 0x73, 0xa5, 0x03, 0x80,
  0x31, 0xd2, 0x7c, 0x4c, 0x45, 0x51, 0xdc, 0x86, 0xa7, 0x0d, 0x3e, 0x46,
  0xe6, 0xb2, 0x86, 0x9e, 0xca, 0x87, 0x74, 0xbe, 0x9c, 0xd3, 0xfb, 0x5d,
  0x2e, 0x7f, 0x9c, 0xa3, 0xd4, 0xd2, 0x43, 0xa5, 0xec, 0xc2, 0x4a, 0x29,
  0x2a, 0xe4, 0xcc, 0x40, 0xde, 0x46, 0x44, 0x5b, 0x71, 0xc6, 0x0f, 0xbe,
  0xc5, 0x2d, 0x36, 0xe8, 0xa0, 0xfe, 0xdb, 0xe9, 0x33, 0x3a, 0x04, 0x8d,
  0xee, 0x4b, 0x7f, 0x12, 0x3e, 0xeb, 0x20, 0xba, 0xc4, 0x3c, 0xe7, 0x64,
  0xec, 0x58, 0x91, 0x42, 0x6e, 0x04, 0x62, 0xc3, 0x67, 0xd4, 0xce, 0xa1,
  0xa4, 0xd5, 0x24, 0xcd, 0x57, 0x28, 0x1e, 0x97, 0x6a, 0x9d, 0xbf, 0x2c,
  0x96, 0x84, 0xee, 0xa7, 0x0c, 0xe9, 0xb7, 0x5c, 0x78, 0x32, 0xdf, 0xf0,
  0x09, 0xa3, 0x8e, 0xc2, 0xe7, 0xb7, 0x24, 0x27, 0x46, 0x6c, 0x5b, 0xf4,
  0x97, 0xcb, 0x1e, 0x1b, 0x37, 0x96, 0x34, 0x5c, 0x08, 0x77, 0xd6, 0x24,
  0x5e, 0xe6, 0x09, 0x11, 0x56, 0x4c, 0x19, 0x0e, 0xe9, 0x00, 0x37, 0x85,
  0x8f, 0xaf, 0xab, 0x65, 0x78, 0x7b, 0x0f, 0x0f, 0x1e, 0x85, 0x3b, 0x06,
  0x31, 0xe3, 0x4d, 0xb2, 0xb5, 0xbc, 0xb7, 0xf5, 0x39, 0xfe, 0x73, 0xff,
  0xa1, 0x61, 0x34, 0xf7, 0x83, 0xe0, 0x90, 0x5a, 0x96, 0x1b, 0x0f, 0x73,
  0x0e, 0xc1, 0xf1, 0x86, 0xc5, 0xce, 0x66, 0x6a, 0x14, 0x41, 0x3a, 0xbf,

  0xde, 0xc7, 0xb8, 0xb9, 0x79, 0xe6, 0xa7, 0x36, 0x50, 0x2e, 0xa6, 0xd3,
  0xeb, 0x55, 0x03, 0xa5, 0xd4, 0xb4, 0x10, 0x94, 0x7f, 0xdc, 0x4c, 0xdd,

  0x2b, 0x1d, 0x74, 0x9c, 0x2f, 0x39, 0x90, 0x99, 0x78, 0x91, 0xb1, 0x94,
  0x77, 0x1f, 0xaf, 0x14, 0x88, 0xac, 0x74, 0x86, 0xef, 0xf0, 0xbd, 0x2e,
  0xa3, 0x6d, 0x38, 0x86, 0x34, 0x5b, 0x56, 0x06, 0xac, 0x8f, 0x3e, 0xa8,
  0x14, 0x1a, 0xdc, 0x7d, 0xe4, 0xf3, 0x46, 0xb0, 0x08, 0x2f, 0x28, 0x9d,
  0x00, 0x21, 0xdf, 0x13, 0xd2, 0xc9, 0xc5, 0xc1, 0xe3, 0x4a, 0xd9, 0x80,
  0xab, 0xc8, 0x44, 0x61, 0xa5, 0x73, 0x53, 0xf2, 0x00, 0x9b, 0xcd, 0x20,
  0x4a, 0x91, 0x11, 0x0e, 0x56, 0xa8, 0x49, 0x86, 0x30, 0x37, 0x6c, 0x08,
  0x64, 0xfe, 0xd4, 0x98, 0xb8, 0x69, 0xe1, 0x45, 0x7c, 0x2e, 0xaf, 0xe4,
  0x4a, 0x9a, 0xe6, 0x6b, 0xac, 0xb5, 0x85, 0xaf, 0xb6, 0x34, 0x50, 0x63,
  0x6c, 0x3d, 0xd0, 0xda, 0x5e, 0x60, 0x35, 0xb0, 0x53, 0x88, 0x06, 0x27,
  0x61, 0xb2, 0x36, 0x71, 0xf8, 0x2b, 0xfa, 0xf4, 0x11, 0x86, 0x8c, 0x0f,
  0x42, 0x1a, 0x99, 0x5b, 0xcc, 0x8d, 0xac, 0x97, 0x78, 0x01, 0xf9, 0xeb,
  0x13, 0xc5, 0xe3, 0x46, 0xa4, 0x6e, 0xbe, 0xac, 0xc6, 0x01, 0xcf, 0xe9,
  0x00, 0xc9, 0x83, 0xcf, 0x99, 0x43, 0xaa, 0xce, 0xef, 0xc8, 0x8e, 0xca,
  0x18, 0xe1, 0x27, 0x97, 0xd5, 0xcd, 0xdf, 0xd3, 0x71, 0x10, 0xb9, 0x01,
  0x6f, 0x03, 0xfc, 0x1a, 0x4e, 0xad, 0x64, 0xf7, 0x97, 0x22, 0x9b, 0x46,
  0xeb, 0xf2, 0xda, 0x46, 0x37, 0x1a, 0x2f, 0xc9, 0x21, 0x37, 0x38, 0x1a,
  0x9c, 0x45, 0x97, 0x67, 0x47, 0xa7, 0xe7, 0xf0, 0x4e, 0xcf, 0x37, 0x52,
  0x0d, 0x60, 0x59, 0xb7, 0xd9, 0x62, 0x8c, 0x3c, 0x9e, 0x75, 0x4c, 0x33,
  0xf3, 0x1d, 0xfe, 0x90, 0x8f, 0x69, 0x34, 0x26, 0x51, 0x5a, 0xab, 0x3d,
  0xe8, 0x2d, 0x35, 0xe3, 0xa9, 0x1d, 0x55, 0xc7, 0x2a, 0x4d, 0x9a, 0x29,
  0x23, 0xa9, 0xa8, 0x4e, 0xac, 0x91, 0x2f, 0x23, 0x48, 0xae, 0xbb, 0x44,
  0xa6, 0xe6, 0xaf, 0x06, 0x56, 0x6e, 0xb3, 0x8b, 0x70, 0x86, 0x30, 0x23,
  0xee, 0x98, 0x05, 0x54, 0xe1, 0x0c, 0x4b, 0xe0, 0x6e, 0x26, 0xcb, 0x95,
  0x32, 0x06, 0xdb, 0x32, 0xa1, 0x60, 0x52, 0xe8, 0x76, 0xc4, 0xe4, 0x50,
  0xd9, 0x26, 0x15, 0xb3, 0x4e, 0x56, 0x7e, 0x4c, 0x85, 0xc3, 0xc6, 0x4a,
  0xc3, 0xc5, 0xae, 0x95, 0x9e, 0x84, 0x1e, 0xe6, 0x0f, 0x5d, 0x0b, 0x93,
  0x40, 0xa5, 0x4d, 0x26, 0xbf, 0x61, 0x0a, 0xcc, 0x8c, 0x60, 0xa8, 0x78,
  0x24, 0x18, 0xb4, 0x6b, 0x32, 0xdd, 0xcb, 0x9b, 0xd8, 0x2f, 0x18, 0x98,
  0x83, 0x76, 0x0b, 0x03, 0xba, 0xae, 0xd1, 0x55, 0x34, 0xf6, 0xa2, 0xd1,
  0xcb, 0x9b, 0x68, 0x2c, 0x6d, 0xea, 0x38, 0x27, 0x94, 0x65, 0x6b, 0x72,
  0xe4, 0x0c, 0x77, 0x86, 0x21, 0x88, 0x8e, 0xea, 0xe4, 0xb0, 0x12, 0x80,
  0x7d, 0xbb, 0xf1, 0xbd, 0x4f, 0x84, 0x12, 0xcb, 0xa8, 0xdd, 0x6d, 0x8d,
  0x2f, 0xcb, 0x03, 0xfe, 0xba, 0x05, 0xa3, 0xf6, 0x27, 0xc3, 0xc8, 0x5e,
  0x58, 0xcd, 0xc4, 0x0d, 0x4a, 0x43, 0xf0, 0x50, 0xf4, 0xc4, 0xa6, 0xa4,
  0xc6, 0x3d, 0x95, 0x61, 0xc2, 0xd0, 0xb3, 0xba, 0xf2, 0x01, 0x52, 0x3f,
  0x76, 0xf0, 0xed, 0x85, 0x60, 0xac, 0x4c, 0x7c, 0x56, 0xec, 0xac, 0x92,
  0x9e, 0xc6, 0x44, 0xb9, 0x4a, 0xd4, 0x39, 0x23, 0xc9, 0x71, 0x0c, 0x9b,
  0x6f, 0x86, 0x0d, 0x10, 0xfc, 0x76, 0x09, 0x9c, 0x82, 0x30, 0xe1, 0x26,
  0xa9, 0x3a, 0x03, 0x67, 0x4c, 0x8f, 0x0f, 0x53, 0x13, 0x0d, 0xa2, 0xb3,
  0xbf, 0x2d, 0xd3, 0x84, 0xba, 0xf9, 0x82, 0x1c, 0x8e, 0xde, 0x70, 0xc6,
  0xa4, 0x34, 0x1b, 0xe5, 0xae, 0xc6, 0xd4, 0xf9, 0x18, 0x1f, 0x35, 0x13,
  0xf0, 0xf8, 0x30, 0x4c, 0x08, 0xe5, 0xd3, 0x7b, 0x9a, 0xf4, 0x31, 0x4e,
  0x7a, 0x0e, 0x02, 0x90, 0xfc, 0x5a, 0x0e, 0xba, 0x9e, 0x26, 0xd3, 0x68,

  0x85, 0x0b, 0x8b, 0xaa, 0xb8, 0xbc, 0xf5, 0x6b, 0x58, 0xba, 0xb5, 0x4e,
  0x6d, 0xe4, 0x4b, 0x11, 0xc6, 0x54, 0x61, 0x9b, 0xbf, 0x2c, 0x9e, 0x6d,

  0x96, 0xd5, 0x18, 0xf5, 0x82, 0x65, 0x36, 0xc3, 0x49, 0xe2, 0x50, 0x2d,
  0x7d, 0x43, 0x03, 0x38, 0x54, 0x04, 0x81, 0xde, 0x38, 0x20, 0x8a, 0xe9,
  0x18, 0x36, 0x28, 0xb5, 0x7c, 0xae, 0x61, 0x87, 0x3f, 0x11, 0xb9, 0xea,
  0x83, 0x62, 0xb9, 0x5b, 0x85, 0x6c, 0x87, 0x57, 0x4c, 0x1b, 0x59, 0x3b,
  0xb7, 0x55, 0x10, 0x21, 0x77, 0x38, 0x21, 0x20, 0xb4, 0x61, 0x5e, 0x2a,
  0x78, 0x3a, 0x2c, 0x12, 0x5e, 0xaf, 0xdd, 0x27, 0x82, 0xa0, 0xfb, 0x85,

  0x28, 0x3f, 0xdc, 0x2f, 0xdd, 0xc1, 0xf8, 0x59, 0xd5, 0x26, 0xdd, 0x6f,
  0x32, 0xff, 0x8b, 0x01, 0x7e, 0x42, 0x08, 0x66, 0xe8, 0x62, 0x31, 0x39,
  0xc1, 0x92, 0xe8, 0x57, 0x03, 0xba, 0x21, 0xa7, 0x06, 0x26, 0x5e, 0x04,
  0x5a, 0x74, 0x02, 0x39, 0x2d, 0x05, 0x1b, 0x64, 0x34, 0x03, 0x1d, 0x28,
  0xe0, 0x88, 0x19, 0x08, 0x30, 0x1c, 0xc2, 0xe0, 0x75, 0x9b, 0x22, 0xbb,
  0x5c, 0xa2, 0x6a, 0x3e, 0x5b, 0xe2, 0xb7, 0x19, 0x41, 0xce, 0x20, 0x98,
  0x29, 0xa4, 0x41, 0x10, 0xf5, 0xcf, 0x40, 0x90, 0xe1, 0x1d, 0x75, 0x00,
  0x10, 0x15, 0xd3, 0xd7, 0x60, 0x03, 0x36, 0x31, 0xa2, 0xfa, 0x2d, 0xb3,
  0x43, 0x6f, 0x09, 0x0f, 0x93, 0x08, 0xc0, 0xaa, 0xe3, 0x98, 0xc2, 0x32,
  0x2f, 0x9d, 0x8e, 0x20, 0x04, 0x0a, 0xa6, 0x4e, 0x10, 0xd5, 0x8d, 0x72,

  0x26, 0x58, 0xf9, 0x72, 0xe7, 0xa6, 0x1a, 0x8a, 0x02, 0x08, 0x50, 0xe5,
  0x85, 0x83, 0x03, 0x08, 0x04, 0x90, 0x79, 0xf1, 0x40, 0x44, 0xe6, 0xe2,
  0xc6, 0x82, 0xc4, 0x73, 0x58, 0xa1, 0x96, 0x22, 0xb2, 0x52, 0xef, 0x5e,
  0x6d, 0x4a, 0x0c, 0xd1, 0x94, 0x85, 0x32, 0xf8, 0xf9, 0xa5, 0x75, 0x05,
  0xe9, 0xa1, 0xd7, 0x36, 0x6a, 0x71, 0xb3, 0xbc, 0x06, 0x43, 0xfd, 0xbb,
  0xea, 0x5c, 0xfb, 0xf5, 0x86, 0x7a, 0x02, 0xe9, 0xf8, 0xab, 0x2e, 0x54,
  0xfc, 0xbc, 0x1b, 0xd5, 0x52, 0x6d, 0xf3, 0xff, 0xe6, 0x8d, 0x8a, 0x9f,
  0x77, 0xa5, 0xe2, 0xda, 0x9d, 0xc2, 0x65, 0xfa, 0x6c, 0xe9, 0xa1, 0x75,
  0xc6, 0xbf, 0xe1, 0x2d, 0x33, 0x89, 0x49, 0xcf, 0xbd, 0x63, 0x4a, 0x13,
  0xff, 0x6f, 0xdf, 0xb2, 0xcf, 0x1b, 0x5a, 0x20, 0xe1, 0xa3, 0xae, 0xe8,

  0x5b, 0xe9, 0xe6, 0x6e, 0xa1, 0x82, 0x8c, 0xba, 0xd6, 0xa6, 0x81, 0x32,
  0x0c, 0x37, 0xaf, 0x64, 0xe8, 0xad, 0x60, 0xe8, 0x32, 0xd7, 0xa3, 0xdd,
  0x37, 0xc7, 0xa1, 0xb8, 0x03, 0x2b, 0x47, 0xf6, 0x9c, 0xb7, 0x8a, 0x10,
  0x6d, 0x71, 0x53, 0xfa, 0xa2, 0x3e, 0xe8, 0x9a, 0xa6, 0x20, 0xd7, 0x17,
  0x29, 0x69, 0x07, 0xa0, 0xb8, 0xa0, 0x79, 0xfb, 0xcd, 0x60, 0xd0, 0x3b,
  0xba, 0x3c, 0x8d, 0x9e, 0xb0, 0xbb, 0x08, 0x17, 0xc6, 0xce, 0x31, 0x64,
  0x2f, 0xb7, 0xa7, 0x61, 0xd5, 0xbf, 0x0e, 0x7a, 0x6e, 0x73, 0x5b, 0x8f,
  0xca, 0xa8, 0x96, 0x66, 0xac, 0x93, 0x32, 0x2d, 0x37, 0x50, 0xdb, 0x56,
  0xd4, 0x65, 0x4a, 0xf5, 0x47, 0x67, 0x0d, 0x72, 0x2d, 0x7a, 0xc0, 0xcb,
  0xc9, 0x26, 0x84, 0x1d, 0x44, 0xc7, 0xd9, 0x7e, 0xf5, 0x62, 0x1b, 0x6e,
  0xc5, 0x23, 0xa3, 0x3e, 0xca, 0xcb, 0x7b, 0xfd, 0xdd, 0xcd, 0xbd, 0xfe,
  0x1e, 0xf2, 0x34, 0x09, 0x96, 0x92, 0xb3, 0x43, 0x86, 0x07, 0x6e, 0x17,
  0xc8, 0x4a, 0x62, 0x21, 0x76, 0x7e, 0x72, 0x1c, 0x71, 0xea, 0x2a, 0xc1,
  0x00, 0x36, 0x8c, 0x2e, 0xce, 0x70, 0xa3, 0x14, 0x16, 0x39, 0x42, 0x26,
  0x56, 0xcf, 0x49, 0xe1, 0x6d, 0x87, 0x9a, 0x12, 0x64, 0x71, 0x65, 0x66,
  0x22, 0xc8, 0xee, 0xd8, 0xaa, 0x90, 0x7d, 0xc1, 0x39, 0xfa, 0x15, 0x68,
  0xce, 0x96, 0x38, 0x1b, 0xf6, 0x44, 0x7a, 0xf9, 0x5e, 0xfb, 0xf9, 0xa8,
  0xf9, 0xd2, 0x62, 0x00, 0x59, 0xcf, 0xbd, 0x67, 0xe7, 0x08, 0x43, 0x54,
  0xa3, 0x14, 0x5d, 0x90, 0xa3, 0xb9, 0x31, 0x49, 0x26, 0x7f, 0x1b, 0x67,
  0xfd, 0x5f, 0x6a, 0x4f, 0x05, 0x14, 0x62, 0xc7, 0x6c, 0xd2, 0xa9, 0x0b,
  0x23, 0x13, 0x5b, 0xa9, 0x6d, 0x41, 0x62, 0x22, 0x35, 0x3d, 0x64, 0x4c,
  0x02, 0x78, 0x99, 0xd9, 0x82, 0x72, 0x86, 0x32, 0xe3, 0x07, 0x7e, 0xa6,
  0xa3, 0x07, 0x0c, 0x72, 0xfc, 0x18, 0x8f, 0x55, 0x24, 0xf1, 0x4c, 0x66,
  0xe5, 0x7c, 0xc7, 0xff, 0x25, 0xee, 0x1e, 0x31, 0xdb, 0xd2, 0x4f, 0xcb,
  0x94, 0xa0, 0x82, 0x33, 0x05, 0x93, 0xa6, 0x65, 0x3b, 0xb9, 0x2c, 0x0a,
  0x10, 0x27, 0xe9, 0x22, 0x9e, 0x45, 0xcf, 0xa8, 0x2d, 0x68, 0x3f, 0xfc,
  0x27, 0xfa, 0xf4, 0xd2, 0xec, 0xf5, 0x76, 0xae, 0x60, 0x74, 0x92, 0x7a,
  0xd4, 0x94, 0xaa, 0x01, 0x2e, 0xd7, 0x32, 0x18, 0x22, 0x27, 0x58, 0x6e,
  0xa6, 0x14, 0xd7, 0x4c, 0xa0, 0x01, 0x4b, 0xd2, 0x78, 0x5e, 0xd1, 0x1d,
  0x67, 0x43, 0x69, 0x3a, 0xac, 0xd4, 0xbc, 0x6e, 0x34, 0x19, 0x61, 0x88,
  0xb9, 0x57, 0xb9, 0x30, 0xc5, 0x27, 0x39, 0xef, 0x6f, 0xc1, 0x0c, 0x51,
  0x85, 0x63, 0x3f, 0xc3, 0x2f, 0x57, 0xe6, 0x64, 0x0b, 0xa3, 0x75, 0x4a,

  0x03, 0x91, 0x1a, 0x61, 0xc5, 0x09, 0xd5, 0xc4, 0x82, 0x80, 0xb3, 0x88,

  0xa2, 0xc6, 0x44, 0x20, 0xb8, 0x21, 0x4f, 0x98, 0x56, 0x01, 0xc5, 0xcf,
  0xe3, 0xb3, 0xff, 0x4f, 0xa8, 0x81, 0xfb, 0x91, 0x39, 0xab, 0xe7, 0xa8,
  0x83, 0x8c, 0xac, 0xce, 0xfd, 0xc6, 0x3d, 0xe8, 0x3b, 0x6b, 0x72, 0xfd,
  0xff, 0xda, 0xe0, 0xff, 0x49, 0xda, 0xe0, 0xbf, 0x72, 0x4b, 0x7b, 0x92,
  0xd7, 0xcc, 0xd7, 0xd2, 0x64, 0x56, 0x49, 0x1d, 0x4a, 0xb0, 0xe0, 0x60,
  0xf6, 0xd8, 0x8f, 0x5a, 0xe0, 0x8d, 0x9f, 0xb8, 0xa2, 0x3e, 0x29, 0xfc,
  0xbf, 0x71, 0x45, 0x9f, 0x75, 0x33, 0xff, 0x7f, 0xdf, 0xc7, 0xff, 0x6e,
  0xf7, 0x30, 0x40, 0x90, 0x3a, 0xd8, 0x3a, 0x90, 0xd9, 0x3d, 0x66, 0xed,
  0x71, 0xb3, 0x33, 0xb2, 0xb4, 0x37, 0xac, 0xea, 0x83, 0xe5, 0x78, 0xbc,
  0x75, 0xa7, 0x97, 0xdf, 0xbd, 0x20, 0x14, 0x9e, 0x41, 0x33, 0x99, 0xa5,
  0x88, 0xce, 0xde, 0x1c, 0x5d, 0xfe, 0x82, 0xdb, 0xfe, 0x17, 0x72, 0xb3,
  0x2e, 0x92, 0x64, 0xdc, 0xe3, 0xb8, 0xe1, 0x21, 0xfd, 0x23, 0x18, 0x70,
  0x57, 0x74, 0x0d, 0x22, 0x5b, 0x0c, 0x27, 0xfa, 0x79, 0x0c, 0xf4, 0x32,

  0xa8, 0x29, 0x99, 0x60, 0xde, 0x2c, 0xa8, 0xed, 0xb2, 0xe7, 0x63, 0xc9,
  0xb3, 0xf1, 0x86, 0xa8, 0x80, 0xfc, 0x6d, 0x22, 0x15, 0xc9, 0x3f, 0xc1,
  0xeb, 0x3d, 0x45, 0x5c, 0x3c, 0x03, 0x1d, 0xea, 0x3c, 0xc3, 0x99, 0x78,
  0xc1, 0x64, 0xa8, 0x47, 0xbb, 0x14, 0x0e, 0x79, 0x32, 0x7a, 0xdd, 0xee,
  0x16, 0xfa, 0xdf, 0x89, 0x83, 0x24, 0xd5, 0x27, 0x44, 0xdb, 0x68, 0x7e,

  0xbe, 0x2d, 0x9d, 0x66, 0xe5, 0x56, 0xba, 0x27, 0x51, 0xdb, 0x41, 0x8c,
  0x90, 0x73, 0xe8, 0xd0, 0xeb, 0x52, 0xee, 0x7c, 0x93, 0x33, 0x48, 0x78,
  0xbe, 0xe6, 0x13, 0xf5, 0xbd, 0x3c, 0x9d, 0xd4, 0xb7, 0x33, 0x90, 0xbd,
  0xdb, 0xad, 0x65, 0x2b, 0xb9, 0x53, 0x32, 0x71, 0xf2, 0xed, 0x48, 0x5d,
  0xfb, 0x8c, 0x29, 0x21, 0x50, 0x16, 0x7f, 0xf1, 0xb3, 0x29, 0x9d, 0xd7,
  0x9f, 0xea, 0x44, 0x9c, 0x67, 0x55, 0x41, 0x2d, 0x46, 0x34, 0x85, 0xa0,
  0x54, 0xd0, 0xfe, 0xa5, 0xd3, 0xcd, 0x39, 0xa6, 0x42, 0x01, 0xda, 0x35,
  0xbf, 0xdd, 0x26, 0xdf, 0xef, 0xa4, 0x1a, 0xf5, 0xcd, 0xc9, 0x12, 0x80,
  0x21, 0xfc, 0x6a, 0x04, 0x2a, 0xae, 0x76, 0xa4, 0xee, 0x52, 0x0b, 0x37,
  0x6d, 0xce, 0xd6, 0xe2, 0xab, 0xd0, 0x4c, 0x98, 0x4f, 0xdf, 0x9e, 0x6d,
  0x75, 0xff, 0x43, 0x1f, 0x42, 0x42, 0xdd, 0x31, 0x86, 0x2b, 0xc4, 0xc0,
  0xce, 0x08, 0x7c, 0x81, 0x9a, 0x24, 0x63, 0x24, 0x78, 0x32, 0x8b, 0xef,
  0xa5, 0x1e, 0xae, 0xc9, 0xef, 0x07, 0x67, 0xbb, 0xb4, 0xad, 0xd7, 0x67,
  0x03, 0x17, 0x3e, 0xbf, 0xa4, 0x60, 0x3c, 0xd5, 0x3f, 0x7e, 0x7d, 0x72,
  0x34, 0xb8, 0xee, 0x7b, 0x4b, 0xe4, 0x38, 0x70, 0x90, 0x60, 0x98, 0x09,
  0x0f, 0xce, 0x60, 0xad, 0x8f, 0x08, 0x9f, 0x29, 0x75, 0x95, 0x38, 0x39,
  0x9e, 0x9b, 0x8e, 0x8e, 0x76, 0x6e, 0xcc, 0xd9, 0xfd, 0x55, 0x52, 0xf8,
  0x29, 0x49, 0xb0, 0x77, 0xc3, 0x74, 0x86, 0x2b, 0x80, 0x79, 0x81, 0x35,
  0x34, 0x97, 0xa2, 0x09, 0xaa, 0xd2, 0xcf, 0x67, 0x98, 0x49, 0x80, 0x9f,
  0xa9, 0xfb, 0x21, 0x30, 0x21, 0x59, 0xa0, 0x0b, 0xda, 0x0b, 0x91, 0x41,
  0xef, 0xc8, 0xb1, 0xfd, 0x93, 0x99, 0xaa, 0xee, 0x15, 0xc7, 0x9d, 0x9d,
  0x8e, 0x7d, 0x88, 0x6f, 0x84, 0x20, 0x2e, 0x7e, 0xba, 0x77, 0x5c, 0xde,
  0x6a, 0x64, 0x97, 0xfa, 0x8a, 0x62, 0xd4, 0x78, 0x65, 0xce, 0x69, 0xd3,
  0x12, 0x82, 0x83, 0xa6, 0x9a, 0x78, 0xac, 0x8e, 0xf2, 0x8a, 0x23, 0xd0,
  0x01, 0x90, 0x25, 0xb3, 0x8d, 0x15, 0x27, 0xae, 0x99, 0x23, 0x6e, 0xdf,
  0x53, 0x1c, 0x2d, 0xdc, 0x6b, 0x2d, 0x1a, 0xdd, 0x24, 0x20, 0x44, 0xfa,
  0x0e, 0xb2, 0xc3, 0xb3, 0x37, 0xe4, 0x33, 0x0f, 0xfe, 0x2f, 0xb0, 0x3d,
  0xbf, 0x78, 0x43, 0xf6, 0xf6, 0xfc, 0x0d, 0x29, 0x92, 0xbf, 0x8d, 0x43,
  0x58, 0xe8, 0x54, 0x83, 0x42, 0xe5, 0x2f, 0x5c, 0x36, 0x72, 0xc5, 0x80,


  0xee, 0x38, 0xd5, 0x4d, 0x6c, 0x69, 0xa4, 0x79, 0xf4, 0x16, 0x4c, 0x0f,
  0x2d, 0x6c, 0x0c, 0x40, 0xfa, 0xed, 0xd8, 0x15, 0x74, 0xd3, 0x69, 0xbf,
  0x99, 0x86, 0xe1, 0x40, 0x24, 0xbb, 0x59, 0x3e, 0xb2, 0x52, 0x83, 0xc4,
  0x5c, 0x16, 0x6a, 0x8c, 0x83, 0x25, 0xa6, 0xe6, 0xf2, 0xf4, 0x7a, 0x93,
  0x6a, 0x61, 0x16, 0xb6, 0x92, 0x3a, 0xb6, 0xbc, 0xcd, 0x68, 0x59, 0xfa,
  0x75, 0xf1, 0xa8, 0xee, 0xd7, 0x95, 0xab, 0xf7, 0xb3, 0x2d, 0xb1, 0xe7,
  0x0e, 0x27, 0x52, 0x13, 0x6a, 0x99, 0x34, 0x51, 0x6f, 0xdd, 0x06, 0x5b,
  0xb2, 0x2a, 0x1b, 0xe1, 0x33, 0x0f, 0xda, 0x96, 0x5a, 0x64, 0xd4, 0x2c,
  0x58, 0x38, 0xb8, 0x46, 0x47, 0x65, 0x0b, 0xb8, 0xb4, 0x92, 0x0a, 0x1a,
  0xbc, 0xdb, 0x9e, 0x55, 0x60, 0xcd, 0xdf, 0x25, 0x33, 0x2a, 0xf0, 0x4e,
  0xb2, 0x51, 0xf1, 0xb8, 0x70, 0xc1, 0xfb, 0xc7, 0xff, 0xca, 0xfe, 0x6b,
  0x65, 0x10, 0x85, 0x8e, 0x41, 0xf1, 0x01, 0x66, 0xb7, 0xe1, 0xeb, 0x5f,
  0x58, 0xa7, 0x2b, 0xe3, 0x31, 0x1e, 0x29, 0x4a, 0xe1, 0xca, 0xad, 0x15,
  0x40, 0x5b, 0x46, 0x39, 0x37, 0x43, 0x68, 0x0a, 0xd4, 0xc2, 0xc4, 0x77,
  0x20, 0xe3, 0xe6, 0x9a, 0x4a, 0x80, 0x67, 0x9f, 0xfc, 0x4e, 0x97, 0xb7,
  0xeb, 0x6e, 0xc7, 0xe3, 0x09, 0x83, 0xb3, 0x8d, 0xe8, 0x2d, 0xfa, 0x68,
  0xea, 0x4e, 0x78, 0xbc, 0xae, 0xda, 0x9e, 0x6c, 0x87, 0x1d, 0x51, 0x6e,
  0xb7, 0x66, 0x85, 0xc0, 0xf7, 0x52, 0xa8, 0xa8, 0x32, 0x9c, 0xde, 0xb6,
  0x35, 0xba, 0x03, 0x60, 0xad, 0x9c, 0xd8, 0xa8, 0x9e, 0x25, 0xee, 0xa9,
  0xaa, 0xa5, 0xcf, 0xf0, 0xf4, 0xdd, 0x4e, 0x1b, 0x10, 0x7d, 0x5f, 0x7e,
  0x4d, 0x45, 0xec, 0xe3, 0x84, 0xb0, 0xdc, 0x15, 0x4b, 0x13, 0x2b, 0xb8,
  0x98, 0xde, 0x28, 0xab, 0x17, 0xdd, 0xd3, 0x2f, 0xb6, 0x5f, 0xbe, 0xd8,
  0x58, 0xd5, 0xa5, 0x1c, 0x7b, 0xf7, 0x60, 0x71, 0x2e, 0x93, 0x10, 0xfe,
  0x6b, 0xa7, 0xef, 0x6e, 0x50, 0x64, 0x3b, 0x9b, 0x48, 0x91, 0xb5, 0x2f,
  0xe1, 0x40, 0xdc, 0x20, 0x49, 0xd0, 0x46, 0x68, 0xbb, 0x07, 0x22, 0x16,
  0x5e, 0x17, 0xda, 0x32, 0x72, 0xcb, 0x89, 0x94, 0x9b, 0x46, 0xa1, 0x87,
  0x44, 0x4f, 0x46, 0x62, 0x6f, 0x57, 0xe7, 0xc0, 0xd2, 0xd3, 0x6d, 0xcf,

  0xc9, 0x93, 0xa5, 0xbf, 0xf7, 0xeb, 0xff, 0x72, 0x83, 0x99, 0x76, 0x80,
  0x5f, 0x73, 0xca, 0xbb, 0xbf, 0xc3, 0x29, 0xef, 0xae, 0x3e, 0xe5, 0xdd,

  0xe7, 0x9e, 0xf2, 0xcb, 0xfd, 0x17, 0x9f, 0xff, 0x8a, 0x53, 0x76, 0x76,
  0xf8, 0xbf, 0xed, 0x94, 0x1d, 0x4a, 0xfb, 0x75, 0xa7, 0x2c, 0x49, 0x21,
  0xcd, 0x82, 0x4c, 0x49, 0x7e, 0xa1, 0xb4, 0x56, 0x84, 0xd2, 0xe0, 0x32,
  0x16, 0x7e, 0xd6, 0xaf, 0xb3, 0x92, 0xe6, 0x93, 0xdc, 0xf4, 0x0e, 0xf5,
  0xb0, 0x80, 0x91, 0x6d, 0xa1, 0x45, 0x48, 0xc3, 0x5d, 0xcc, 0xb0, 0x77,
  0xda, 0x5a, 0x6f, 0x4d, 0xdd, 0x23, 0x5a, 0x3e, 0xa9, 0xb8, 0x58, 0xfc,

  0x39, 0x38, 0xea, 0xdf, 0x11, 0x55, 0xcd, 0xcf, 0x99, 0x71, 0xb2, 0x9e,
  0xea, 0x9b, 0xf6, 0x38, 0x03, 0x33, 0x81, 0x73, 0x90, 0x82, 0xd9, 0x6f,
  0x82, 0xfc, 0x6e, 0x90, 0x9d, 0xd4, 0x51, 0x33, 0x04, 0xa5, 0x10, 0xa4,
  0x40, 0x86, 0x49, 0x3d, 0x8f, 0xb3, 0x44, 0x0a, 0x88, 0x71, 0xd1, 0x48,
  0x19, 0x68, 0xca, 0x37, 0x5d, 0xc2, 0xd2, 0x2b, 0xa8, 0x91, 0xb1, 0xd4,
  0x17, 0x77, 0x39, 0xa8, 0x67, 0xb5, 0xc9, 0x50, 0x10, 0xa0, 0x84, 0x5b,
  0x32, 0xba, 0xe1, 0xfe, 0x22, 0x01, 0xb0, 0x9f, 0x55, 0x09, 0x7e, 0xcd,
  0x84, 0xbb, 0x96, 0xde, 0x44, 0xc1, 0x0e, 0x54, 0xd8, 0xa7, 0xaa, 0xde,
  0xa8, 0x8a, 0x73, 0xc4, 0x19, 0x51, 0x8f, 0x14, 0xfe, 0x66, 0xef, 0x27,

  0x69, 0x1c, 0xe5, 0x15, 0x22, 0xa3, 0x4c, 0x97, 0x05, 0xd5, 0x9b, 0x2e,
  0xd9, 0x6c, 0x42, 0xdd, 0x99, 0xa7, 0x6b, 0x66, 0x30, 0xe9, 0x5c, 0x7a,

  0x6e, 0xab, 0x90, 0x64, 0x13, 0xfc, 0x0d, 0x9e, 0xee, 0x78, 0x39, 0x5f,
  0x28, 0x18, 0x22, 0x56, 0x37, 0xa5, 0x54, 0x46, 0x27, 0x80, 0x08, 0x94,


  0x74, 0x1d, 0x70, 0xa3, 0x19, 0x2f, 0x93, 0x24, 0xb7, 0xb1, 0xc7, 0x4a,
  0xcf, 0x4a, 0x80, 0x3d, 0x78, 0x01, 0x94, 0xb8, 0x46, 0xa5, 0x44, 0x88,
  0xaf, 0x96, 0x4c, 0xbc, 0xd4, 0x03, 0x6a, 0x54, 0x4b, 0xd1, 0xc9, 0x64,
  0xb8, 0x9c, 0x2a, 0xa6, 0x80, 0x69, 0x70, 0x57, 0xa7, 0x4a, 0xaa, 0xbf,
  0x42, 0x94, 0xa1, 0xa4, 0xcb, 0xc9, 0xf0, 0x8f, 0x3e, 0xb8, 0x4a, 0x85,
  0xdd, 0x1d, 0x47, 0xab, 0x92, 0xc3, 0xbc, 0x85, 0x13, 0xb1, 0xd7, 0x56,

  0x4e, 0x3f, 0xa9, 0x35, 0x1e, 0x0b, 0xb4, 0xce, 0x72, 0x49, 0xa5, 0x1a,
  0x2d, 0x7a, 0x93, 0x18, 0xa1, 0x49, 0xbd, 0xc2, 0x72, 0x49, 0x08, 0x95,
  0x2b, 0x70, 0x7d, 0x7c, 0x19, 0xbd, 0x8d, 0xa5, 0xdd, 0x50, 0xb4, 0x0e,
  0x1c, 0xf8, 0xe5, 0xde, 0xf6, 0xee, 0xc6, 0x4a, 0x3d, 0xbc, 0x0e, 0xb7,
  0x45, 0xdf, 0xca, 0xf2, 0x50, 0xc2, 0xfa, 0xf5, 0x12, 0xcc, 0x66, 0xc5,
  0xf1, 0x81, 0x2f, 0x7d, 0x3c, 0xbf, 0x78, 0x73, 0x72, 0x76, 0xf4, 0x17,
  0x83, 0x1a, 0x81, 0x9b, 0xa0, 0x95, 0xc7, 0x1f, 0xc1, 0x7c, 0x7d, 0xfc,
  0x58, 0x26, 0x30, 0xe7, 0x6a, 0x7d, 0x77, 0x03, 0x2b, 0xf7, 0xbc, 0xa6,
  0x90, 0xd3, 0xa4, 0x8e, 0xb5, 0xc1, 0xf5, 0x03, 0x2b, 0x00, 0xa3, 0x8c,
  0x83, 0x72, 0xab, 0xbf, 0x23, 0x5d, 0x47, 0xa4, 0x6d, 0x82, 0xe5, 0x59,
  0x4e, 0xe3, 0x94, 0x58, 0x60, 0xe5, 0xb8, 0x36, 0xd7, 0xaf, 0xd0, 0x42,
  0x60, 0x8f, 0x74, 0x94, 0xa2, 0xb5, 0x22, 0xd7, 0x3a, 0xc5, 0x30, 0xfc,
  0xa4, 0x0e, 0x4b, 0x49, 0xc5, 0xbb, 0xf8, 0x8b, 0xd5, 0x61, 0xe5, 0x3a,
  0xef, 0xaf, 0x48, 0x58, 0x24, 0xb3, 0x2c, 0xa9, 0x7a, 0x32, 0xb1, 0x43,
  0xf8, 0xf3, 0xf5, 0x5d, 0x3c, 0xf3, 0x4a, 0xc2, 0xb1, 0xa7, 0xa2, 0x52,
  0xa6, 0x61, 0x45, 0xf8, 0xa6, 0xd3, 0x71, 0x65, 0x60, 0x5a, 0x8f, 0xe8,
  0x93, 0x70, 0x55, 0xbc, 0x0e, 0x23, 0xd7, 0xd7, 0x7f, 0xb9, 0x3c, 0x79,
  0x7d, 0x88, 0x8c, 0xec, 0x4b, 0xac, 0x3d, 0x29, 0x6b, 0x7c, 0x2d, 0xc2,
  0x1e, 0xee, 0xde, 0x1a, 0x7e, 0x78, 0x73, 0x3a, 0xb8, 0x3c, 0xbb, 0x38,


  0x7e, 0x7d, 0xf8, 0x03, 0xda, 0x94, 0x20, 0x3c, 0x1e, 0x9d, 0x77, 0xcd,
  0xcf, 0x4c, 0x17, 0x05, 0x1f, 0x50, 0xe4, 0xe4, 0xfb, 0x8f, 0x27, 0xe7,
  0xdf, 0xbd, 0x3e, 0xbc, 0x8b, 0x8b, 0x2e, 0xae, 0x8f, 0xdf, 0x6e, 0x69,
  0x58, 0x5a, 0x23, 0x35, 0x54, 0xcf, 0x87, 0xb3, 0xdb, 0x32, 0xfd, 0x7b,
  0x12, 0xc1, 0xeb, 0xb3, 0xa5, 0x0f, 0x63, 0x7e, 0xcd, 0x38, 0x0c, 0xb0,
  0x19, 0xf8, 0xb7, 0xe8, 0xeb, 0xb3, 0x6f, 0x11, 0x2a, 0xd7, 0xf8, 0x49,
  0xe7, 0xdc, 0x77, 0x29, 0xfa, 0x72, 0x7f, 0x7b, 0x67, 0xc3, 0x76, 0xfb,
  0x24, 0xa8, 0x6d, 0x98, 0xf1, 0xad, 0x57, 0x35, 0xf5, 0x77, 0xa9, 0xff,
  0xb2, 0xb5, 0x0c, 0x95, 0xb5, 0xa8, 0xb8, 0xfc, 0x40, 0x5c, 0x4e, 0x94,
  0x9c, 0x4f, 0xf9, 0xaf, 0xd8, 0x2c, 0xb5, 0xa0, 0xb4, 0x75, 0xcf, 0xe3,
  0x76, 0xfd, 0xd6, 0xc1, 0xb8, 0xf9, 0xda, 0x92, 0x1e, 0x4c, 0x47, 0xbc,
  0x76, 0x2b, 0xe5, 0xe3, 0x27, 0x8c, 0xe5, 0x34, 0x4d, 0x4a, 0xda, 0x6c,
  0x10, 0x69, 0x42, 0x3f, 0xe1, 0x7d, 0x76, 0x72, 0x7c, 0xa8, 0x02, 0x2c,

  0x67, 0x6c, 0x46, 0x5a, 0xa5, 0x12, 0x9e, 0x42, 0x0a, 0x3c, 0xe1, 0xc3,


  0x4b, 0xe7, 0x58, 0x7b, 0x9c, 0x94, 0x91, 0xfa, 0x77, 0x1c, 0xef, 0xcd,
  0x2c, 0x99, 0xc6, 0xa3, 0x47, 0x83, 0x30, 0x4d, 0x07, 0x32, 0x6e, 0xde,
  0x4e, 0xf2, 0xf0, 0x8d, 0xd0, 0x98, 0x03, 0x11, 0x3c, 0x25, 0xf6, 0xcc,
  0x50, 0x2a, 0x70, 0x5d, 0x8d, 0xd3, 0x87, 0xa7, 0x66, 0xc0, 0x62, 0x54,
  0x5c, 0xe2, 0xa6, 0x36, 0xa5, 0x73, 0x7d, 0x8b, 0x1b, 0xd4, 0x87, 0x64,
  0x43, 0xed, 0x88, 0x57, 0xee, 0xe9, 0x5e, 0xdd, 0x63, 0xfe, 0x77, 0xba,
  0xe4, 0x88, 0xc2, 0x45, 0x4e, 0xd9, 0x43, 0xfc, 0x6b, 0x18, 0x87, 0x9f,

  0xda, 0x73, 0x91, 0xdb, 0x82, 0xdb, 0x4d, 0x73, 0xd3, 0x03, 0x5c, 0xb6,
  0xa9, 0x2f, 0x90, 0xb6, 0x36, 0x08, 0xe7, 0x5e, 0x59, 0x77, 0x7a, 0x18,
  0xe3, 0xce, 0x38, 0xb5, 0x81, 0x3c, 0x59, 0x58, 0x21, 0x65, 0xb4, 0x8c,
  0x67, 0x0a, 0x74, 0xf1, 0xf7, 0x01, 0xc7, 0xa6, 0x24, 0x23, 0x1c, 0xe2,
  0x58, 0xc8, 0x12, 0x51, 0x27, 0x81, 0x9d, 0xfa, 0x52, 0xa3, 0x3e, 0xd4,
  0xf9, 0x28, 0x17, 0xe4, 0x35, 0x7a, 0x88, 0x91, 0x64, 0x4a, 0x1f, 0x86,

  0x83, 0xb3, 0xdb, 0xd5, 0x71, 0xc0, 0x09, 0x1a, 0x18, 0x52, 0x33, 0xb0,
  0xd2, 0x30, 0xcd, 0x52, 0xb5, 0x52, 0x2c, 0x82, 0x24, 0x33, 0xdd, 0x02,

  0xcf, 0x06, 0xb0, 0x08, 0x9c, 0xaa, 0x3d, 0x05, 0x04, 0xe7, 0x95, 0x49,
  0x3a, 0x02, 0x4d, 0x68, 0x7d, 0x8e, 0x0b, 0x91, 0xfe, 0x04, 0xdc, 0x0c,
  0xa2, 0xad, 0x61, 0x7b, 0x43, 0x4a, 0xc1, 0x98, 0x38, 0x82, 0x48, 0x28,

  0x92, 0x49, 0x0c, 0xcb, 0xd0, 0xd8, 0x8d, 0x40, 0xf5, 0x71, 0xc5, 0x49,
  0xfc, 0x4d, 0x11, 0x85, 0xa0, 0xe2, 0x9a, 0x3a, 0x5f, 0x1b, 0x41, 0xca,
  0x9c, 0xa9, 0x13, 0xdd, 0x7a, 0xcf, 0xb6, 0x08, 0x4b, 0x2b, 0xa3, 0xb2,
  0x05, 0x20, 0x77, 0x0c, 0xf0, 0xb9, 0x01, 0x6e, 0x63, 0xd7, 0xa7, 0xd2,
  0x87, 0x50, 0x04, 0x7e, 0x6c, 0x93, 0x4b, 0x3f, 0x95, 0x05, 0xa5, 0x81,
  0xd2, 0x73, 0x6f, 0xb0, 0x2c, 0xb9, 0x77, 0x07, 0xb3, 0x76, 0x87, 0x19,
  0xf0, 0x53, 0x7a, 0xbb, 0xc1, 0x66, 0xc2, 0x7a, 0xb5, 0xe8, 0xf0, 0xbb,
  0x93, 0xab, 0xc1, 0xe9, 0xc5, 0xf9, 0x97, 0x41, 0x73, 0x58, 0x7e, 0x69,
  0x5a, 0xbd, 0x69, 0xa5, 0xab, 0x6d, 0xc7, 0x85, 0x5e, 0x30, 0xf5, 0xb5,
  0x70, 0x57, 0xa7, 0x34, 0xc3, 0x47, 0xbc, 0x2e, 0x5f, 0xa3, 0x64, 0x51,
  0x91, 0xbe, 0xa4, 0xb6, 0x34, 0xed, 0x12, 0xc5, 0x2d, 0xa8, 0x0f, 0x0c,
  0xd9, 0x70, 0x58, 0xea, 0x26, 0xb6, 0x9d, 0xf9, 0xdb, 0x4e, 0x00, 0xe6,

  0x8d, 0x7f, 0xb3, 0xeb, 0x6d, 0x50, 0x38, 0x61, 0xc7, 0x89, 0x97, 0x2f,
  0x17, 0x5c, 0x25, 0x89, 0x60, 0x26, 0x0c, 0x7c, 0xe4, 0x2e, 0xc0, 0xeb,
  0xdb, 0xd0, 0xdf, 0xaa, 0xbf, 0x08, 0x0f, 0xdf, 0x6d, 0x3b, 0x15, 0x2c,
  0xe6, 0xb9, 0xed, 0xd0, 0x73, 0xdb, 0xfe, 0x73, 0x3b, 0xa1, 0xe7, 0x76,
  0xfc, 0xe7, 0x76, 0x43, 0xcf, 0x39, 0xeb, 0x75, 0xcc, 0x78, 0xd9, 0xb9,
  0x55, 0x96, 0x71, 0xed, 0x5f, 0xbb, 0x7d, 0x7b, 0xfc, 0x9f, 0x19, 0x6f,
  0x45, 0xb3, 0x51, 0xad, 0x63, 0xd8, 0xab, 0x5d, 0xdf, 0x6e, 0xd6, 0x2b,
  0x9f, 0xd6, 0xe1, 0x40, 0x4d, 0x6c, 0xb8, 0x98, 0xe1, 0x7b, 0xdb, 0xbb,
  0xbd, 0x51, 0xba, 0xb8, 0x41, 0xa9, 0x73, 0xa8, 0xad, 0xdd, 0x70, 0xf3,


  0x71, 0xb1, 0xf2, 0x8b, 0x25, 0x9a, 0xe4, 0xbe, 0x1e, 0x72, 0x36, 0xd8,
  0x88, 0x1c, 0xbc, 0x22, 0x81, 0xe8, 0xa4, 0x57, 0x22, 0x7e, 0xc7, 0xa2,

  0x15, 0xf9, 0x0e, 0x66, 0xaf, 0xd4, 0xc5, 0xb8, 0x6f, 0xe0, 0x3d, 0x99,
  0x00, 0x93, 0xae, 0xce, 0x4a, 0xa7, 0x29, 0x63, 0x33, 0xaa, 0xae, 0x86,
  0xde, 0x9b, 0xae, 0x5d, 0xea, 0x71, 0xa1, 0xaf, 0x28, 0xc6, 0x1d, 0xf6,
  0x66, 0xcb, 0x1a, 0xab, 0xe3, 0xe1, 0x8c, 0xca, 0x9d, 0x67, 0x21, 0x51,
  0xf9, 0xe1, 0xea, 0xcc, 0x53, 0x2d, 0x23, 0x74, 0xcd, 0x94, 0x07, 0x9b,
  0x9b, 0xd4, 0x60, 0xfc, 0x26, 0x7e, 0x78, 0xe8, 0x97, 0xc9, 0x26, 0xf0,
  0x93, 0x72, 0x93, 0xfc, 0xbd, 0xf2, 0xe9, 0x9b, 0x6a, 0x3e, 0x5b, 0xe5,


  0xa8, 0x4d, 0x4b, 0xc5, 0x94, 0x65, 0x2c, 0xc6, 0x31, 0xa3, 0x2e, 0xd8,
  0x22, 0x6d, 0xba, 0x90, 0x7c, 0xc0, 0x9a, 0x74, 0xd7, 0x6c, 0xf8, 0xc1,
  0x9d, 0x54, 0xa9, 0x8f, 0xf3, 0x36, 0xca, 0x3e, 0x12, 0x98, 0x06, 0xa2,
  0x95, 0x4d, 0x48, 0xce, 0x7c, 0xb0, 0xd8, 0x39, 0xf8, 0x02, 0xd6, 0xd3,
  0x26, 0x5e, 0x38, 0xc3, 0x80, 0xe4, 0x14, 0x04, 0x8a, 0x4f, 0xbe, 0x82,
  0xd0, 0x9e, 0x95, 0x6e, 0xe0, 0x03, 0xdd, 0x03, 0xb2, 0xe4, 0xa0, 0x9a,
  0xf1, 0x89, 0x99, 0x26, 0xa6, 0xe4, 0xa1, 0x32, 0x0f, 0x2a, 0x07, 0xfc,

  0xf7, 0x4b, 0xbf, 0xe8, 0x3c, 0xa2, 0x25, 0x78, 0xa9, 0x7b, 0xa8, 0xff,

  0x63, 0xd9, 0x17, 0xef, 0x3f, 0x7f, 0xcf, 0x6d, 0x8f, 0x41, 0xe6, 0x45,

  0x30, 0x7c, 0x44, 0xc7, 0xd2, 0x19, 0x5c, 0x5d, 0x76, 0xba, 0x12, 0xad,
  0x87, 0x0f, 0xf4, 0xe0, 0xdf, 0x11, 0x59, 0x99, 0xd8, 0x5e, 0x67, 0x7f,
  0x4f, 0x12, 0xeb, 0x78, 0x8e, 0xdc, 0x64, 0xce, 0x0f, 0x1f, 0xd1, 0x2f,
  0x4d, 0x72, 0x21, 0x77, 0xa1, 0xb5, 0xd5, 0xa8, 0x60, 0x00, 0xd6, 0x57,

  0xc8, 0x29, 0x3f, 0x5d, 0x0b, 0xbc, 0x1e, 0x56, 0xeb, 0x0c, 0xec, 0x23,
  0xd0, 0x0c, 0x4d, 0xb3, 0xdf, 0x08, 0x10, 0xe4, 0xc5, 0xad, 0xb4, 0x02,
  0x91, 0x30, 0x07, 0x33, 0x17, 0xaf, 0xfb, 0x72, 0xc3, 0x8b, 0xe8, 0x50,
  0x23, 0xbb, 0x58, 0x75, 0xd9, 0xb2, 0x63, 0x0a, 0x83, 0xd7, 0xd2, 0x62,
  0x58, 0x69, 0x15, 0x36, 0xec, 0x9b, 0x6c, 0x89, 0x67, 0x42, 0xa3, 0x34,
  0x06, 0x79, 0x02, 0xab, 0x66, 0xaf, 0x71, 0xfa, 0xba, 0x79, 0x81, 0x63,
  0x37, 0xfb, 0x8a, 0x47, 0x44, 0x16, 0x8d, 0x56, 0x68, 0xe3, 0xb7, 0x1b,
  0xe4, 0x60, 0x91, 0x01, 0xdb, 0xaa, 0xc9, 0x14, 0x5b, 0xc6, 0x39, 0x90,
  0xbe, 0x06, 0xdf, 0x84, 0x4d, 0xdb, 0xb3, 0x76, 0xfa, 0x61, 0x3c, 0xbd,
  0x20, 0x77, 0x3d, 0xf4, 0x76, 0x30, 0xe1, 0x9a, 0x28, 0x59, 0x33, 0x52,


  0xa3, 0x67, 0x2d, 0x4a, 0xd6, 0xf4, 0x2b, 0x97, 0x24, 0x2e, 0xe6, 0x26,
  0x8d, 0xe2, 0xca, 0x7c, 0xdf, 0xd7, 0xb3, 0x16, 0x5a, 0x5b, 0x29, 0x8a,
  0xc8, 0xb0, 0x60, 0x09, 0xb8, 0xfc, 0x1d, 0x9d, 0x80, 0x74, 0x00, 0xe5,
  0x74, 0x4f, 0x56, 0x55, 0x50, 0x88, 0x4f, 0x5c, 0xff, 0x38, 0x88, 0xf6,
  0x31, 0xf1, 0x51, 0x8d, 0xd0, 0x61, 0x2a, 0x9f, 0x20, 0xed, 0x9e, 0x3f,
  0x5f, 0x33, 0xe3, 0x08, 0x16, 0x4a, 0xd5, 0x46, 0xf6, 0xa2, 0x44, 0x9c,
  0xad, 0xde, 0x18, 0xee, 0x23, 0x5e, 0xae, 0x8f, 0xc2, 0x78, 0x48, 0x89,

  0xc2, 0xcb, 0x4c, 0xc0, 0x99, 0x29, 0xb6, 0x5f, 0x88, 0x09, 0x0a, 0x15,
  0x63, 0x05, 0x25, 0x35, 0x8e, 0x69, 0xf6, 0x30, 0x6a, 0x0a, 0x0d, 0x18,
  0x06, 0x6e, 0x21, 0x36, 0xbc, 0x56, 0x7f, 0xac, 0x6a, 0x8b, 0x0d, 0x50,
  0x35, 0x6a, 0x1b, 0x62, 0x94, 0x42, 0xd9, 0x35, 0x4f, 0xf7, 0x7f, 0xaa,
  0x1a, 0xda, 0x57, 0x15, 0x50, 0x83, 0xf9, 0x95, 0x87, 0xb5, 0xfd, 0x7f,
  0xd8, 0x61, 0x6d, 0xff, 0xdf, 0x70, 0x58, 0x3b, 0xbf, 0xf2, 0xb0, 0x76,
  0xfe, 0x0f, 0x3b, 0xac, 0x9d, 0xff, 0x1b, 0x0e, 0x6b, 0xf7, 0x57, 0x1e,

  0xd6, 0xee, 0x6f, 0x7e, 0x58, 0xe7, 0xf8, 0x7b, 0x62, 0xfb, 0xaa, 0xf5,
  0xa5, 0x65, 0x53, 0x29, 0x1a, 0x3e, 0x52, 0xf3, 0xf9, 0x21, 0x6e, 0x88,
  0x18, 0x0c, 0xa2, 0x4c, 0x96, 0x4d, 0xab, 0xe9, 0xa8, 0x32, 0xb8, 0x52,
  0xa6, 0x43, 0x8a, 0x84, 0xa0, 0x04, 0xad, 0x1e, 0x35, 0x9e, 0xaf, 0x73,
  0xf4, 0xa0, 0x80, 0x66, 0xd0, 0x8d, 0xce, 0x07, 0x03, 0x4e, 0x3b, 0x1a,
  0x50, 0xe8, 0xb4, 0x79, 0x58, 0xe8, 0x8c, 0x24, 0x1b, 0x67, 0x1d, 0xd5,
  0xc6, 0x0b, 0x98, 0xa1, 0x65, 0x2e, 0xfc, 0xde, 0x3c, 0x1e, 0xe1, 0x8f,
  0xb7, 0xfa, 0xdb, 0x76, 0x73, 0x36, 0x7e, 0x01, 0x10, 0x9c, 0x8d, 0x6b,

  0x06, 0xad, 0xef, 0x00, 0x64, 0x3b, 0x66, 0x6a, 0xa0, 0x96, 0x5a, 0x3f,
  0x9a, 0x07, 0x01, 0x7d, 0x53, 0xc3, 0xa6, 0x1d, 0x1c, 0x9c, 0x3a, 0xc0,
  0x49, 0x68, 0x9a, 0x88, 0x5a, 0x1d, 0xa8, 0x94, 0x83, 0xc1, 0x38, 0x46,
  0xbe, 0xf4, 0x6b, 0x06, 0xef, 0xd2, 0x29, 0x62, 0xe1, 0xfd, 0xd2, 0xc8,
  0xb2, 0x13, 0xc5, 0xfd, 0x6f, 0x8b, 0x2c, 0x3f, 0xcb, 0x3e, 0x76, 0xaf,
  0x4c, 0xd1, 0xd3, 0xd6, 0x6a, 0x61, 0xfc, 0x76, 0xeb, 0x58, 0xc4, 0x4a,
  0x20, 0x82, 0x76, 0x1c, 0x33, 0xe9, 0x60, 0xa6, 0xcd, 0x89, 0xbc, 0x6b,
  0xe3, 0x7b, 0x6c, 0xc6, 0xf8, 0xf8, 0x4b, 0xb9, 0x66, 0xdd, 0x1b, 0xc4,
  0x21, 0x85, 0xb6, 0xe0, 0x55, 0x96, 0x4c, 0x71, 0xcb, 0x4c, 0x3f, 0x63,
  0x31, 0x22, 0x08, 0xfb, 0xcc, 0x4b, 0x3f, 0x18, 0x25, 0x8c, 0x8c, 0x95,
  0x3e, 0xa5, 0x29, 0xbd, 0xa8, 0xaf, 0x37, 0x1e, 0x25, 0xbd, 0xb8, 0x1c,
  0xa5, 0x69, 0xb8, 0xb5, 0xab, 0xc6, 0x81, 0x31, 0xf1, 0x86, 0x3c, 0xf8,
  0xf0, 0x7c, 0x84, 0x31, 0x37, 0xed, 0xd4, 0x8e, 0xfc, 0x90, 0xb0, 0xa2,

  0x70, 0xba, 0xf9, 0xb2, 0x9a, 0xe6, 0xea, 0xcc, 0xef, 0x06, 0x1c, 0x83,
  0x18, 0x95, 0xa3, 0x23, 0x86, 0xd3, 0x19, 0x15, 0xe9, 0x82, 0x70, 0x68,
  0xdd, 0xb6, 0x70, 0x5d, 0xd3, 0x35, 0x9d, 0x9c, 0x6d, 0x12, 0x3d, 0xe5,
  0x26, 0xe2, 0x1f, 0x3c, 0x03, 0xb5, 0xd3, 0xeb, 0xa0, 0x5b, 0xd3, 0x74,

  0xd3, 0x82, 0x77, 0x11, 0x3d, 0xdc, 0x89, 0x5b, 0x46, 0x0a, 0x7a, 0xd4,
  0x12, 0x86, 0xd7, 0x30, 0x06, 0x90, 0xd0, 0xa3, 0x22, 0x54, 0x53, 0xc3,
  0x10, 0x0d, 0x4f, 0xa2, 0x00, 0x80, 0x3b, 0x88, 0xee, 0xf5, 0x5c, 0x90,
  0x3a, 0x6e, 0x92, 0x07, 0xae, 0x23, 0xf5, 0x4d, 0x2e, 0x06, 0x36, 0xc4,
  0x78, 0xaa, 0x84, 0xce, 0x8f, 0x06, 0xc7, 0xa7, 0xa7, 0xb5, 0xaa, 0x53,
  0xdc, 0x3c, 0x86, 0xb7, 0x25, 0x68, 0x90, 0x12, 0x61, 0x7e, 0x31, 0x68,
  0x1b, 0x8a, 0xc2, 0x73, 0xaf, 0x48, 0xb8, 0x7e, 0x14, 0x79, 0x01, 0x4e,
  0x90, 0x6a, 0x27, 0xcf, 0x58, 0x0c, 0x8f, 0x0c, 0xa6, 0x99, 0x22, 0xf8,
  0xda, 0xcd, 0x72, 0x1e, 0x67, 0x9f, 0x1e, 0x39, 0x2e, 0x5c, 0xcc, 0x21,
  0xbb, 0xc5, 0xf7, 0xca, 0x8d, 0xf4, 0xfa, 0xb4, 0x16, 0x68, 0xcc, 0x71,
  0x59, 0x48, 0xdb, 0x46, 0x46, 0x52, 0x93, 0xce, 0x1a, 0xb0, 0x4c, 0xc2,
  0xb9, 0xe4, 0x91, 0x61, 0xad, 0x1a, 0x3c, 0x66, 0xd0, 0x7a, 0x61, 0x24,

  0x78, 0x67, 0x9a, 0x4e, 0x41, 0x0e, 0xa3, 0xad, 0xac, 0x96, 0xdb, 0x6e,

  0x8a, 0x4a, 0xfa, 0xc8, 0xef, 0x79, 0x03, 0xdc, 0x0b, 0xf0, 0x24, 0xfd,
  0xcb, 0x05, 0x68, 0xb9, 0x01, 0x54, 0x29, 0x63, 0x9b, 0xd0, 0x3d, 0x7d,
  0x09, 0x48, 0x17, 0xe9, 0xfc, 0xa9, 0x13, 0x6e, 0xdd, 0xf2, 0x8c, 0x9b,
  0x54, 0x03, 0x60, 0xf9, 0x7d, 0x29, 0x2d, 0x80, 0x08, 0xe3, 0x30, 0x31,
  0xf7, 0x4c, 0x97, 0x59, 0xfa, 0x40, 0x05, 0x1d, 0xa0, 0x4a, 0x1c, 0x62,
  0xdb, 0x92, 0x96, 0x96, 0x1c, 0xc7, 0xac, 0xd8, 0x44, 0x5a, 0x9f, 0x42,

  0xab, 0xf8, 0x00, 0x2f, 0x83, 0xca, 0x38, 0xc7, 0xfc, 0x1e, 0x1e, 0xa3,
  0xeb, 0x62, 0xa3, 0x13, 0x5b, 0x0f, 0xe4, 0x07, 0x65, 0x49, 0x85, 0xfe,
  0x8f, 0x95, 0x91, 0xad, 0x7a, 0xb4, 0xf0, 0x9a, 0x10, 0xc1, 0x16, 0x58,
  0x34, 0xb0, 0xa2, 0xc3, 0x36, 0x07, 0xfc, 0x9c, 0x14, 0x7d, 0x17, 0x52,
  0x1b, 0x23, 0x59, 0xb6, 0x11, 0x97, 0xd0, 0x8f, 0x48, 0x7d, 0x6a, 0xcb,
  0x12, 0x4a, 0x65, 0x32, 0xfd, 0x83, 0x6c, 0xf7, 0xad, 0xb4, 0x19, 0x99,
  0xa0, 0xfe, 0x4e, 0x36, 0x7c, 0x2b, 0x9d, 0x31, 0x7d, 0xd9, 0xdd, 0x68,
  0x03, 0xd6, 0x77, 0x3a, 0x12, 0xd7, 0xba, 0x94, 0x11, 0x4e, 0x61, 0x3a,
  0x43, 0xf2, 0xdf, 0xd4, 0xec, 0x86, 0x99, 0x9f, 0x7b, 0x6f, 0x5b, 0x5f,
  0x31, 0xab, 0xc3, 0x42, 0x2f, 0x8a, 0x70, 0xe2, 0xbf, 0x8f, 0x59, 0xbd,
  0x67, 0xb7, 0x75, 0x7d, 0x11, 0xd2, 0xce, 0xae, 0xa9, 0xbe, 0x38, 0xf1,
  0xe7, 0x1b, 0xec, 0x86, 0xae, 0xf3, 0x2a, 0x98, 0x10, 0xeb, 0xfd, 0xee,
  0x35, 0xa4, 0xed, 0xf4, 0xf3, 0xf1, 0xf2, 0x9a, 0x4d, 0xeb, 0x2c, 0x51,
  0xa3, 0x18, 0x79, 0x16, 0x8b, 0xed, 0xb0, 0x81, 0x08, 0xe6, 0xe9, 0x99,
  0xe6, 0xcb, 0x7c, 0xb0, 0xdc, 0xb6, 0x5d, 0x6a, 0x7a, 0x3d, 0x64, 0xdd,
  0x74, 0x56, 0xab, 0x9b, 0x10, 0x57, 0xad, 0x96, 0x6a, 0xad, 0x83, 0xb2,

  0xce, 0x4a, 0x1b, 0x5f, 0x1e, 0x6c, 0xfe, 0xa1, 0xd0, 0xec, 0xed, 0xb0,
  0xdd, 0x41, 0x78, 0xa7, 0x7a, 0x02, 0x1b, 0x72, 0x8e, 0xf5, 0x58, 0xd1,
  0x4d, 0x31, 0x56, 0xb6, 0xa1, 0x6a, 0x27, 0xdc, 0xf0, 0x34, 0x73, 0xc9,
  0xdd, 0x8b, 0x6e, 0x49, 0x03, 0x30, 0x61, 0x4b, 0xd1, 0x91, 0xa0, 0xca,
  0x27, 0xe8, 0xea, 0x6c, 0x7e, 0xa7, 0xef, 0x7e, 0x87, 0x8b, 0x65, 0x36,
  0x3c, 0x00, 0xb7, 0xc7, 0x66, 0x77, 0x72, 0xf3, 0x6d, 0x9c, 0xa7, 0xd6,
  0x84, 0xcb, 0xcc, 0x28, 0xb9, 0x18, 0x33, 0xab, 0x29, 0xf1, 0xc0, 0xbf,
  0x89, 0x04, 0x52, 0x60, 0x8d, 0x3c, 0x02, 0x98, 0x95, 0x3e, 0x42, 0x9c,
  0x71, 0x2d, 0x1c, 0x8d, 0x51, 0x64, 0x65, 0xb5, 0x18, 0xcc, 0x65, 0x68,
  0x51, 0xcf, 0x53, 0x49, 0xfd, 0x0d, 0x83, 0xcd, 0xac, 0xdc, 0x92, 0x41,
  0xe4, 0x68, 0xfe, 0x75, 0x36, 0xad, 0x02, 0xb1, 0xf7, 0x50, 0xae, 0x3d,
  0x52, 0xda, 0xfa, 0xb1, 0x08, 0xda, 0x7e, 0x74, 0x82, 0x6f, 0xf8, 0x83,
  0xfd, 0x59, 0x3a, 0x18, 0xa5, 0x6e, 0x37, 0xd0, 0x7b, 0xba, 0x0c, 0x4d,
  0xba, 0x12, 0xca, 0x93, 0xd6, 0x0e, 0x54, 0xdf, 0xdf, 0x97, 0x46, 0x57,
  0xa8, 0xb4, 0xab, 0x9a, 0x19, 0x75, 0xa6, 0xb3, 0x7c, 0x38, 0x84, 0x85,
  0x77, 0x1c, 0xa5, 0x14, 0xbe, 0xec, 0xf9, 0x92, 0xdd, 0x79, 0x80, 0x65,
  0x35, 0x25, 0x63, 0xba, 0xcb, 0x79, 0x69, 0xd2, 0x1c, 0x01, 0x05, 0xb2,
  0x3a, 0xf9, 0xe5, 0xfb, 0x8a, 0x85, 0x1e, 0x90, 0x33, 0x92, 0x21, 0x2f,
  0x84, 0x81, 0x0b, 0xab, 0xb9, 0xfd, 0xa9, 0x9c, 0x11, 0x7f, 0xaa, 0x13,
  0xe4, 0x5c, 0xc3, 0xa8, 0x2d, 0x5d, 0xb6, 0xd6, 0x8a, 0xaa, 0xab, 0x9d,
  0x08, 0xd3, 0xd2, 0x8f, 0xaf, 0xd0, 0x2e, 0xd4, 0x17, 0xd4, 0xf9, 0x07,

  0xfe, 0xb1, 0xdd, 0xc5, 0xff, 0xee, 0xfc, 0xb3, 0x43, 0x21, 0x98, 0x83,
  0xcd, 0xcd, 0xfb, 0xfb, 0xfb, 0xbe, 0x02, 0x0a, 0xc2, 0x91, 0x7d, 0xe6,
  0x57, 0xfe, 0x21, 0x0e, 0x5b, 0xcb, 0x07, 0xae, 0xa3, 0x4e, 0x3a, 0x9f,
  0xfe, 0xb8, 0xdd, 0xdb, 0xde, 0xda, 0xda, 0xfa, 0xb9, 0xbf, 0xc0, 0x2d,
  0x9e, 0xd0, 0xb0, 0xf0, 0x5f, 0x77, 0xd8, 0x4d, 0x9e, 0xc9, 0x66, 0x10,
  0xf2, 0x55, 0x36, 0xd2, 0x60, 0xb8, 0x64, 0xdc, 0xb6, 0x83, 0x09, 0xf9,
  0xc0, 0x61, 0x32, 0x1c, 0x49, 0x8e, 0xdb, 0xeb, 0xe8, 0xb9, 0x83, 0x1e,
  0x86, 0x10, 0xf6, 0x77, 0x77, 0x76, 0x22, 0x56, 0x39, 0xb8, 0x3c, 0x8d,
  0x93, 0x19, 0x10, 0x99, 0x40, 0x5a, 0x8c, 0xb3, 0x2c, 0x43, 0xf8, 0xc5,
  0x98, 0x83, 0x35, 0x40, 0x1b, 0x2d, 0x29, 0x9d, 0x9c, 0x3b, 0x80, 0x10,
  0x8c, 0xc0, 0x7d, 0xf2, 0xf1, 0xa3, 0x1d, 0x18, 0xa8, 0xbc, 0x40, 0xde,
  0xca, 0xdd, 0x40, 0x0d, 0xce, 0x63, 0x5c, 0x86, 0xb4, 0x36, 0x53, 0x6a,
  0x46, 0x42, 0x8e, 0x60, 0x72, 0xb3, 0x5c, 0x1a, 0x5d, 0x53, 0xe4, 0x7e,
  0xb2, 0x2c, 0xa4, 0xcb, 0x11, 0x25, 0x3a, 0xdc, 0xc7, 0x8f, 0x35, 0x61,
  0x0f, 0x3b, 0x7e, 0x08, 0xff, 0xf1, 0xfc, 0xda, 0xa6, 0x80, 0x56, 0xba,
  0x34, 0x4f, 0x92, 0x6a, 0x74, 0xe3, 0xa1, 0xbe, 0x13, 0xfb, 0x46, 0xd5,
  0xfd, 0x06, 0x56, 0x63, 0x40, 0xd5, 0xdb, 0x3a, 0x40, 0xda, 0xba, 0x5c,
  0x18, 0x14, 0xfb, 0x7d, 0x50, 0x65, 0x02, 0x37, 0x84, 0x67, 0x9e, 0xd8,

  0x86, 0xee, 0x69, 0xba, 0x90, 0x52, 0xce, 0x68, 0x5a, 0x6a, 0xdd, 0xf0,

  0xe8, 0x26, 0x99, 0x0b, 0xbf, 0x5c, 0xd7, 0x94, 0xc9, 0x8e, 0x10, 0x61,
  0xc7, 0x17, 0x69, 0x9d, 0x89, 0xfc, 0x06, 0x16, 0xb3, 0x21, 0x75, 0xb7,
  0x46, 0xca, 0x49, 0x33, 0xa4, 0xe9, 0x12, 0xad, 0xc6, 0x61, 0x2c, 0xe2,
  0x44, 0x0b, 0xc2, 0xdb, 0x32, 0x9b, 0x91, 0x27, 0x26, 0x05, 0x49, 0x31,
  0xf4, 0xbf, 0xf4, 0x44, 0xf7, 0x11, 0xa1, 0x4a, 0x09, 0x26, 0x70, 0x63,

  0xdf, 0x9c, 0x1e, 0x5f, 0x53, 0x11, 0x6c, 0x97, 0xca, 0x65, 0xba, 0x54,
  0xf9, 0xea, 0x37, 0xaa, 0xba, 0x24, 0xff, 0x08, 0x11, 0xaa, 0x44, 0x93,
  0x62, 0x9b, 0x62, 0x67, 0x51, 0xc8, 0xb5, 0x8e, 0xcd, 0x69, 0x31, 0x16,
  0xc8, 0x1d, 0xae, 0x69, 0x89, 0x26, 0x31, 0x71, 0x6f, 0xbf, 0xbf, 0xc5,
  0x6b, 0xb4, 0x3d, 0xb0, 0xb5, 0x52, 0x8b, 0xdc, 0x48, 0x1a, 0x61, 0x8c,
  0xc3, 0x39, 0x03, 0x66, 0x3a, 0xdd, 0x88, 0xd1, 0xcf, 0x19, 0x4a, 0x41,
  0x7f, 0xeb, 0x64, 0x4b, 0xae, 0xd4, 0x4c, 0x5d, 0xf0, 0x53, 0x24, 0xcb,
  0x06, 0x6c, 0x35, 0xc6, 0xc6, 0x72, 0x53, 0x65, 0x29, 0x38, 0x2b, 0xa1,
  0x72, 0x39, 0xa2, 0x89, 0x48, 0x3c, 0x58, 0x55, 0x92, 0x75, 0x6d, 0xef,
  0xa9, 0x1c, 0xa5, 0x80, 0x48, 0x2c, 0xa9, 0x3f, 0xaa, 0xb5, 0x6a, 0x0d,
  0xe9, 0x27, 0x5e, 0x4b, 0xaf, 0xde, 0xd7, 0x82, 0x3c, 0xcb, 0x7a, 0x72,
  0xa8, 0xf4, 0x0b, 0x8f, 0x72, 0x43, 0xb3, 0x5c, 0xd9, 0x6e, 0x55, 0x85,
  0xb3, 0x8f, 0xee, 0x42, 0x3e, 0xf6, 0xaa, 0xd9, 0x94, 0x1d, 0xae, 0x68,
  0xcf, 0x47, 0xab, 0x1c, 0x51, 0x3a, 0xd4, 0xa3, 0xe9, 0x1d, 0x18, 0xcb,
  0x0a, 0x89, 0x12, 0xc8, 0xd8, 0x23, 0xff, 0x54, 0xe7, 0x0b, 0x0c, 0x0b,
  0xbd, 0x3e, 0xea, 0xd4, 0x6e, 0x64, 0xa8, 0x7b, 0x55, 0xc9, 0xdc, 0xad,
  0x6e, 0xc9, 0x08, 0x4f, 0x43, 0xbe, 0x9f, 0x3c, 0x54, 0x2c, 0xf7, 0x27,
  0xd4, 0x81, 0x3a, 0xdb, 0xdd, 0x89, 0xca, 0x47, 0x50, 0x22, 0xe6, 0xee,
  0x26, 0x34, 0x1b, 0x8e, 0x07, 0x43, 0x61, 0xb5, 0x4e, 0x7d, 0xcc, 0xb7,
  0x3e, 0xe0, 0x2b, 0x47, 0xf4, 0x8a, 0xf4, 0xf6, 0xd2, 0x7c, 0xbd, 0x67,
  0x74, 0xb1, 0xc7, 0x7c, 0x69, 0xe6, 0x62, 0xc3, 0x59, 0x9c, 0xdd, 0x9a,
  0xc4, 0x6a, 0x1e, 0xa9, 0x8b, 0xed, 0x61, 0xb9, 0x92, 0xd4, 0xfe, 0x50,
  0x12, 0xf8, 0x48, 0x32, 0x7a, 0x5d, 0xd4, 0x50, 0x2f, 0x9d, 0xc7, 0x05,
  0x96, 0x18, 0xd2, 0x9e, 0x49, 0xf2, 0xb3, 0x7b, 0x26, 0xa6, 0xe9, 0x18,
  0x4b, 0xf3, 0x77, 0x94, 0xd1, 0xce, 0xcf, 0xf9, 0x22, 0x8c, 0x63, 0xec,
  0x8c, 0xfb, 0xa3, 0x19, 0xe4, 0x2d, 0x1d, 0xe1, 0x7e, 0xbb, 0xd8, 0xba,
  0x01, 0x42, 0x06, 0xae, 0x0d, 0xff, 0x3d, 0xd0, 0x10, 0x60, 0x1b, 0xff,
  0x36, 0xd2, 0xc3, 0x34, 0x3d, 0x37, 0x41, 0x43, 0xb7, 0x8d, 0x2d, 0xab,
  0x77, 0x36, 0x50, 0x19, 0x8a, 0xb0, 0xf7, 0xa3, 0x0b, 0x6b, 0x4e, 0x66,
  0x5d, 0x82, 0xc4, 0xad, 0x8a, 0x91, 0x18, 0x93, 0xf4, 0x77, 0x49, 0xdd,
  0x8c, 0x67, 0xa1, 0x1d, 0xa0, 0xae, 0x6e, 0x29, 0xa1, 0x72, 0x97, 0xa1,
  0xd9, 0x29, 0x7c, 0xb7, 0xf0, 0x39, 0xd8, 0x58, 0x6c, 0x2b, 0xca, 0xa1,
  0xfc, 0xd8, 0xcb, 0xcc, 0xe6, 0x45, 0x84, 0xfb, 0xc9, 0x71, 0x60, 0xdf,
  0x34, 0x92, 0xb5, 0x8f, 0x97, 0x12, 0xcc, 0x9f, 0x81, 0x5c, 0xe4, 0xdc,
  0x13, 0xdb, 0x0f, 0x02, 0x58, 0x5a, 0x9e, 0x75, 0x3d, 0x7c, 0x27, 0x0c,
  0x9d, 0xb3, 0xc7, 0x09, 0x73, 0x02, 0xe7, 0xd2, 0xbf, 0xdb, 0x34, 0x01,
  0x8e, 0xf9, 0x3d, 0xa5, 0x4d, 0xf7, 0xcb, 0x4f, 0xb4, 0x1a, 0xe6, 0x5e,
  0x40, 0x7a, 0x18, 0x40, 0x85, 0x5d, 0x2e, 0xe5, 0xf3, 0x96, 0x74, 0x91,
  0xe9, 0x8d, 0x14, 0xb8, 0xa9, 0x94, 0x0b, 0xa9, 0x4b, 0xd7, 0xc6, 0xbc,
  0xc1, 0xa6, 0x4d, 0x8e, 0xff, 0x43, 0x30, 0xbb, 0x40, 0xdd, 0xf4, 0xf4,
  0x65, 0xbc, 0x8d, 0x94, 0x86, 0x08, 0x3b, 0x4c, 0x40, 0xd1, 0x98, 0xcf,
  0x83, 0xd9, 0x92, 0x36, 0x39, 0x19, 0xf5, 0x89, 0x24, 0x63, 0xab, 0x3e,
  0x37, 0xd8, 0x6b, 0x70, 0x3e, 0x3e, 0x76, 0xe2, 0x98, 0xa1, 0x75, 0x4b,
  0x6d, 0x7a, 0x6c, 0x1a, 0x9c, 0x4f, 0x45, 0x8e, 0x94, 0x98, 0xea, 0x09,
  0x1c, 0xcd, 0xc2, 0x5a, 0x97, 0xba, 0xf1, 0x81, 0xa6, 0x52, 0xbc, 0x52,
  0xe9, 0xa1, 0xf1, 0xe8, 0x42, 0xfe, 0xc2, 0x5d, 0xb8, 0x4b, 0x79, 0xef,
  0x19, 0xcc, 0x6c, 0x58, 0xa4, 0xc9, 0x04, 0x35, 0x10, 0x5a, 0x91, 0xe4,
  0x90, 0x7a, 0x5e, 0xa3, 0x04, 0x71, 0xaf, 0x31, 0x3b, 0x1d, 0xce, 0x11,
  0x0b, 0x88, 0x53, 0xf2, 0x1c, 0x31, 0x4f, 0x34, 0xbd, 0xb8, 0x18, 0x64,
  0x1e, 0x6b, 0x25, 0x69, 0x11, 0xb1, 0xd6, 0x34, 0x05, 0xf3, 0x33, 0xa9,
  0x0f, 0xbb, 0x78, 0x3c, 0x91, 0xba, 0x32, 0xbc, 0xc5, 0xa6, 0x97, 0x23,
  0x7d, 0x91, 0xd9, 0xaa, 0x68, 0x37, 0x4e, 0x3b, 0xb0, 0x30, 0x72, 0x33,
  0xee, 0xd2, 0xb7, 0x49, 0x01, 0xf2, 0x2f, 0x2f, 0xa3, 0xef, 0xf6, 0x35,
  0x0d, 0x53, 0x3a, 0xd2, 0x8b, 0x2a, 0x62, 0x8a, 0x5e, 0xa9, 0x5c, 0x80,

  0xa7, 0xee, 0x85, 0x2f, 0xb8, 0x78, 0x83, 0xb9, 0x97, 0xbe, 0x2e, 0x0a,
  0x09, 0x1b, 0xe9, 0x59, 0xf3, 0xca, 0xc1, 0x4f, 0x80, 0xfc, 0xe0, 0x9f,
  0xe1, 0xee, 0x63, 0xb6, 0x89, 0x34, 0x68, 0x57, 0x48, 0x2c, 0xe8, 0xcb,
  0x83, 0xb3, 0x1c, 0x56, 0xa4, 0xe4, 0x80, 0x74, 0x32, 0x13, 0x8f, 0xae,
  0x53, 0x74, 0xf7, 0x48, 0x82, 0x8d, 0xaf, 0x02, 0x72, 0xa9, 0x82, 0xa8,
  0x35, 0x16, 0x1f, 0xbc, 0x91, 0x1c, 0x81, 0x7a, 0x64, 0x79, 0x83, 0x9a,
  0x18, 0x6a, 0x08, 0x64, 0xe4, 0xb7, 0xa8, 0xf7, 0x2c, 0x1f, 0xcf, 0xaf,
  0xcf, 0xde, 0x8b, 0xe9, 0x6c, 0xd9, 0x9c, 0x68, 0x35, 0xd6, 0x2c, 0x16,
  0xb6, 0xc3, 0x54, 0xe5, 0x63, 0x02, 0xe8, 0x66, 0x68, 0x79, 0x21, 0x23,

  0x52, 0xe0, 0xb6, 0x75, 0x25, 0x17, 0xa7, 0x90, 0xc2, 0x35, 0x31, 0xba,

  0x74, 0x53, 0x03, 0x9e, 0x6c, 0x24, 0xc2, 0x92, 0xce, 0x9e, 0x5c, 0x25,
  0x20, 0x51, 0x80, 0xd1, 0xac, 0x02, 0x58, 0x47, 0x39, 0xa7, 0xfc, 0xd0,


  0xf9, 0x32, 0xaf, 0x04, 0x59, 0x0c, 0xf7, 0xcb, 0x88, 0xde, 0xe4, 0xf7,
  0x59, 0xef, 0x0c, 0xeb, 0x8f, 0xa3, 0xb3, 0x7c, 0x0a, 0x5b, 0x75, 0x4e,
  0x0a, 0x4b, 0xf3, 0xd4, 0x3e, 0x5c, 0x9e, 0x47, 0xeb, 0x28, 0x77, 0xa3,
  0x4b, 0x83, 0x39, 0x87, 0x4f, 0x6e, 0x88, 0x7d, 0x51, 0xb2, 0x4e, 0x22,
  0xb3, 0xe9, 0x46, 0x27, 0x3f, 0x1c, 0xbd, 0xbf, 0x3c, 0x3b, 0xf9, 0x89,
  0x4d, 0x0c, 0x6f, 0x39, 0xf8, 0xe3, 0xaf, 0x1c, 0x9b, 0x8b, 0x22, 0x34,
  0x98, 0x33, 0x08, 0xf3, 0x08, 0x02, 0xce, 0x30, 0x7d, 0x32, 0x6b, 0x54,
  0x12, 0x1c, 0x0c, 0x2e, 0x4f, 0x7b, 0x0a, 0x18, 0xc7, 0xdd, 0x4a, 0xd3,
  0x0c, 0x0d, 0x24, 0x92, 0x47, 0xd2, 0xe8, 0xe4, 0x5b, 0x3f, 0x18, 0xa5,
  0x37, 0xa2, 0x1b, 0x9d, 0x6b, 0x2a, 0x62, 0x97, 0x4e, 0x1c, 0xaf, 0xe0,
  0x9b, 0x74, 0x4a, 0x01, 0xa5, 0x46, 0x02, 0x19, 0x12, 0x07, 0x4d, 0x61,
  0xe4, 0x95, 0xf3, 0x50, 0x93, 0x39, 0x8b, 0x96, 0x57, 0x26, 0x33, 0x76,
  0x5f, 0xb6, 0x4a, 0x48, 0x62, 0x06, 0x74, 0x8c, 0x58, 0x27, 0xe2, 0x85,
  0xca, 0xa4, 0x6e, 0x64, 0xf8, 0xe8, 0x76, 0xb7, 0x33, 0x34, 0xc2, 0x72,
  0x41, 0xb4, 0x09, 0xc3, 0xf6, 0x0f, 0xa2, 0x4e, 0x6f, 0x19, 0x1d, 0x74,
  0x3e, 0xa1, 0x8a, 0xe0, 0x7a, 0x7a, 0x03, 0xcd, 0xb2, 0x24, 0x5e, 0xa6,
  0xae, 0x60, 0x69, 0xf1, 0x40, 0xfe, 0x6a, 0xf5, 0xb6, 0xb1, 0xc7, 0x1c,
  0xae, 0xba, 0x48, 0x5f, 0x2a, 0x4d, 0x9b, 0x06, 0xe0, 0x5c, 0x32, 0xe2,
  0x4b, 0x09, 0xc7, 0x4d, 0x41, 0x43, 0x5d, 0x03, 0x36, 0xc0, 0x6e, 0x7c,
  0x64, 0xf1, 0x1d, 0x8a, 0x4d, 0x8a, 0x05, 0x95, 0x8f, 0x41, 0x57, 0x3d,
  0xe2, 0x18, 0x44, 0x89, 0x19, 0xe8, 0xfe, 0x70, 0xb4, 0x57, 0x6b, 0x5f,
  0xae, 0x49, 0x7c, 0xb5, 0x23, 0x4a, 0x15, 0xf2, 0xea, 0x0e, 0x2b, 0xb0,
  0xa8, 0x18, 0xe3, 0xec, 0xe1, 0xc6, 0xaf, 0x1d, 0xae, 0x69, 0x43, 0x19,
  0x7d, 0xb2, 0xc9, 0x70, 0xe8, 0x3d, 0x09, 0xf1, 0xa9, 0x5a, 0x2d, 0xa7,
  0x2f, 0xb9, 0xe5, 0x20, 0x35, 0xc7, 0x09, 0x09, 0x6f, 0xee, 0x1b, 0xc9,
  0x18, 0x8f, 0x1c, 0x42, 0x6c, 0xaa, 0x1c, 0xb5, 0x99, 0xcb, 0x5c, 0xff,
  0x4d, 0xe7, 0xea, 0xf4, 0x56, 0xc6, 0xa0, 0x84, 0xed, 0xf1, 0x37, 0xe4,
  0xf6, 0xbc, 0x6d, 0xfa, 0x10, 0xa7, 0x96, 0xa2, 0x71, 0x4c, 0x9a, 0x70,
  0xb0, 0x84, 0xb0, 0xdb, 0xa8, 0xcd, 0xa3, 0xb8, 0x96, 0xef, 0xbe, 0xac,
  0x0c, 0xa2, 0x29, 0x8e, 0xbc, 0x56, 0x60, 0xfb, 0xa6, 0xfc, 0x96, 0x7a,
  0xba, 0xe6, 0x45, 0xeb, 0x4d, 0x55, 0xd7, 0xae, 0xa5, 0x3c, 0x96, 0xb6,
  0x5a, 0x21, 0x81, 0xea, 0x04, 0x3d, 0x28, 0xea, 0x80, 0xd8, 0x76, 0x5d,
  0x1f, 0xcd, 0x86, 0x5b, 0xcb, 0x69, 0x53, 0x19, 0x13, 0x7d, 0xaa, 0xc7,
  0x4a, 0xb5, 0x4c, 0x38, 0x88, 0xa2, 0xef, 0x94, 0xdb, 0xd6, 0xbb, 0x17,
  0x8a, 0x2f, 0x9b, 0xda, 0x0b, 0xb4, 0xd7, 0x35, 0xd2, 0x36, 0xd9, 0x7d,

  0xf2, 0x2a, 0x43, 0x6d, 0x30, 0xc4, 0xcc, 0x2f, 0x9c, 0xfc, 0x19, 0x0c,
  0x8b, 0x7c, 0x27, 0xb7, 0xaa, 0xf4, 0xed, 0xac, 0x37, 0x12, 0x38, 0x73,
  0xe3, 0x51, 0x52, 0x2a, 0xc8, 0x8e, 0x43, 0xb1, 0x51, 0x34, 0x3c, 0xaf,

  0x49, 0x03, 0x29, 0x79, 0xf7, 0xcb, 0x7e, 0x48, 0x85, 0x95, 0x36, 0x44,
  0x1c, 0xb2, 0x93, 0x15, 0xb1, 0x87, 0x9d, 0xa2, 0x69, 0x3a, 0x84, 0xe4,
  0xed, 0x74, 0xcd, 0xd8, 0x81, 0xd0, 0x2a, 0x49, 0x8f, 0xdd, 0x62, 0x4c,
  0xc1, 0x8a, 0x47, 0x49, 0xac, 0xe1, 0xb6, 0xdd, 0xd9, 0xad, 0xa6, 0x1b,
  0xe2, 0xc8, 0xc9, 0x43, 0x32, 0x5a, 0x56, 0xf5, 0x12, 0x38, 0x67, 0x4e,
  0x02, 0xec, 0x44, 0x53, 0x5a, 0xa7, 0x8b, 0xa0, 0xc6, 0xe8, 0xa5, 0xa2,
  0xf2, 0x1c, 0x74, 0x36, 0x34, 0x88, 0x1b, 0x8b, 0x0e, 0xcf, 0xbf, 0x08,
  0xc5, 0x67, 0x75, 0xca, 0x45, 0xc2, 0x1e, 0x55, 0x9b, 0xaa, 0x10, 0xfc,
  0x3c, 0xd0, 0x68, 0x11, 0xfc, 0xfa, 0x5b, 0xf6, 0xbd, 0x39, 0x1f, 0x37,
  0xdd, 0x3a, 0xc5, 0x2d, 0x57, 0x7a, 0x57, 0xd9, 0xfb, 0x32, 0xb5, 0x2d,

  0x07, 0x06, 0x75, 0x07, 0xd4, 0x4d, 0x86, 0xbc, 0xbe, 0xaa, 0x9b, 0xef,
  0xb9, 0x43, 0x4f, 0x2f, 0xef, 0x5e, 0x38, 0xde, 0x6c, 0x94, 0x78, 0xf4,
  0x23, 0xc3, 0xf1, 0xbd, 0x55, 0xdc, 0x16, 0xc3, 0x3d, 0xf8, 0xe3, 0x5b,
  0xfc, 0x63, 0xc2, 0x7e, 0x01, 0x01, 0xd5, 0x63, 0x3f, 0xac, 0x4f, 0xda,
  0x08, 0x8a, 0x10, 0xb9, 0xc8, 0x0a, 0x94, 0xa9, 0x85, 0x85, 0x8a, 0x88,
  0xc0, 0x67, 0xc1, 0x90, 0xc8, 0xaa, 0xd1, 0x61, 0xba, 0x5c, 0x3c, 0xec,
  0x07, 0x29, 0xe5, 0x7f, 0x84, 0x18, 0xc7, 0x88, 0x6c, 0x5d, 0xf2, 0x39,
  0x0d, 0xb8, 0xa5, 0x6a, 0x1e, 0xaa, 0x1f, 0x85, 0xad, 0xfa, 0x3b, 0x06,
  0x2a, 0x4c, 0x25, 0x3b, 0x70, 0x00, 0x4d, 0xad, 0x50, 0x02, 0xb4, 0x09,
  0x1d, 0xec, 0x9e, 0xc6, 0x8b, 0xc6, 0xfc, 0x2c, 0x6d, 0x99, 0x42, 0xfb,

  0x92, 0x49, 0xba, 0xcb, 0x1f, 0x3e, 0xe8, 0x6c, 0xfb, 0x7b, 0x6f, 0xa8,

  0x7a, 0x9a, 0x6f, 0xbc, 0xf6, 0x31, 0x44, 0x85, 0x4d, 0x8f, 0xda, 0xe2,
  0x47, 0xf0, 0xa3, 0x86, 0x3b, 0xb0, 0x5a, 0xd2, 0x32, 0xcf, 0x39, 0xb7,
  0x8d, 0xc4, 0xae, 0x1b, 0xc4, 0x16, 0x6e, 0xd9, 0x27, 0x83, 0x29, 0x4d,
  0xc9, 0x1c, 0x43, 0x5f, 0x46, 0x32, 0x32, 0x8c, 0x17, 0x6a, 0x56, 0xf8,


  0xb9, 0x5e, 0x78, 0xb8, 0x31, 0x6a, 0x6f, 0x28, 0x65, 0x39, 0x7d, 0xeb,
  0x0f, 0x5e, 0xb4, 0xb3, 0x7c, 0xcc, 0x46, 0x37, 0x6f, 0xce, 0x07, 0xe1,
  0xd7, 0x9b, 0x8b, 0xa3, 0xa7, 0x41, 0x0b, 0x41, 0x5a, 0x60, 0x93, 0x53,
  0x50, 0x2c, 0xd1, 0x7d, 0x76, 0xe4, 0xfc, 0x36, 0x3c, 0x5c, 0xfd, 0x15,
  0xe3, 0x0a, 0x44, 0xcd, 0x82, 0xb9, 0xb8, 0x28, 0x9e, 0x54, 0x29, 0xd2,
  0x8b, 0xf1, 0x2e, 0xb0, 0xd7, 0x23, 0x3c, 0x5c, 0x75, 0x83, 0xd1, 0x22,
  0x20, 0x02, 0x19, 0xb1, 0x70, 0x12, 0xd0, 0x9a, 0x74, 0x4d, 0x0d, 0x77,
  0xf4, 0x8f, 0x5f, 0x72, 0xcc, 0x67, 0x60, 0xd1, 0x26, 0x81, 0xe0, 0xa2,
  0xb7, 0x43, 0x26, 0x4e, 0x63, 0x63, 0xbf, 0x40, 0xaa, 0x33, 0x7c, 0x9d,
  0xa9, 0xb4, 0x2b, 0xc4, 0x4a, 0x3f, 0x2a, 0xda, 0x96, 0x04, 0x7b, 0xb2,

  0xf3, 0xcd, 0xd7, 0xbe, 0xf4, 0x7c, 0x73, 0xde, 0xf2, 0x39, 0xfc, 0x4d,
  0x4f, 0xab, 0x09, 0x45, 0x23, 0x70, 0x14, 0x7a, 0x7f, 0x2f, 0x04, 0x0a,
  0x39, 0x3c, 0x01, 0xc5, 0x49, 0x7e, 0x82, 0x4b, 0x20, 0x40, 0x3c, 0xff,
  0xb1, 0xf2, 0x41, 0xc9, 0xe9, 0x0f, 0x7f, 0x8a, 0x0b, 0x25, 0x38, 0xc3,
  0x2f, 0xba, 0xe2, 0x28, 0xee, 0xa5, 0x28, 0xc2, 0x1b, 0xab, 0xce, 0x28,
  0x3c, 0x1c, 0xf2, 0xb7, 0x10, 0x24, 0x15, 0xb2, 0x85, 0x1d, 0xfe, 0x63,
  0x73, 0xc7, 0xa4, 0xa6, 0x99, 0x92, 0x50, 0xba, 0xa6, 0x20, 0xc1, 0x7d,
  0x05, 0x21, 0x4b, 0x1f, 0x06, 0x94, 0x4f, 0xd0, 0x42, 0xcd, 0x94, 0x78,
  0xc0, 0x19, 0x07, 0x66, 0x72, 0x38, 0x4f, 0xd5, 0xc4, 0x82, 0x33, 0x19,
  0xb0, 0xfb, 0xee, 0x29, 0x62, 0x4a, 0x03, 0xd9, 0x74, 0xab, 0x70, 0x37,

  0xdf, 0x83, 0x92, 0x84, 0xc2, 0xf5, 0xd9, 0x44, 0xaa, 0x2f, 0x44, 0xeb,
  0x43, 0x10, 0xd7, 0x0e, 0x8c, 0x0e, 0xab, 0xd8, 0x7b, 0x5c, 0xc2, 0x12,
  0x1e, 0x6e, 0xff, 0xf3, 0xfd, 0xbd, 0x8d, 0x8d, 0xae, 0xfa, 0xaa, 0x24,
  0x41, 0x66, 0x48, 0x05, 0x59, 0x29, 0x72, 0x2e, 0x6e, 0x97, 0x0e, 0x5b,
  0x7c, 0x43, 0x8c, 0xc1, 0xf8, 0x8c, 0xc2, 0xc3, 0xa1, 0x1c, 0xd3, 0xf7,

  0xf0, 0x10, 0xd1, 0x04, 0x27, 0x86, 0x6e, 0x0c, 0x61, 0x14, 0x36, 0x09,
  0x3f, 0x60, 0x62, 0x2e, 0xad, 0x5c, 0x81, 0x1c, 0x29, 0xd6, 0xc3, 0x88,
  0x8e, 0x25, 0x0e, 0x17, 0xc7, 0x2a, 0x69, 0xfd, 0x44, 0xd0, 0x4b, 0x16,
  0x7b, 0xf4, 0x07, 0x15, 0x3f, 0xde, 0x68, 0x0b, 0xe7, 0xcb, 0xe5, 0x70,
  0x06, 0x32, 0x68, 0xb0, 0x9c, 0x4c, 0xe0, 0xb4, 0xcf, 0x52, 0xe9, 0xc5,

  0xcd, 0x3a, 0xb8, 0x24, 0x37, 0xb4, 0xc9, 0x1c, 0x5a, 0x77, 0x9d, 0xd0,
  0x24, 0xd7, 0xd3, 0x16, 0x70, 0x8b, 0xd6, 0x16, 0x75, 0x16, 0xfc, 0x21,
  0x38, 0xa1, 0x49, 0xaf, 0x6d, 0x61, 0x0f, 0x49, 0xe9, 0x9b, 0x71, 0xef,
  0x31, 0x6e, 0x0b, 0x02, 0xfb, 0xd9, 0x47, 0x6f, 0x9a, 0x5e, 0xd7, 0x53,
  0x76, 0x8d, 0xde, 0x79, 0x8f, 0x7a, 0x27, 0x81, 0xf0, 0x60, 0x2c, 0x23,
  0x3a, 0x64, 0x0d, 0xb3, 0xbd, 0x0b, 0xb2, 0x82, 0x21, 0xb8, 0xba, 0x28,
  0x69, 0xf5, 0xe4, 0xf7, 0x8f, 0xb1, 0xff, 0xa1, 0x24, 0x61, 0xce, 0x12,
  0x8c, 0x35, 0x12, 0x7f, 0xf4, 0x51, 0x49, 0x0a, 0xf6, 0x4f, 0xf2, 0x18,
  0xe2, 0xfb, 0x10, 0x0f, 0x3e, 0xe5, 0xd6, 0xc5, 0x84, 0xaa, 0xc4, 0x5e,
  0x20, 0x46, 0xf3, 0x61, 0x9f, 0x17, 0xd0, 0xce, 0x83, 0xc7, 0x13, 0x24,
  0xa5, 0x36, 0x7b, 0x8c, 0x9c, 0x38, 0x8f, 0xc2, 0x2d, 0x94, 0xb5, 0x2f,
  0x79, 0xae, 0x1b, 0xac, 0xbe, 0xf6, 0x74, 0x92, 0x8a, 0x6c, 0xe2, 0x0e,
  0xcf, 0xa8, 0x43, 0xe5, 0xe5, 0x1a, 0x3f, 0xa7, 0xec, 0x2b, 0xb5, 0x1a,
  0x58, 0xef, 0xd6, 0xb1, 0xc5, 0x43, 0x19, 0x07, 0x62, 0xea, 0x3a, 0xc7,
  0xce, 0x57, 0x9a, 0xc9, 0xd5, 0xd1, 0x14, 0x80, 0x46, 0x6b, 0x7a, 0x19,
  0x53, 0x86, 0x0c, 0x20, 0x2e, 0x70, 0x5a, 0x04, 0x25, 0xa9, 0xe3, 0xa9,
  0xc1, 0x90, 0xbd, 0x4e, 0x50, 0xa1, 0x35, 0x1b, 0x60, 0x7a, 0x4c, 0xd6,
  0xcc, 0x3e, 0xfd, 0x84, 0x8d, 0xfa, 0x61, 0x7a, 0x77, 0x95, 0x56, 0x4b,
  0x9f, 0xe9, 0x0e, 0x15, 0x1f, 0x94, 0x10, 0x2a, 0x48, 0x4c, 0xe3, 0x61,
  0x58, 0x18, 0x09, 0x32, 0xf3, 0x30, 0xe1, 0x13, 0x9b, 0xad, 0x96, 0x86,
  0x47, 0xa0, 0xf3, 0x73, 0x96, 0xdf, 0x7b, 0x19, 0xe2, 0x68, 0x61, 0x98,
  0xd9, 0xd5, 0xeb, 0xdf, 0xe0, 0xed, 0x3f, 0xfd, 0x43, 0x7f, 0xf9, 0x11,
  0x77, 0xea, 0x9f, 0xba, 0x53, 0x9a, 0x74, 0x17, 0x7b, 0x30, 0x09, 0x64,
  0x5b, 0x47, 0x7f, 0xa2, 0x5d, 0xf9, 0x2b, 0x66, 0x35, 0xf1, 0xd6, 0x20,
  0x42, 0x11, 0x0d, 0xf8, 0xa7, 0xbe, 0xd1, 0xa3, 0x65, 0x90, 0x18, 0xeb,
  0xbe, 0x49, 0xd9, 0x1f, 0x3e, 0x7a, 0x2e, 0x29, 0x24, 0xc3, 0x9f, 0xb2,
  0x2e, 0x41, 0x2d, 0x83, 0x49, 0x87, 0x28, 0x2d, 0xdc, 0x4c, 0x97, 0x4f,
  0xf1, 0xa7, 0x42, 0xf0, 0x86, 0xc0, 0x96, 0x81, 0x99, 0xa3, 0xa1, 0xc7,
  0x3f, 0x0f, 0x1b, 0x16, 0x9a, 0xd4, 0x22, 0xde, 0x94, 0x1a, 0x04, 0x15,
  0x8c, 0x83, 0x2d, 0xe2, 0xd5, 0x10, 0x1f, 0x2a, 0xfa, 0x0b, 0x4d, 0x15,
  0x9e, 0x6e, 0x9e, 0x3d, 0x61, 0xb4, 0x08, 0x38, 0x90, 0xbe, 0xcc, 0x4d,

  0xdb, 0x4c, 0x8e, 0xc6, 0x9f, 0xfe, 0xc1, 0x89, 0x80, 0xff, 0xf4, 0x75,
  0xdf, 0x8b, 0xeb, 0x93, 0x03, 0x9a, 0xd2, 0x9f, 0x7a, 0xe5, 0xe3, 0x7c,
  0x98, 0xcf, 0xe4, 0xe2, 0xe1, 0xe6, 0xc3, 0x06, 0xea, 0xcf, 0x98, 0x4a,
  0x28, 0x56, 0xd7, 0x73, 0x00, 0x4c, 0xba, 0xc1, 0xde, 0x14, 0x68, 0x87,
  0xe5, 0x23, 0xae, 0x68, 0xc5, 0xc2, 0x05, 0xb8, 0x79, 0x7f, 0x8a, 0x14,
  0x93, 0x84, 0xfb, 0xd2, 0x4a, 0x07, 0x62, 0xf1, 0xa8, 0x6a, 0x09, 0x48,
  0x30, 0x04, 0xb4, 0x9a, 0x8e, 0x0d, 0x4f, 0x0f, 0x42, 0xbf, 0x20, 0xbf,
  0x80, 0x69, 0x7e, 0xa4, 0xa2, 0x49, 0x31, 0x73, 0x8f, 0xf9, 0x67, 0xbd,


  0x6b, 0xfa, 0x99, 0xe6, 0xd1, 0x08, 0xd8, 0x00, 0x66, 0x66, 0x48, 0xf1,
  0x49, 0xd7, 0x2f, 0x50, 0x8e, 0x42, 0xa9, 0x79, 0x98, 0xf8, 0x0e, 0x7c,
  0xc6, 0x9b, 0xa7, 0xde, 0xea, 0x8f, 0x09, 0x01, 0xf2, 0xa6, 0x77, 0xc9,
  0xea, 0xd1, 0xa8, 0xc3, 0x0f, 0x30, 0xe6, 0x79, 0x2c, 0xc9, 0x6c, 0x9c,
  0xbd, 0x66, 0xee, 0x93, 0xc2, 0xa2, 0x51, 0x6e, 0x33, 0x9c, 0x76, 0xff,
  0xa9, 0xe1, 0x70, 0x4f, 0xb5, 0x6a, 0x43, 0x32, 0x7f, 0xd0, 0xbf, 0x96,
  0x4e, 0x8c, 0x86, 0x51, 0x61, 0x41, 0x0e, 0xa6, 0x1c, 0xe1, 0xc8, 0x4f,
  0xac, 0x35, 0xd7, 0x10, 0x85, 0xb0, 0x2d, 0x0e, 0x57, 0x5e, 0x74, 0x23,
  0x1b, 0xdd, 0xd6, 0xa4, 0xbe, 0x08, 0x03, 0xe1, 0xab, 0x87, 0x33, 0x51,
  0x72, 0x13, 0x9a, 0x3a, 0xa5, 0x76, 0xdd, 0x39, 0xa7, 0x1f, 0xd2, 0x3c,
  0xb1, 0x8e, 0x65, 0x8e, 0x5e, 0xdb, 0x40, 0x9c, 0x39, 0x0a, 0x70, 0x7b,
  0x0a, 0x8e, 0xfe, 0x87, 0x13, 0x6d, 0x67, 0xd7, 0x56, 0xcf, 0x89, 0xb2,
  0x83, 0x2e, 0xc2, 0xa0, 0x97, 0xab, 0x87, 0xe3, 0xfc, 0xfb, 0x17, 0xfd,
  0xad, 0x0d, 0xef, 0x50, 0xab, 0xc5, 0x47, 0xa0, 0x8d, 0xe2, 0xf1, 0x23,
  0x66, 0xa9, 0xd2, 0x99, 0x69, 0x54, 0x81, 0x7e, 0x40, 0x3b, 0xcb, 0xe8,

  0x05, 0xcb, 0x05, 0x8e, 0x43, 0x64, 0x3e, 0xcb, 0xd9, 0x60, 0x7b, 0x6a,
  0x19, 0xf5, 0x7c, 0x50, 0x17, 0x44, 0x67, 0xbd, 0xde, 0x03, 0x6e, 0xcf,
  0x9b, 0x18, 0x26, 0xa0, 0x7c, 0xa4, 0xc8, 0xb5, 0x21, 0x26, 0x90, 0x7b,
  0x49, 0x91, 0x8e, 0xdc, 0x86, 0xa8, 0xf4, 0x00, 0x91, 0x14, 0x63, 0x83,
  0x62, 0x28, 0x3b, 0x08, 0x82, 0xdc, 0xf8, 0x1f, 0xf9, 0x7f, 0x9d, 0x90,
  0x95, 0x49, 0x77, 0xa4, 0xd3, 0x86, 0x89, 0x62, 0x66, 0x8d, 0xcd, 0x40,
  0x38, 0x7d, 0x62, 0x9d, 0x84, 0xb2, 0xbe, 0xc3, 0x78, 0x75, 0xb3, 0x34,
  0x2e, 0xcd, 0x04, 0x79, 0x05, 0x74, 0xa3, 0x68, 0xbd, 0x84, 0x2d, 0x77,
  0xe3, 0xd5, 0x7e, 0x45, 0x81, 0xa8, 0x11, 0xc7, 0x9a, 0x26, 0x79, 0xbf,
  0x65, 0x67, 0x38, 0x71, 0xb8, 0xb9, 0x33, 0xed, 0x1b, 0xc2, 0x6b, 0xf6,
  0x83, 0x8f, 0x4d, 0xb7, 0x02, 0x6f, 0xec, 0xba, 0x04, 0xf1, 0x48, 0x39,
  0xdf, 0xe0, 0xdb, 0x42, 0xb4, 0xe0, 0xc0, 0xc8, 0x11, 0x83, 0x79, 0xe2,
  0xd6, 0xae, 0xd7, 0xfb, 0x2b, 0xb7, 0x9c, 0xb3, 0xc1, 0xe9, 0x60, 0x8e,
  0x86, 0x3f, 0x8b, 0x2c, 0x78, 0x07, 0x27, 0xf7, 0x51, 0x21, 0x9d, 0x61,
  0x3d, 0xb3, 0xc7, 0x28, 0x88, 0xaf, 0xbf, 0xe2, 0xf3, 0xfb, 0x5b, 0x01,
  0xfa, 0xa7, 0xf4, 0xe1, 0x8f, 0xe9, 0xc2, 0xe1, 0x59, 0xa7, 0x97, 0x78,

  0x58, 0x54, 0xf7, 0x22, 0x65, 0x13, 0x9c, 0x63, 0x8c, 0x29, 0x17, 0xda,

  0xa5, 0x8a, 0x73, 0x95, 0x9e, 0xdc, 0xcc, 0x11, 0x23, 0x20, 0xb0, 0x43,
  0xc0, 0x85, 0x8a, 0x00, 0xfb, 0x56, 0xb4, 0x34, 0x71, 0x10, 0x9c, 0x5e,
  0xde, 0xed, 0xf9, 0x81, 0xa8, 0x28, 0xe0, 0x2e, 0x73, 0x97, 0xb4, 0xf3,
  0xaa, 0x75, 0x49, 0xdc, 0x51, 0x43, 0x96, 0xc4, 0x0b, 0x70, 0xdb, 0xe0,
  0xc8, 0x42, 0x74, 0x1d, 0xee, 0x44, 0x9f, 0x58, 0x92, 0x5d, 0xc4, 0x93,
  0x33, 0x81, 0x6f, 0x7d, 0x34, 0x18, 0xed, 0x20, 0x9b, 0xf9, 0xd3, 0xf8,
  0x6d, 0x50, 0x4c, 0x2c, 0x7a, 0x3b, 0xe2, 0x17, 0x2a, 0x91, 0xf2, 0x54,
  0xc2, 0x1a, 0x75, 0x14, 0x50, 0xb0, 0x1b, 0xf4, 0xb5, 0x1b, 0x9c, 0x83,
  0x76, 0xa2, 0x2d, 0xcd, 0x1c, 0x60, 0x0a, 0xf6, 0x87, 0x7c, 0x5d, 0x50,
  0xf4, 0x4d, 0x72, 0xe9, 0x9a, 0x6e, 0x66, 0xf3, 0xc4, 0x1c, 0xf8, 0x0a,
  0x3c, 0x3d, 0x0b, 0xba, 0x46, 0x1f, 0xcb, 0x72, 0x86, 0xa4, 0x9e, 0x4e,
  0x1e, 0x61, 0x4a, 0x65, 0x2b, 0x78, 0x8c, 0x2b, 0x40, 0xf9, 0x39, 0x3d,
  0x2e, 0xc7, 0x60, 0x5e, 0x2b, 0xc9, 0xa7, 0xb9, 0x48, 0x30, 0xfd, 0x86,
  0xc1, 0xc1, 0x9f, 0x22, 0x46, 0x94, 0xc3, 0xf4, 0x79, 0x1b, 0xe8, 0x13,
  0x3e, 0x61, 0x94, 0x85, 0x7e, 0xb4, 0x65, 0x2c, 0xc1, 0x27, 0x08, 0xa1,
  0x36, 0x12, 0x0e, 0x62, 0xa3, 0xdb, 0xf5, 0x0d, 0xc1, 0x42, 0x44, 0x6f,
  0x43, 0x74, 0xf7, 0x3f, 0x92, 0x26, 0xc0, 0xf1, 0x68, 0xc9, 0x3a, 0x37,


  0x38, 0x49, 0x38, 0x28, 0xd1, 0x86, 0xc6, 0x94, 0x7b, 0x67, 0x28, 0x0c,
  0x67, 0x01, 0xf0, 0xf3, 0x28, 0x00, 0x66, 0x41, 0xcd, 0xae, 0x28, 0x07,
  0xdb, 0x1e, 0xf5, 0x7a, 0x2e, 0x15, 0xa5, 0x3d, 0xac, 0x84, 0xed, 0xd1,
  0x2f, 0xa2, 0x56, 0x17, 0xab, 0x4d, 0xf7, 0xa8, 0x36, 0xba, 0xaa, 0xd5,
  0xa9, 0xaa, 0x26, 0x39, 0x36, 0x84, 0x5f, 0x49, 0x8c, 0x7f, 0x84, 0x7d,
  0x61, 0x28, 0xd3, 0x2c, 0x5e, 0x3d, 0x9c, 0x4e, 0x47, 0xfa, 0xa5, 0x91,
  0xb5, 0x35, 0x25, 0x68, 0xaf, 0xbc, 0x41, 0x4a, 0x20, 0x54, 0x02, 0x3b,
  0x87, 0xc2, 0xd4, 0xb0, 0xac, 0x6b, 0x2b, 0x5f, 0x7d, 0xc6, 0xf5, 0x2f,
  0x5d, 0xef, 0x16, 0x16, 0xd5, 0xe0, 0x42, 0x4f, 0x09, 0xc6, 0x20, 0x63,
  0x90, 0x35, 0x28, 0x8f, 0x72, 0xd6, 0xd0, 0xc6, 0xa3, 0x3e, 0x15, 0x8b,
  0x92, 0xec, 0xd7, 0x5a, 0xdc, 0x88, 0x92, 0x05, 0xe5, 0x17, 0xeb, 0xa5,
  0x85, 0x51, 0xc6, 0x62, 0xb9, 0xb1, 0x89, 0x18, 0x6c, 0x84, 0x90, 0xd6,
  0x9a, 0x6a, 0x1c, 0x50, 0xb0, 0x2b, 0xb2, 0x28, 0x1c, 0xfd, 0xe4, 0xdd,
  0x40, 0xa8, 0xba, 0x8f, 0xa6, 0x9b, 0x07, 0x07, 0x6e, 0xf2, 0x0a, 0xf3,
  0x3c, 0xe6, 0x20, 0xcf, 0x89, 0x19, 0x30, 0xe8, 0xa0, 0x65, 0x5c, 0xfa,
  0x74, 0xc0, 0x47, 0x47, 0xa3, 0x49, 0x18, 0x38, 0x5a, 0x35, 0x9a, 0xd6,
  0x08, 0x9a, 0xa1, 0x28, 0x94, 0xfa, 0xc4, 0x4d, 0x43, 0x34, 0xa0, 0xe0,
  0x17, 0xf5, 0x12, 0xcb, 0x9e, 0xf2, 0x27, 0x57, 0xac, 0xc0, 0x31, 0xde,
  0x57, 0x7f, 0xd1, 0x65, 0x11, 0xe1, 0x4f, 0x4b, 0xfa, 0x7f, 0xf4, 0xbc,
  0xad, 0xd3, 0x0c, 0x76, 0x7f, 0x2c, 0x6c, 0x64, 0x62, 0xcf, 0x01, 0xc7,

  0x8a, 0x31, 0x91, 0x60, 0xea, 0xb4, 0x5a, 0xe1, 0xf6, 0x37, 0xd6, 0xa6,
  0x01, 0xde, 0x59, 0x2e, 0x11, 0x23, 0x7b, 0xf2, 0x94, 0x2c, 0x67, 0xec,
  0x28, 0xf6, 0x20, 0x99, 0xf1, 0x10, 0x5c, 0xb2, 0xde, 0x03, 0xa6, 0x65,
  0x56, 0x66, 0x89, 0xb4, 0xb9, 0x3a, 0x2d, 0x2d, 0x7c, 0xf8, 0x8d, 0x66,
  0xc5, 0xa3, 0x3d, 0x67, 0x4e, 0xff, 0xaa, 0x5c, 0x6b, 0x4a, 0x32, 0x12,
  0x55, 0x46, 0xc2, 0x3c, 0x8b, 0xd9, 0xaf, 0x16, 0x65, 0x35, 0x69, 0xf5,
  0xf4, 0x9d, 0x6d, 0x13, 0x65, 0xdb, 0x41, 0x16, 0xc2, 0x98, 0xde, 0xfa,
  0xbf, 0xb7, 0xa8, 0x38, 0x93, 0xa8, 0x58, 0xe4, 0x29, 0x92, 0x5c, 0xd6,
  0x15, 0xdb, 0xf2, 0x9e, 0x6c, 0x4b, 0xeb, 0x87, 0x0c, 0xd7, 0xdd, 0x46,

  0x81, 0x0c, 0x74, 0x72, 0x5d, 0xa9, 0x53, 0x85, 0x8d, 0x08, 0xf5, 0x8c,

  0xb0, 0x6b, 0xa4, 0xff, 0x7c, 0x86, 0xfc, 0x62, 0x37, 0xbc, 0x06, 0x9a,
  0xd1, 0x27, 0x5e, 0x43, 0xbb, 0x5f, 0xa8, 0x1f, 0xb9, 0xa8, 0xae, 0xab,


  0x87, 0x93, 0x3c, 0x79, 0x76, 0x25, 0xb9, 0x4d, 0xcb, 0x6a, 0xd0, 0xdd,
  0xe8, 0x07, 0x8e, 0xd8, 0x59, 0xfb, 0x84, 0xc5, 0x43, 0x2f, 0x68, 0x62,
  0x35, 0x17, 0x98, 0xd6, 0x2d, 0x87, 0xe0, 0x96, 0xa1, 0x50, 0xf8, 0x18,
  0x2f, 0x16, 0x22, 0x6d, 0x9e, 0x26, 0xf9, 0x88, 0x81, 0x1b, 0xb9, 0x4d,
  0x2f, 0x36, 0x8a, 0x22, 0x88, 0xcc, 0x2a, 0xcf, 0x6f, 0xd9, 0xa9, 0xca,
  0x29, 0xd8, 0x58, 0x0c, 0xe9, 0x23, 0x45, 0x7b, 0x24, 0x3f, 0xd3, 0x7b,
  0xb3, 0x39, 0x18, 0xbc, 0xdb, 0x4c, 0xaa, 0x91, 0x4a, 0xbd, 0x4d, 0x9b,
  0xfd, 0x27, 0xd6, 0xf7, 0xd3, 0x5a, 0x2c, 0x49, 0x5e, 0xea, 0xd8, 0x87,
  0xc4, 0x6f, 0xfc, 0xda, 0xcf, 0xa0, 0x7d, 0xda, 0x84, 0xba, 0x2d, 0xfa,
  0x09, 0x96, 0x89, 0x78, 0xd7, 0xfa, 0x91, 0xba, 0x4b, 0x81, 0x26, 0xbd,
  0xce, 0x98, 0xb1, 0x60, 0xa7, 0x3e, 0x7d, 0xb3, 0xed, 0xe2, 0x82, 0x4b,
  0x41, 0xd7, 0x0a, 0xa6, 0xfc, 0x2c, 0x17, 0xff, 0x2d, 0xe7, 0x49, 0x9e,
  0x1d, 0x8e, 0xfd, 0x52, 0x82, 0xd4, 0xd3, 0x13, 0x5e, 0xa0, 0x0f, 0x83,
  0xdd, 0x14, 0x4f, 0xcf, 0xf8, 0xd9, 0x13, 0x7e, 0xde, 0x8c, 0x25, 0x30,
  0x40, 0x3e, 0x34, 0x9d, 0x04, 0xcd, 0x99, 0xdc, 0xd3, 0x82, 0xf3, 0x8d,
  0x35, 0x01, 0xd3, 0x34, 0x7b, 0x8e, 0x73, 0xcf, 0xa4, 0xe8, 0xa0, 0xbf,
  0x15, 0x5b, 0xcc, 0x9b, 0x41, 0x25, 0x01, 0xb8, 0x94, 0x5c, 0xe1, 0x69,
  0xfe, 0xe4, 0xec, 0x62, 0x01, 0xda, 0x46, 0xb1, 0xe0, 0x38, 0xdf, 0x47,
  0x4a, 0x3f, 0x98, 0xc7, 0x93, 0x8e, 0x96, 0x98, 0x7f, 0x1c, 0xe8, 0x38,
  0xed, 0xb9, 0xb1, 0x40, 0xdf, 0xe3, 0x5a, 0xab, 0x3b, 0x0c, 0xcb, 0xb7,
  0x9c, 0x85, 0xd1, 0xeb, 0x9f, 0xda, 0x6c, 0x4c, 0xbd, 0x9e, 0xcd, 0x8c,
  0x1d, 0xf0, 0xa4, 0x48, 0x02, 0x71, 0xb6, 0xd0, 0xed, 0x41, 0xba, 0x20,
  0x32, 0x61, 0x32, 0xed, 0xea, 0xc5, 0xe8, 0x46, 0xcf, 0x26, 0x05, 0x0a,
  0x35, 0xe8, 0xd6, 0x5a, 0xd8, 0x60, 0x3a, 0x4b, 0x8c, 0xb5, 0xf3, 0x2f,
  0xe3, 0x91, 0x01, 0x30, 0x7a, 0x6a, 0x76, 0x31, 0x77, 0x9a, 0x6b, 0xec,
  0x02, 0xe7, 0x11, 0xd5, 0x34, 0x0a, 0xca, 0x8e, 0x7a, 0x96, 0x38, 0x4f,
  0xa5, 0xdf, 0xb6, 0x09, 0xed, 0xb9, 0xbb, 0x55, 0x5a, 0xfe, 0xfc, 0x0c,
  0x81, 0x17, 0x34, 0xc8, 0x69, 0xaa, 0x34, 0xf3, 0xe7, 0x5f, 0x9f, 0x4f,
  0x70, 0xe1, 0x39, 0x45, 0x0d, 0x55, 0xd2, 0xe6, 0xc5, 0xd1, 0x66, 0x0b,
  0xcf, 0x75, 0x85, 0x50, 0x86, 0xbe, 0x3a, 0xc9, 0x4d, 0xae, 0x5b, 0x83,
  0x45, 0x70, 0x4c, 0x67, 0x56, 0xe6, 0x4f, 0x6b, 0x81, 0x74, 0x02, 0x4e,
  0xfa, 0x3a, 0x82, 0xeb, 0xb3, 0x03, 0x13, 0xec, 0x20, 0xbc, 0x38, 0x95,
  0x12, 0xcd, 0xd3, 0x2e, 0x45, 0x38, 0xc3, 0xf0, 0x8d, 0x11, 0xab, 0xa0,
  0x6e, 0x24, 0xf8, 0xbb, 0x6c, 0x90, 0x62, 0x29, 0x6f, 0x8f, 0x52, 0x6c,
  0x9f, 0x43, 0x44, 0xe8, 0xf0, 0x0c, 0xdc, 0x55, 0x6a, 0x5b, 0xa0, 0x46,
  0x19, 0x7f, 0x99, 0xea, 0x33, 0x8d, 0xd3, 0x34, 0xe1, 0xf8, 0x13, 0xbe,
  0x6e, 0xcb, 0x39, 0xc8, 0x0a, 0x45, 0x7d, 0xb2, 0xf7, 0x94, 0xab, 0x9d,
  0x82, 0x12, 0x18, 0x95, 0xa0, 0x1c, 0x52, 0x6a, 0x53, 0x8d, 0x61, 0x09,
  0x0d, 0x7f, 0x8a, 0x4f, 0x42, 0x81, 0xf6, 0x0f, 0x56, 0x0f, 0xa7, 0x2d,
  0x3a, 0x3e, 0x21, 0xd2, 0xe8, 0x43, 0x0c, 0x77, 0x20, 0x54, 0x1f, 0x50,
  0xc6, 0x24, 0x85, 0x6c, 0x5b, 0x14, 0x0e, 0x98, 0xd4, 0x3b, 0xda, 0x56,
  0xcd, 0xfe, 0xe9, 0x65, 0x15, 0x28, 0x21, 0x01, 0xb5, 0x9e, 0xe2, 0xdb,
  0x2c, 0x2c, 0xc0, 0xa2, 0x8e, 0xa9, 0x7a, 0x04, 0x4f, 0x39, 0x79, 0xa8,
  0x38, 0xbe, 0x40, 0xbf, 0xc3, 0xb9, 0xa4, 0xa0, 0xd7, 0x61, 0x48, 0xdb,
  0x42, 0x98, 0x06, 0xaa, 0x2a, 0xa4, 0x8e, 0x95, 0xbe, 0x66, 0xfc, 0x75,
  0x0f, 0xe3, 0x69, 0x3f, 0x2f, 0x52, 0x94, 0x37, 0x94, 0xc8, 0xa9, 0x83,
  0x21, 0xdd, 0x77, 0x89, 0x9f, 0xa0, 0xf5, 0x18, 0x1a, 0x4e, 0x23, 0x6b,
  0x51, 0xc4, 0xa1, 0x35, 0x6f, 0xe8, 0x39, 0xd1, 0x2b, 0xfe, 0xce, 0x8c,
  0x2a, 0xd0, 0x09, 0xa1, 0xfa, 0x72, 0xad, 0xc1, 0x31, 0xbd, 0x5c, 0x35,
  0xe5, 0xc5, 0xac, 0xd6, 0x2e, 0x14, 0x63, 0xb0, 0x40, 0x78, 0x05, 0x57,
  0xb2, 0x7b, 0xbe, 0xa8, 0xb4, 0x2c, 0x97, 0x74, 0x60, 0x6f, 0x4f, 0xcf,
  0x4e, 0x4c, 0x56, 0xdb, 0xff, 0xda, 0xec, 0xe3, 0x96, 0x17, 0x23, 0x2f,
  0x87, 0x8f, 0x6b, 0x48, 0x9d, 0x82, 0x60, 0x29, 0x32, 0xfd, 0xb6, 0xcb,
  0x9d, 0x2f, 0xe9, 0xc7, 0xb5, 0x0a, 0xd3, 0x93, 0xf3, 0xef, 0x4e, 0xaf,
  0x2e, 0xce, 0xdf, 0x9f, 0x9c, 0x5f, 0x7f, 0xe6, 0xb0, 0xbb, 0x50, 0x5f,
  0x87, 0xd2, 0x4f, 0x2e, 0x48, 0x31, 0x1c, 0x74, 0x4f, 0x45, 0x80, 0xdc,
  0x5d, 0x05, 0x56, 0x2a, 0xff, 0xea, 0xbb, 0xc3, 0x39, 0x0f, 0xa9, 0x67,
  0x1f, 0x33, 0x49, 0x16, 0xe8, 0xd9, 0x19, 0x63, 0x5c, 0xb5, 0xcf, 0xb1,
  0x00, 0xd3, 0x39, 0x18, 0x5b, 0x4b, 0x3c, 0x20, 0x94, 0x37, 0xa5, 0x02,
  0x63, 0xed, 0xd8, 0x67, 0x66, 0x4b, 0x38, 0x08, 0x68, 0x63, 0xa5, 0xb5,
  0x49, 0x58, 0xe2, 0xfe, 0x20, 0x05, 0xa0, 0x59, 0x14, 0x5c, 0x8d, 0xa2,
  0xdf, 0x91, 0x42, 0x40, 0x9f, 0xbd, 0xe1, 0x3c, 0x1c, 0x8e, 0xbe, 0x30,
  0x93, 0x70, 0x72, 0x40, 0x1d, 0x5c, 0x60, 0xa7, 0xc9, 0x71, 0x13, 0x0b,

  0xd8, 0x59, 0xc5, 0x8f, 0xea, 0x2c, 0x3a, 0xd8, 0xdc, 0xfc, 0x99, 0xfa,
  0x6b, 0x7f, 0x29, 0x0d, 0xb6, 0x7d, 0x08, 0xd4, 0xd2, 0x99, 0x86, 0x2d,
  0x19, 0xd2, 0xea, 0x42, 0xa4, 0x5b, 0xb3, 0x9d, 0xe4, 0x06, 0xfe, 0x78,
  0x79, 0x75, 0xf1, 0xc3, 0x5f, 0x7e, 0xe3, 0x4f, 0x38, 0xc9, 0x66, 0x3f,
  0x62, 0x0e, 0xa6, 0x0e, 0xfe, 0xf3, 0x6f, 0xfe, 0xb5, 0xfa, 0xf0, 0x5d,
  0x89, 0xb4, 0x73, 0x33, 0x70, 0x5f, 0x21, 0xe3, 0xe2, 0x6d, 0x06, 0xbb,
  0xb7, 0x29, 0xd1, 0x91, 0xe3, 0xe3, 0x30, 0xc9, 0x40, 0x24, 0xe2, 0xca,
  0x3a, 0x81, 0xc6, 0x3e, 0xf4, 0x75, 0x9f, 0x4b, 0x8a, 0x6d, 0x06, 0xaf,




  0x56, 0x95, 0x63, 0xe5, 0x38, 0xd7, 0x96, 0x53, 0x3e, 0xaa, 0xd9, 0x8f,
  0xa3, 0xb3, 0xb3, 0xdf, 0x74, 0x13, 0xa8, 0x47, 0xb1, 0x5d, 0x4b, 0xcf,
  0x68, 0xa8, 0xf2, 0xf4, 0x13, 0x48, 0xb4, 0xe7, 0x17, 0x32, 0x9b, 0x43,
  0x52, 0x8e, 0x7b, 0x65, 0x02, 0x2a, 0x6d, 0x8c, 0xf1, 0x7e, 0x85, 0x16,
  0xc7, 0x89, 0x95, 0x9b, 0x9c, 0x38, 0xe9, 0x21, 0x9d, 0xd3, 0x43, 0x94,
  0x2c, 0x40, 0x26, 0x14, 0xe5, 0x55, 0xf2, 0x6e, 0x72, 0x59, 0x1c, 0xd5,
  0x2d, 0xe4, 0x06, 0x97, 0x88, 0x3b, 0xa6, 0x73, 0xc7, 0xee, 0x49, 0xa0,
  0x21, 0x33, 0xa3, 0x43, 0xa0, 0xbc, 0x2d, 0xd2, 0xf2, 0x96, 0x8a, 0x3a,
  0xf0, 0x86, 0x92, 0x82, 0xa4, 0xf5, 0xfb, 0xa8, 0xf2, 0xd2, 0x9c, 0xfa,
  0x0c, 0x31, 0x62, 0xab, 0xe9, 0xd2, 0x32, 0x34, 0x3b, 0xea, 0x6c, 0xc5,
  0xa2, 0x18, 0xdd, 0xa8, 0xec, 0x84, 0x8e, 0x6b, 0xa5, 0x5d, 0x02, 0xcf,
  0xce, 0x49, 0x54, 0xa5, 0xc1, 0x19, 0x08, 0x95, 0xa5, 0x77, 0xb5, 0xdc,
  0x18, 0x1f, 0xe0, 0x4f, 0x57, 0x65, 0x32, 0x9b, 0x84, 0x2b, 0xec, 0x83,
  0xdc, 0x42, 0x2a, 0xfc, 0x4d, 0xcb, 0x78, 0x25, 0x56, 0x3c, 0xac, 0x84,
  0x30, 0x69, 0x30, 0xb4, 0xe0, 0xfb, 0xeb, 0x84, 0x0e, 0x6b, 0x79, 0x06,
  0x0f, 0xb6, 0xd1, 0x57, 0xe4, 0x54, 0xb3, 0x72, 0x9e, 0x98, 0x9e, 0xed,
  0xeb, 0xb1, 0x5f, 0x30, 0x05, 0x1c, 0xc9, 0xc5, 0xef, 0x50, 0xc9, 0xdb,
  0x7b, 0x88, 0x14, 0x38, 0x84, 0xcf, 0xa9, 0xf6, 0x8c, 0xfc, 0xe6, 0x39,
  0xc3, 0x51, 0xfb, 0x84, 0x12, 0x73, 0xa3, 0x65, 0xaa, 0x51, 0x85, 0xd9,
  0xbd, 0x55, 0x24, 0x7e, 0x71, 0x56, 0xc2, 0x09, 0x6b, 0xc7, 0xaf, 0x93,
  0x70, 0x26, 0xbe, 0x6a, 0xa2, 0xad, 0x33, 0x0d, 0xc4, 0x86, 0xe1, 0x31,
  0x74, 0xc1, 0x33, 0x88, 0x8c, 0x3b, 0x9e, 0x99, 0x27, 0x69, 0xab, 0x3c,
  0x47, 0xd6, 0xe3, 0x14, 0x4a, 0x2b, 0x09, 0x05, 0xe1, 0x82, 0xe9, 0x37,
  0xee, 0x95, 0x91, 0xbb, 0x60, 0x4a, 0xda, 0x49, 0x09, 0x37, 0x65, 0xa1,
  0x36, 0xd2, 0x8e, 0xe1, 0x96, 0xc8, 0xf7, 0x8f, 0x53, 0xfc, 0x05, 0x85,
  0x3a, 0x31, 0x22, 0x8a, 0x95, 0x98, 0xba, 0x03, 0x29, 0x96, 0xa5, 0xfa,
  0xba, 0xa1, 0x96, 0x19, 0x6b, 0x70, 0x0b, 0x44, 0xe0, 0x2c, 0x2f, 0x43,
  0x70, 0x9a, 0x43, 0xcc, 0x9a, 0x4f, 0xa8, 0x15, 0x0f, 0x5f, 0x79, 0xf8,
  0xef, 0xf5, 0xc5, 0xf1, 0xc5, 0x19, 0xfc, 0xe5, 0xe4, 0xed, 0xe9, 0x0f,
  0x56, 0x2b, 0x60, 0x80, 0x8a, 0x5a, 0x81, 0x0c, 0xe1, 0x2e, 0xbe, 0xec,
  0xba, 0x6c, 0x88, 0x73, 0x10, 0x31, 0xfd, 0x90, 0x53, 0xe2, 0x9a, 0x14,
  0x6a, 0xb8, 0xa5, 0xc3, 0xe7, 0x50, 0x4e, 0x63, 0xbe, 0xa8, 0x83, 0x3f,
  0x12, 0x0b, 0xf0, 0x12, 0x6a, 0xd1, 0x3c, 0xb2, 0x29, 0xa6, 0xb0, 0x9b,
  0x8c, 0x35, 0x52, 0x2e, 0x9b, 0x93, 0x6c, 0x54, 0xfb, 0xc9, 0x54, 0x61,
  0x89, 0x6a, 0x93, 0xcb, 0x0b, 0xd3, 0xa7, 0xb6, 0x72, 0x7b, 0xa0, 0x37,
  0x9a, 0xce, 0xb8, 0x88, 0xf6, 0x59, 0xe2, 0x2e, 0xd2, 0x34, 0x2e, 0xaf,
  0x8a, 0x84, 0xb8, 0x22, 0x01, 0xd5, 0xa1, 0x22, 0xe0, 0xa2, 0x7c, 0x34,
  0x28, 0x82, 0x2a, 0x74, 0xcc, 0x88, 0xf5, 0x35, 0xc9, 0x06, 0x48, 0x2e,
  0x1f, 0xe5, 0x56, 0xa0, 0x1e, 0xef, 0x40, 0xfc, 0x08, 0xb5, 0x06, 0xcb,
  0x05, 0xa5, 0x4e, 0x09, 0xff, 0xa0, 0xec, 0x2a, 0x8e, 0x62, 0x08, 0x47,
  0xbd, 0x76, 0x9a, 0xaf, 0xb3, 0x54, 0x90, 0xe0, 0xd3, 0xc2, 0x37, 0xad,
  0xf0, 0x0c, 0x44, 0xd9, 0xaf, 0x6b, 0x1c, 0x65, 0xdb, 0xa7, 0xd1, 0x44,
  0x95, 0x3d, 0xb0, 0x9f, 0xf6, 0xb2, 0xae, 0x31, 0xeb, 0xbb, 0xdc, 0x5b,
  0x35, 0x06, 0x6a, 0x84, 0x7f, 0x5b, 0xa6, 0x77, 0x31, 0xd5, 0x96, 0xc1,

  0x65, 0xe9, 0xf5, 0xf8, 0xa5, 0xc6, 0x18, 0xf1, 0xaf, 0x1a, 0x24, 0xae,
  0x8f, 0xb2, 0xff, 0x6b, 0x06, 0xd9, 0x6f, 0x8c, 0x71, 0xf3, 0xab, 0x06,
  0xe9, 0xa9, 0x80, 0x00, 0xc5, 0xf8, 0x87, 0xd3, 0xeb, 0xe8, 0xf8, 0xe2,
  0x8d, 0xbd, 0x60, 0xd7, 0x26, 0x7b, 0x3b, 0x8e, 0x86, 0xcb, 0x0c, 0x68,
  0x10, 0xbb, 0x25, 0x99, 0xfe, 0x13, 0x9c, 0xa6, 0x88, 0x39, 0x38, 0xa5,
  0x56, 0xac, 0xa5, 0x05, 0x43, 0x11, 0x61, 0x5e, 0x0d, 0x23, 0x29, 0x39,
  0x35, 0xba, 0xf8, 0xf4, 0x1c, 0x81, 0x8e, 0xa6, 0x2a, 0x7d, 0xf1, 0x56,
  0x22, 0xd6, 0x5d, 0x5c, 0x68, 0x55, 0xe9, 0x30, 0x46, 0x30, 0xa3, 0x8c,
  0x6b, 0x23, 0x41, 0x76, 0x06, 0xa0, 0x87, 0x75, 0x38, 0x17, 0x81, 0x18,
  0x74, 0xe7, 0xb4, 0xd2, 0xa9, 0xb8, 0x99, 0x84, 0xdb, 0x9a, 0xeb, 0x5f,
  0xa3, 0x74, 0x69, 0x40, 0x47, 0xc2, 0x0f, 0xf3, 0xba, 0xc7, 0x06, 0xce,
  0x1a, 0x55, 0xe2, 0xcc, 0xe6, 0xec, 0x73, 0x1b, 0x6a, 0x4f, 0x62, 0x9b,
  0x21, 0xcc, 0x77, 0x76, 0x24, 0x94, 0x00, 0x2a, 0x3a, 0xfb, 0x0d, 0x24,
  0xaf, 0x2c, 0xfd, 0xbb, 0xa3, 0xa0, 0xef, 0x1a, 0x7d, 0x0c, 0x56, 0x3e,
  0xa3, 0xde, 0xce, 0x63, 0xbe, 0x10, 0xe5, 0x23, 0x08, 0xf5, 0x07, 0x32,
  0xc8, 0xd1, 0x7e, 0x12, 0x38, 0x27, 0xfb, 0xe6, 0x9e, 0x68, 0x65, 0x91,
  0xc1, 0x8d, 0xa2, 0x06, 0x59, 0x8b, 0x7a, 0x34, 0xc8, 0x7a, 0x2d, 0xb4,
  0x44, 0x9a, 0x42, 0x9c, 0x49, 0x89, 0xbd, 0xa6, 0x03, 0x9e, 0x0b, 0x9b,
  0x78, 0xc0, 0xf0, 0x0d, 0x5c, 0x6e, 0x2d, 0xf0, 0xdb, 0x4e, 0x23, 0x41,
  0x03, 0xf6, 0x83, 0x99, 0x49, 0xb4, 0x5f, 0x3d, 0xee, 0xa2, 0xe4, 0xd5,
  0xa5, 0xdb, 0x0a, 0x4c, 0xb5, 0x38, 0xc6, 0x39, 0x6d, 0x60, 0x97, 0x32,
  0x79, 0xb1, 0xe9, 0x7d, 0x8c, 0x50, 0x0f, 0xd4, 0xbc, 0x30, 0xce, 0xb8,
  0xd2, 0x50, 0x4f, 0x20, 0x5c, 0x73, 0x67, 0x6b, 0x9e, 0xf6, 0xf9, 0x8f,

  0x63, 0xd5, 0xd8, 0xa4, 0x6c, 0xc8, 0x65, 0x2c, 0x2c, 0x64, 0xc4, 0xba,
  0xc9, 0x09, 0xa3, 0x03, 0x65, 0x10, 0xad, 0x8f, 0x18, 0xa4, 0xbf, 0x09,
  0x65, 0xc3, 0xc7, 0xf9, 0xa2, 0xe5, 0x2b, 0x0c, 0xe9, 0x64, 0x3f, 0xe2,
  0xfa, 0xe4, 0x75, 0x0b, 0xe5, 0x59, 0x67, 0xb4, 0x97, 0x4d, 0xba, 0x70,
  0x3c, 0xfb, 0x34, 0xa2, 0x79, 0xf2, 0x73, 0xf1, 0x45, 0x24, 0x58, 0xb4,

  0x28, 0xca, 0x73, 0x91, 0x2c, 0x66, 0xb2, 0x32, 0xf9, 0x09, 0x05, 0x8e,
  0xc9, 0x9b, 0x40, 0xbb, 0x3c, 0xd2, 0x59, 0x82, 0x3a, 0xec, 0x9a, 0x82,
  0xaf, 0xe4, 0xb3, 0xd8, 0xa6, 0x8d, 0x55, 0x07, 0xc2, 0xdd, 0x48, 0x0d,
  0xbd, 0x49, 0x5b, 0x78, 0xfa, 0x11, 0x26, 0x38, 0x12, 0xaa, 0x83, 0xfe,
  0x5b, 0xde, 0xf0, 0x90, 0xee, 0x1a, 0xae, 0x64, 0x5c, 0xed, 0xb2, 0xe0,
  0xa2, 0x5d, 0x8b, 0xed, 0xa8, 0x60, 0xeb, 0x92, 0xff, 0x57, 0x20, 0x24,
  0x5f, 0x1f, 0x78, 0x51, 0xee, 0xa1, 0x4f, 0xe6, 0x93, 0x4a, 0xb0, 0xbf,
  0xb8, 0x23, 0x1a, 0xef, 0xcf, 0x4d, 0x9c, 0x4d, 0x13, 0xf6, 0xbf, 0x38,
  0xf0, 0x94, 0xdc, 0x4d, 0x8f, 0xc5, 0x21, 0xdc, 0x75, 0x72, 0xf2, 0xb4,
  0xa2, 0x4f, 0xd8, 0x7d, 0xd8, 0xde, 0x32, 0xfb, 0xc0, 0x8d, 0xb2, 0xa8,
  0x3a, 0x05, 0x77, 0xe1, 0x7b, 0x42, 0x24, 0xbc, 0x8f, 0xb9, 0x91, 0xae,
  0xb6, 0x9b, 0xb7, 0x46, 0x8b, 0x09, 0xf3, 0x60, 0x64, 0xcd, 0xcf, 0x93,
  0x26, 0x24, 0x07, 0xcc, 0x82, 0x41, 0x7d, 0x80, 0x53, 0x3d, 0xb9, 0xbc,


  0x51, 0xc4, 0x55, 0x97, 0x0c, 0x7a, 0xc3, 0x20, 0x39, 0xce, 0x4a, 0xbc,
  0xf7, 0x2e, 0x09, 0xc1, 0x66, 0x28, 0x6e, 0x95, 0x93, 0xcd, 0x61, 0x41,
  0x43, 0x9c, 0xf5, 0x6c, 0x9b, 0xf5, 0xdc, 0x13, 0xa1, 0x5c, 0x1e, 0x0d,
  0x06, 0x4a, 0x26, 0xc7, 0x3e, 0x45, 0x48, 0xf4, 0x88, 0x10, 0x74, 0xa4,
  0x48, 0x3a, 0xa0, 0x2a, 0xca, 0x20, 0x8d, 0x24, 0x83, 0x6d, 0xe6, 0x69,
  0x6f, 0x98, 0x31, 0x93, 0x36, 0x21, 0xeb, 0x65, 0xba, 0xd2, 0x15, 0xdf,
  0xaf, 0xde, 0xc9, 0xcf, 0x82, 0xe9, 0x2a, 0x1c, 0xb0, 0xc4, 0x7d, 0xa6,
  0x62, 0x64, 0xe5, 0xf1, 0xa4, 0x1a, 0x3e, 0x2c, 0xd2, 0x5a, 0xcf, 0xc2,

  0xed, 0x5d, 0x7f, 0xd1, 0xdf, 0xf1, 0xaa, 0xba, 0xff, 0xd2, 0xa2, 0xbf,
  0x0b, 0x2c, 0x7a, 0xcf, 0x5e, 0x1c, 0xfe, 0x58, 0xb4, 0xb3, 0xf3, 0x52,
  0x0b, 0x42, 0x80, 0x8e, 0xe9, 0x7b, 0xf6, 0x83, 0xce, 0x17, 0xe1, 0xb9,

  0x1e, 0xd5, 0x1f, 0xf8, 0xdf, 0x72, 0x2e, 0xaf, 0xf3, 0xa9, 0x7d, 0xf3,
  0x29, 0x50, 0xbf, 0xd1, 0x02, 0x05, 0x9d, 0x9e, 0xb9, 0x8c, 0xc7, 0x7c,
  0xd4, 0x94, 0x43, 0x35, 0xfc, 0x1e, 0xf3, 0xa7, 0x2a, 0xa3, 0x4b, 0x36,
  0x3e, 0xa5, 0xb3, 0x70, 0xbe, 0xf3, 0xc2, 0xb8, 0x51, 0x36, 0x77, 0x34,
  0x80, 0x7e, 0x44, 0xbc, 0x78, 0x96, 0xcc, 0x89, 0x32, 0xc7, 0x09, 0xa2,
  0xf5, 0x58, 0xf7, 0x1f, 0xd7, 0xdc, 0x4d, 0x8a, 0x98, 0xd0, 0x96, 0x67,
  0xf1, 0x63, 0x00, 0x6c, 0x4b, 0x3c, 0xc5, 0x6c, 0xae, 0xc4, 0x38, 0xfb,
  0x0c, 0x6d, 0x05, 0xd2, 0x04, 0xc4, 0x6d, 0x86, 0x7e, 0x58, 0x3c, 0xd1,
  0x7c, 0x62, 0x5c, 0xb5, 0xf2, 0x55, 0x0f, 0x0e, 0xa0, 0x94, 0x06, 0x86,
  0x7c, 0x65, 0x44, 0x4b, 0x08, 0x63, 0xc3, 0x6d, 0xbf, 0xb4, 0x47, 0x64,
  0xce, 0x01, 0x1d, 0x5b, 0x0c, 0x11, 0xe2, 0xec, 0x9e, 0xf2, 0x12, 0x8d,
  0x07, 0x48, 0x1f, 0x1d, 0x8c, 0xd2, 0xa5, 0xbe, 0xd5, 0x5c, 0x38, 0x0a,
  0xe2, 0x36, 0x73, 0xe3, 0x4b, 0x64, 0x76, 0x02, 0xb8, 0xdb, 0x8f, 0x2e,
  0xc8, 0x0b, 0x57, 0x83, 0x18, 0x9f, 0x30, 0xe9, 0xdb, 0xa2, 0xd1, 0x3a,
  0xe1, 0xbe, 0xb2, 0x27, 0xac, 0x73, 0xd2, 0xe4, 0x97, 0x4d, 0x65, 0xb2,
  0x46, 0xa0, 0xa8, 0xb7, 0x39, 0x89, 0xae, 0x4e, 0xae, 0xaf, 0x28, 0xce,
  0x4b, 0x0c, 0xc0, 0x03, 0x49, 0x8d, 0x8b, 0x0d, 0x03, 0x12, 0x24, 0xec,
  0xcc, 0xea, 0x21, 0x96, 0x41, 0x30, 0x7e, 0x99, 0x39, 0x6f, 0xfe, 0xa7,
  0xbe, 0xc7, 0xd5, 0x2f, 0x89, 0xd6, 0x9a, 0xd8, 0x88, 0x4e, 0x1d, 0x59,
  0x6d, 0x67, 0xc7, 0x66, 0x21, 0x71, 0x73, 0x63, 0x16, 0x73, 0x92, 0x49,
  0xde, 0x97, 0xec, 0x16, 0x2d, 0xbe, 0xd0, 0x66, 0x76, 0xf8, 0x10, 0x67,
  0x63, 0xe7, 0x45, 0x40, 0xe4, 0xca, 0xa7, 0x55, 0xfe, 0xf3, 0x14, 0x2c,
  0x8a, 0x1a, 0x7f, 0x8d, 0x7f, 0xca, 0xdc, 0x53, 0x2a, 0x00, 0xa3, 0xbd,
  0xad, 0xad, 0x00, 0xec, 0x70, 0x3c, 0x04, 0xa6, 0x2a, 0xda, 0x9c, 0x54,
  0xf5, 0xd0, 0x5b, 0xec, 0x35, 0x25, 0xf5, 0xb2, 0x44, 0x53, 0xa3, 0x37,
  0x41, 0x37, 0x26, 0xee, 0x98, 0x6f, 0x54, 0xec, 0x30, 0x8f, 0xf9, 0x9e,
  0xaa, 0x8c, 0x74, 0xd3, 0x1a, 0xcc, 0x85, 0x4b, 0x90, 0xb4, 0x7b, 0x6e,
  0xec, 0x80, 0x31, 0x8b, 0xff, 0xdb, 0x9b, 0x99, 0xc7, 0xbf, 0x77, 0xf6,


  0x7d, 0x8a, 0x18, 0x5c, 0x5f, 0x5c, 0x09, 0x85, 0xf9, 0xa2, 0x99, 0x77,
  0x84, 0x1e, 0xb1, 0x68, 0x2b, 0x5d, 0x1f, 0x72, 0x67, 0x6c, 0xf0, 0x01,
  0x0c, 0x8a, 0xa9, 0xf3, 0x55, 0xe6, 0x00, 0xd4, 0x40, 0x4f, 0x96, 0xf6,
  0x9d, 0x20, 0x02, 0x28, 0x5e, 0xaf, 0xde, 0x4b, 0xe7, 0x25, 0xbe, 0x66,
  0x17, 0x7c, 0x7f, 0xb9, 0x7a, 0x1d, 0xe9, 0x48, 0xea, 0xd8, 0x11, 0xef,

  0x57, 0xd2, 0x61, 0x4d, 0xa7, 0xcf, 0x26, 0x2d, 0xf2, 0x25, 0xba, 0xb0,


  0x90, 0xcc, 0xcc, 0xe1, 0x65, 0x9d, 0xc6, 0x2a, 0xa6, 0x6e, 0xb3, 0xc8,
  0x27, 0x18, 0xb2, 0x58, 0x12, 0x9b, 0x62, 0xf6, 0x85, 0x8d, 0x3c, 0x58,
  0xf7, 0xbc, 0x18, 0x4b, 0xfa, 0x8a, 0x08, 0x4e, 0x35, 0x16, 0xac, 0x9e,

  0x6d, 0xa5, 0xfe, 0xe5, 0xc5, 0xd5, 0xb5, 0x91, 0xf9, 0xf8, 0x59, 0xfa,
  0x41, 0xe3, 0xf6, 0x60, 0xbf, 0x14, 0xc1, 0x9f, 0x10, 0xc9, 0x46, 0x3d,
  0x7c, 0x3f, 0x0b, 0x42, 0x10, 0xc8, 0x91, 0xd0, 0x38, 0x3a, 0x50, 0x97,
  0x3a, 0xed, 0x8d, 0x73, 0x86, 0xf3, 0x31, 0xfc, 0x86, 0x3d, 0xe8, 0x24,
  0x68, 0x5a, 0x90, 0xc1, 0xac, 0x72, 0xbb, 0xbb, 0xed, 0x53, 0x06, 0xda,
  0xd0, 0x57, 0x27, 0x83, 0x6b, 0x9e, 0x39, 0xfe, 0xcd, 0x9b, 0x39, 0xd7,
  0x87, 0xca, 0x0f, 0x7d, 0x27, 0xaa, 0xa1, 0x0c, 0xcc, 0x40, 0x03, 0x6b,
  0x83, 0xc6, 0x37, 0x05, 0xee, 0xce, 0x8e, 0xed, 0x3a, 0xd9, 0x86, 0xc4,
  0x34, 0x85, 0x4e, 0xe8, 0x7e, 0xd3, 0x0f, 0x3a, 0xf2, 0x95, 0x0e, 0xa8,
  0x65, 0x7c, 0x1d, 0x6a, 0xf0, 0xeb, 0xbb, 0x7b, 0x76, 0x84, 0x05, 0x4a,
  0x2a, 0x19, 0xe0, 0x54, 0xdb, 0xe4, 0xe2, 0x0f, 0x7b, 0x4a, 0x2a, 0x24,
  0x2c, 0x98, 0x28, 0xf8, 0x39, 0x3b, 0xce, 0xbe, 0x94, 0xa8, 0x9f, 0x19,
  0x55, 0xc1, 0x99, 0x0a, 0xfe, 0x58, 0x53, 0x7e, 0x48, 0xdb, 0x68, 0x90,
  0xdc, 0x2e, 0x53, 0xfa, 0xd7, 0x98, 0x2d, 0x68, 0xd2, 0x16, 0x79, 0xed,
  0xae, 0x5c, 0x00, 0x65, 0x2b, 0xcd, 0x96, 0x09, 0xe9, 0x68, 0x71, 0x31,
  0xc3, 0x5e, 0x0f, 0xc0, 0x44, 0x0a, 0xae, 0x1f, 0xbb, 0xcf, 0x42, 0xb0,
  0xd4, 0xce, 0x37, 0x44, 0xfe, 0x9c, 0x9e, 0x9d, 0xd8, 0xa3, 0xe2, 0x3e,
  0x11, 0x74, 0x89, 0xad, 0xae, 0x8f, 0xad, 0xed, 0x8d, 0x98, 0xe8, 0x47,
  0x97, 0xd8, 0xb3, 0x9c, 0x74, 0xa6, 0xf2, 0xdf, 0xed, 0x68, 0x7c, 0x49,
  0xc8, 0x03, 0x0f, 0x62, 0x93, 0xca, 0x9d, 0xd3, 0x0c, 0x4e, 0x96, 0x7e,
  0x82, 0x7f, 0x75, 0x30, 0xcd, 0xbd, 0xe5, 0xbe, 0xb2, 0x2f, 0x97, 0xb0,

  0x12, 0xb0, 0xd0, 0x9b, 0x8f, 0xec, 0x09, 0x5d, 0x81, 0xf9, 0x4e, 0x43,
  0x18, 0xd6, 0x8c, 0x77, 0x59, 0x9a, 0xc5, 0x8c, 0x79, 0x84, 0x89, 0x3e,
  0x53, 0x63, 0xe1, 0xce, 0x50, 0x2c, 0x0c, 0x8e, 0x86, 0xa6, 0x81, 0x10,

  0x26, 0x09, 0xa3, 0x22, 0x07, 0x63, 0x65, 0xc8, 0x69, 0x67, 0x26, 0xd7,
  0xde, 0x8d, 0x01, 0xd3, 0xd6, 0x1a, 0xbc, 0xa8, 0xe6, 0xe6, 0x36, 0x1a,
  0xb0, 0xef, 0x31, 0x25, 0x1a, 0xb2, 0x31, 0xf2, 0xab, 0x36, 0x3b, 0xc9,
  0x4e, 0x16, 0xdc, 0x3b, 0x74, 0x1a, 0x60, 0x3c, 0x00, 0xe4, 0xbb, 0xab,
  0xfc, 0xef, 0xed, 0xdb, 0xa1, 0x26, 0x04, 0xde, 0xa3, 0x7c, 0xfd, 0xa8,
  0xe6, 0x94, 0x33, 0x9d, 0x24, 0x52, 0xf3, 0x24, 0x9b, 0x8d, 0x5c, 0x7b,
  0x1e, 0xb8, 0x52, 0xce, 0x37, 0x5e, 0x8a, 0xe9, 0x8b, 0xb6, 0x6f, 0xf6,

  0x68, 0x93, 0xef, 0xfb, 0x1c, 0x55, 0x66, 0xbf, 0x19, 0x37, 0xaa, 0x91,
  0xdf, 0x08, 0x08, 0xe3, 0x8d, 0xf8, 0x65, 0xb0, 0x15, 0x95, 0x87, 0xb8,
  0xb8, 0x9c, 0x4b, 0x0e, 0xaf, 0xf3, 0xa5, 0xcf, 0xc5, 0x93, 0x81, 0xc5,
  0xe7, 0x99, 0x05, 0x29, 0x72, 0x16, 0x82, 0x8a, 0xae, 0x58, 0xcd, 0x1a,
  0xca, 0x07, 0xe6, 0x38, 0x8a, 0x4d, 0x0a, 0xb0, 0x8f, 0xb1, 0x87, 0xc8,
  0x65, 0xc8, 0x66, 0x45, 0xd9, 0x55, 0x8f, 0x42, 0xae, 0x45, 0xc0, 0xe2,
  0x59, 0x90, 0xc7, 0xf8, 0x57, 0xa6, 0x69, 0x90, 0xef, 0x12, 0x2f, 0x92,
  0xbf, 0x92, 0x22, 0xd9, 0x37, 0xdd, 0x5a, 0x35, 0xa0, 0x1c, 0x67, 0xcb,
  0xd8, 0xb1, 0xe5, 0xf7, 0x5e, 0x89, 0x87, 0x4a, 0xdc, 0x20, 0x18, 0x59,
  0xcf, 0x10, 0xfc, 0xba, 0x11, 0x5e, 0xdc, 0xdf, 0x36, 0xbe, 0x4a, 0x4c,
  0x99, 0x95, 0x3a, 0x10, 0x37, 0x71, 0x16, 0xe1, 0x8f, 0x07, 0xef, 0xa2,


  0xf7, 0x6f, 0xf6, 0x31, 0xa1, 0x67, 0x9a, 0x14, 0x8b, 0x02, 0x93, 0x38,
  0x95, 0x86, 0x2f, 0xbe, 0x75, 0x06, 0xdb, 0xb1, 0xd9, 0x17, 0x0a, 0x8e,
  0x28, 0xcc, 0x4c, 0xec, 0x05, 0x38, 0x42, 0x2c, 0x7c, 0x9e, 0x6a, 0x0b,
  0x4c, 0xc5, 0xf1, 0x53, 0xb4, 0x2a, 0xd2, 0x5a, 0x3e, 0x6b, 0x26, 0x85,
  0xd7, 0x18, 0xd8, 0xfe, 0xae, 0x65, 0x60, 0xc5, 0xe3, 0x02, 0x9b, 0xab,
  0x64, 0x53, 0x34, 0x0b, 0x02, 0x37, 0x6a, 0x9f, 0x99, 0xe6, 0x31, 0xdf,
  0x7b, 0xd4, 0x61, 0xfd, 0xd7, 0x48, 0x3d, 0x27, 0x77, 0xa9, 0xf3, 0xde,

  0xbe, 0xeb, 0x55, 0x28, 0xa5, 0x33, 0x9a, 0xb4, 0xc4, 0x20, 0x0d, 0xc5,
  0x79, 0xf6, 0x85, 0x79, 0x16, 0xfd, 0x46, 0x69, 0xe6, 0xb4, 0x30, 0x6a,
  0x79, 0x43, 0x94, 0x5f, 0x35, 0x10, 0x54, 0x31, 0x63, 0x7d, 0xc7, 0xd9,

  0x7b, 0xe7, 0x95, 0x57, 0x75, 0xa7, 0x09, 0xf5, 0x36, 0x30, 0x84, 0x49,
  0x8b, 0xa2, 0xce, 0xb2, 0x8e, 0x9b, 0x85, 0x65, 0xf4, 0x65, 0x33, 0x0f,
  0x5a, 0x79, 0x60, 0xe2, 0x22, 0x88, 0xe8, 0x55, 0x67, 0xd2, 0x3f, 0x3e,
  0x8a, 0xda, 0x8a, 0x80, 0x88, 0xd6, 0x9d, 0x8f, 0x6c, 0xcb, 0x9d, 0xc1,
  0xbe, 0xd4, 0xd3, 0x2c, 0xfd, 0x7b, 0xe2, 0xe4, 0x82, 0x69, 0xfb, 0x29,
  0xe7, 0xf1, 0x1d, 0x61, 0x18, 0xdc, 0x7b, 0x98, 0x98, 0x22, 0x06, 0x4f,
  0xed, 0x03, 0xbb, 0x42, 0xb5, 0xdc, 0x3d, 0x8e, 0x73, 0x1f, 0x60, 0x54,
  0x0a, 0xdd, 0x27, 0xb5, 0xb4, 0xfa, 0x17, 0x7b, 0xa2, 0x73, 0xa9, 0x6e,
  0x8c, 0x92, 0x17, 0x37, 0x62, 0x46, 0x80, 0x8c, 0x4d, 0x36, 0xfd, 0x42,

  0xc4, 0x9e, 0x1c, 0xa5, 0x69, 0x41, 0x65, 0xda, 0x79, 0xe1, 0x5f, 0xef,
  0xd3, 0x4c, 0x12, 0xdd, 0xbd, 0xd7, 0x5f, 0xb4, 0xb8, 0x1f, 0x4b, 0x96,
  0x99, 0x27, 0x44, 0x4b, 0xce, 0xf3, 0x2f, 0xed, 0x4d, 0xb0, 0x08, 0xb4,
  0x5d, 0x8b, 0x7b, 0xdb, 0x75, 0x31, 0x4b, 0xf5, 0x2e, 0xb1, 0x0b, 0x25,
  0xe1, 0x5e, 0x07, 0x01, 0x64, 0xf9, 0x89, 0xf9, 0xfc, 0x2c, 0x47, 0x6e,
  0xea, 0x7c, 0x8f, 0x49, 0xea, 0x2d, 0xf5, 0xaa, 0xb0, 0xc6, 0x41, 0x16,
  0x5d, 0x3b, 0x65, 0xb2, 0xf6, 0xe9, 0x57, 0x42, 0x1b, 0x2a, 0x2f, 0x8d,
  0xb1, 0xda, 0xf6, 0xc6, 0xcb, 0x2d, 0x57, 0x59, 0x1d, 0x63, 0x54, 0x96,
  0xcb, 0xf8, 0x5b, 0x5f, 0x60, 0xca, 0x38, 0x05, 0x31, 0x32, 0x05, 0xa2,
  0xa6, 0x67, 0x2c, 0x9a, 0xa1, 0x7d, 0x6c, 0xa7, 0xc6, 0x74, 0xaf, 0x5d,
  0xf5, 0x29, 0x3a, 0x7d, 0xe3, 0x3c, 0xb8, 0x6b, 0x17, 0x18, 0xcf, 0x50,
  0x1b, 0x78, 0x64, 0x3f, 0x55, 0x19, 0xad, 0xe3, 0x5b, 0x0e, 0x66, 0xc9,
  0x4b, 0xa6, 0x8c, 0xf3, 0x9c, 0x51, 0xb7, 0x68, 0xfb, 0xbd, 0x67, 0x98,
  0x1c, 0x8e, 0x6f, 0x40, 0xaa, 0x8d, 0x2a, 0xca, 0x09, 0xcd, 0x34, 0xc6,
  0xd5, 0x3c, 0xfb, 0x97, 0x2f, 0x56, 0x3c, 0x2b, 0x42, 0xb3, 0x34, 0xa2,
  0xde, 0x79, 0xef, 0xa5, 0x7f, 0xcd, 0xd5, 0x1c, 0xd0, 0x32, 0x05, 0xb8,
  0x6a, 0x78, 0xd3, 0xa2, 0x75, 0x2c, 0x8f, 0xfe, 0x77, 0x75, 0x0c, 0x16,
  0x88, 0x27, 0x58, 0xfe, 0xbb, 0x3b, 0xdf, 0xcf, 0xdd, 0x5a, 0x07, 0xf6,
  0x0a, 0x16, 0x09, 0xc5, 0x09, 0x46, 0xb5, 0x76, 0x11, 0x36, 0x47, 0x88,
  0x76, 0xc7, 0x19, 0x81, 0xcf, 0x1c, 0xf4, 0x88, 0x65, 0x66, 0x39, 0x07,
  0x1b, 0x81, 0x82, 0x46, 0x30, 0x76, 0xa1, 0x27, 0x91, 0xe7, 0x8b, 0x07,
  0xca, 0xf1, 0xa1, 0x6e, 0x35, 0xae, 0x41, 0x79, 0xb3, 0x64, 0x93, 0xdb,
  0xac, 0xc8, 0x3a, 0xd8, 0x9c, 0xd7, 0x76, 0x2c, 0xf7, 0xa2, 0xb9, 0x91,
  0xda, 0x78, 0x0c, 0xb3, 0x65, 0x9b, 0xdc, 0xf4, 0x0f, 0xa0, 0x7a, 0xe9,
  0xfb, 0x22, 0xc7, 0xbf, 0x2a, 0x44, 0xc8, 0x7a, 0xdc, 0x92, 0x9a, 0x29,
  0x49, 0xe4, 0xce, 0x67, 0x44, 0xb5, 0xc1, 0x14, 0x27, 0x38, 0xa5, 0x9b,
  0x64, 0x74, 0xab, 0x57, 0x46, 0x06, 0xb1, 0xa9, 0xe7, 0xce, 0x5b, 0x7b,
  0x66, 0x6b, 0xc9, 0xa0, 0xb9, 0x3a, 0x69, 0x5a, 0x01, 0xf6, 0x51, 0xa6,
  0x9a, 0xab, 0xeb, 0xc1, 0xe5, 0x01, 0xce, 0x99, 0xe3, 0x86, 0x70, 0x21,
  0x8e, 0x07, 0xc9, 0xdf, 0xa4, 0xce, 0xac, 0xb4, 0x4f, 0xbf, 0x68, 0x79,
  0x7a, 0x20, 0x8e, 0xbd, 0x53, 0x42, 0x6a, 0x86, 0x73, 0x70, 0x5f, 0x62,
  0xa2, 0x59, 0x66, 0xea, 0xdf, 0x67, 0xff, 0x17, 0xce, 0x8c, 0xb8, 0x21,
  0xc6, 0x96, 0xed, 0xc3, 0x9f, 0x5b, 0x9b, 0xe6, 0x66, 0x99, 0xdd, 0x1a,

  0x7d, 0x51, 0x70, 0xf4, 0xf4, 0x80, 0xed, 0x0b, 0xaf, 0xf4, 0x6a, 0x38,
  0x7e, 0x50, 0x93, 0xf7, 0xd4, 0x15, 0x0f, 0x85, 0xb8, 0x1d, 0x25, 0xe6,
  0x09, 0xfc, 0x75, 0xe9, 0xec, 0xc1, 0xab, 0x2d, 0x23, 0x7e, 0x05, 0x92,
  0xe7, 0x36, 0x79, 0xb4, 0x54, 0xa7, 0x39, 0x16, 0x8b, 0x34, 0x43, 0x17,
  0x84, 0x7d, 0xc4, 0x0e, 0xb0, 0x5d, 0x13, 0x02, 0x4d, 0x75, 0xa3, 0xac,
  0xe2, 0x6a, 0xe9, 0x88, 0x98, 0x57, 0x4c, 0x3b, 0x03, 0x8c, 0x3a, 0xce,
  0x85, 0x5e, 0xd3, 0x4c, 0xbd, 0x6d, 0x0d, 0x17, 0x9a, 0xbe, 0xf4, 0xc3,
  0x0f, 0x2c, 0x47, 0x72, 0x05, 0x46, 0x92, 0xd0, 0x95, 0x69, 0xfe, 0x04,
  0x4c, 0x97, 0x55, 0x0f, 0xbc, 0xc2, 0x14, 0xef, 0x29, 0x12, 0xec, 0x4f,

  0xa9, 0xd8, 0x37, 0x74, 0x79, 0x42, 0xd1, 0xf3, 0x3c, 0x93, 0x98, 0x2d,

  0x26, 0x6f, 0x92, 0xeb, 0x93, 0xc1, 0xa6, 0xd9, 0x15, 0x06, 0x33, 0x38,
  0xfa, 0x70, 0xfd, 0xee, 0xe2, 0x6a, 0x10, 0x6d, 0x62, 0x6d, 0xfb, 0xf5,
  0xd5, 0xe9, 0xd7, 0x1f, 0xae, 0xe1, 0x9f, 0x3a, 0xd2, 0x9b, 0x38, 0x4b,
  0x41, 0x3a, 0x0d, 0xaa, 0x24, 0x03, 0x5a, 0x99, 0x6a, 0x8f, 0x26, 0xca,
  0x41, 0x41, 0x79, 0x9c, 0x17, 0x0a, 0x69, 0x82, 0xe9, 0x28, 0xf9, 0xcc,
  0x26, 0x13, 0xb0, 0x07, 0x1b, 0x73, 0xfc, 0x72, 0x6b, 0x39, 0xa7, 0x8d,

  0xa2, 0x7c, 0x4d, 0xdb, 0x89, 0xae, 0xdf, 0x1d, 0x9d, 0x7f, 0x3b, 0xd0,
  0x0e, 0x1e, 0xdf, 0x7f, 0xff, 0x7d, 0x33, 0xb8, 0x4b, 0x3a, 0xec, 0x4d,
  0xfc, 0xf0, 0xd0, 0x2f, 0x93, 0xcf, 0x3e, 0x1b, 0x9c, 0x9c, 0x44, 0x47,
  0x67, 0x83, 0x8b, 0xcf, 0x2c, 0x8e, 0xc3, 0xfa, 0xf6, 0x06, 0x28, 0x69,
  0xd3, 0xa4, 0x82, 0xbf, 0x7c, 0xf6, 0xd9, 0xff, 0x07, 0x20, 0xad, 0x4e,
  0xbd, 0x33, 0x97, 0x02, 0x00,
};
#define BUF_SIZE 0x10000
static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
{
  (void) opaque;
  /* not a typo, keep it calloc() */
  return (voidpf) calloc(items, size);







|
|


|
|
>
|
<
|
|
|
|
|
<
|
|
|
|
>
>
|
<
|
|
|
|
>
>
|
>
|
>
|
|
|
<
|
|
<
|
|
|
|
|
|
|
<
|
|
>
|
|
|
<
|
|
>
|
|
|
|
|
|
<
|
|
>
|
|
<
|
<
>
|
|
|
|
|
|
|
|
>
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
<
>
|
>
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
<
|
|
|
|
|
|
|
>
|
>
|
<
>
|
|
|
<
<
|
|
|
|
|
|
>
|
<
|
|
|
>
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
<
|
|
|
|
|
>
>
|
|
|
<
>
|
<
<
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
<
|
|
<
>
|
|
>
>
>
|
>
|
<
|
<
<
<
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
<
|
|
<
|
>
|
|
|
|
|
|
|
|
|
>
>
|
<
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
>
|
|
|
|
|
|
<
|
<
|
|
|
>
>
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
<
|
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
>
>
>
>
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
<
|
>
|
|
|
|
|
<
|
|
|
|
|
|
<
|
>
|
<
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
<
|
|
|
|
|
|
|
|
<
|
|
|
|
>
>
|
|
<
>
|
|
|
<
<
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
>
>
|
|
>
>
|
>
>
|
>
|
<
|
<
<
|
<
|
<
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
>
>
|
|
|
<
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
|
|
<
|
|
<
<
|
|
|
|
|
>
>
|
>
|
>
|
|
|
>
>
|
<
<
<
|
|
>
|
<
<
<
>
|
>
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
<
|
>
|
<
>
>
>
>
|
>
>
|
<
|
<
|
>
|
|
>
>
|
|
|
<
|
|
<
|
>
|
<
<
>
|
<
<
<
<
|
|
|
|
>
>
>
>
|
|
|
|
<
|
|
>
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
>
|
>
|
<
|
<
|
<
<
|
<
<
|
>
>
|
>
>
|
<
|
>
|
>
|
|
<
>
|
|
|
<
<
>
|
|
|
>
|
<
>
|
<
>
|
<
<
<
|
<
|
|
>
>
>
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
<
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
<
|
|
>
|
|
<
|
>
|
|
|
|
|
|
<
|
<
<
>
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
>
|
|
|
|
|
|
>
|
<
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
>
|
|
<
|
<
|
|
|
<
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
<
<
|
|
|
|
>
|
|
>
|
|
>
|
<
<
|
>
|
|
|
|
|
|
|
<
|
<
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
<
<
|
|
|
|
|
>
>
|
<
|
>
|
|
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
>
|
<
|
|
|
|
|
<
|
|
|
>
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
>
|
|
<
|
|
|
|
|
|
|
<
<
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
>
|
>
|
|
|
|
|
|
>
|
|
<
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
>
|
|
|
|
>
>
>
|
|
|
|
<
<
|
>
|
>
|
|
|
|
|
|
|
|
|
|
|
|
<
|
<
|
|
>
>
|
|
|
<
<
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
<
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
>
|
<
>
>
|
<
|
|
|
|
|
|
>
>
|
|
|
|
|
|
<
<
|
|
|
>
|
|
<
|
|
|
>
>
>
|
<
|
<
|
>
|
<
<
<
|
|
|
|
|
|
|
|
|
|
<
|
<
>
|
>
|
>
>
|
|
<
|
|
|
<
|
|
|
>
|
>
|
<
<
|
>
|
|
|
>
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
<
|
>
|
|
|
<
|
>
|
<
|
|
<
|
<
|
>
|
>
|
|
|
|
|
>
|
|
|
>
>
|
|
<
<
|
<
<
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
>
|
|
<
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
>
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
>
|
|
|
|
|
>
|
|
>
|
<
>
|
|
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
<
|
>
|
|
|
|
|
|
|
|
<
|
<
<
>
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
<
|
|
|
|
|
>
|
|
|
>
|
|
<
<
|
|
|
|
>
|
<
|
<
|
|
>
|
>
|
<
|
|
|
|
|
>
>
>
|
|
|
|
|
|
|
<
<
|
|
<
<
>
|
<
|
|
<
|
>
|
|
>
>
|
<
>
|
>
|
>
|
|
|
|
|
|
<
|
<
|
>
|
|
|
|
|
|
|
<
|
|
>
|
|
<
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
|
<
|
>
|
>
|
>
|
|
>
>
>
|
|
|
|
<
<
<
|
|
|
|
|
|
|
>
>
>
|
|
|
|
|
|
<
|
>
|
<
|
<
<
|
|
|
|
>
>
>
>
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
|
|
|
<
<
|
>
>
|
|
|
<
|
<
<
>
|
|
|
|
<
>
|
|
|
|
>
>
|
|
|
|
|
|
|
|
|
<
<
|
|
|
|
|
|
>
|
<
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
<
<
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<
|
|
>
|
|
|
<
|
|
|
|
|
>
|
|
|
<
|
|
|
<
|
>
|
|
>
|
|
<
|
|
|
|
|
>
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
>
|
<
|
|
>
|
<
|
|
>
|
|
|
<
|
>
>
|
|
<
>
>
|
|
|
<
<
<
|
<
|
<
>
>
|
>
|
|
<
<
<
>
>
|
<
|
>
|
|
<
<
|
>
>
|
>
|
|
>
|
>
>
|
>
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
|
<
|
>
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
<
|
|
>
|
|
|
|
|
>
>
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
<
|
>
|
|
>
>
>
>
|
|
|
>
>
|
|
|
|
<
<
|
>
>
|
<
|
<
|
>
>
|
|
|
|
<
<
|
|
|
|
|
|
|
|
>
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
|
>
|
<
<
|
<
|
|
|
|
<
|
|
>
|
|
|
|
|
<
<
<
|
|
|
>
|
>
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
<
|
<
>
|
>
|
>
>
|
|
<
<
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
<
|
|
|
>
|
|
|
|
|
|
>
>
|
|
<
|
<
|
|
|
|
|
|
|
|
>
|
|
<
|
>
>
|
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
>
|
<
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
<
<
|
|
|
>
>
|
|
|
<
|
<
|
|
>
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
<
|
>
|
>
|
<
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
>
|
<
<
|
|
|
|
|
|
|
<
<
|
|
>
|
<
>
|
|
>
>
|
>
|
<
|
<
|
|
|
|
|
|
>
|
<
|
|
>
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
>
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
<
|
|
|
|
>
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
<
|
|
<
<
|
<
>
|
>
>
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
|
|
|
>
|
|
|
<
<
|
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
>
|
<
<
|
|
|
>
|
<
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
|
>
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
<
|
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
>
|
<
<
|
<
|
>
|
|
|
|
|
|
<
|
|
>
|
|
>
|
|
>
>
|
|
|
<
<
<
>
|
|
|
<
|
|
|
|
|
|
|
|
|
<
|
|
<
|
|
>
>
|
|
|
|
|
|
|
|
<
<
|
|
<
>
|
>
>
|
|
|
<
|
|
|
>
|
|
<
<
|
|
>
|
|
>
|
<
|
>
|
|
<
|
|
|
|
<
|
<
|
|
>
|
|
|
<
<
|
|
<
<
>
>
|
|
>
|
|
|
<
<
|
|
>
>
|
|
|
|
|
|
|
>
|
>
|
>
|
<
<
<
>
|
|
|
<
|
|
|
|
|
|
>
>
|
|
|
|
|
<
|
>
|
|
|
|
<
|
|
>
|
|
|
<
|
|
|
|
>
|
|
|
|
|
|
|
|
|
<
<
|
|
>
|
|
|
|
>
|
<
<
|
|
|
|
|
|
|
|
|
>
|
>
|
<
<
|
|
|
>
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
>
|
|
<
<
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
>
|
>
|
<
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
|
>
|
<
|
>
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
<
<
|
>
|
>
|
|
|
|
>
>
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
<
|
|
|
|
>
|
|
|
|
|
>
|
<
<
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
|
|
>
>
|
|
|
|
|
<
<
|
|
|
|
<
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
|
>
|
>
|
|
|
|
|
|
|
|
|
|
|
<
|
<
|
|
|
>
>
|
|
|
|
|
|
|
<
<
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
>
|
>
|
<
>
>
|
|
<
<
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
<
<
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
<
|
>
|
|
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
>
>
|
|
<
<
|
|
<
|
>
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
>
>
<
<
|
<
|
>
|
>
>
|
|
|
>
|
|
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
|
<
|
>
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
<
<
|
|
>
>
|
|
|
|
<
|
<
>
|
|
|
>
|
|
|
|
|
|
|
<
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
|
|
>
|
|
|
|
|
|
<
<
|
>
|
>
|
|
|
|
|
|
>
|
|
|
<
<
|







4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425

4426
4427
4428
4429
4430

4431
4432
4433
4434
4435
4436
4437

4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450

4451
4452

4453
4454
4455
4456
4457
4458
4459

4460
4461
4462
4463
4464
4465

4466
4467
4468
4469
4470
4471
4472
4473
4474

4475
4476
4477
4478
4479

4480

4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493

4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509

4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526

4527

4528
4529
4530
4531
4532
4533
4534
4535
4536
4537

4538
4539
4540
4541
4542
4543
4544
4545

4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556

4557
4558
4559
4560


4561
4562
4563
4564
4565
4566
4567
4568

4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606

4607

4608
4609
4610
4611
4612
4613
4614
4615
4616
4617

4618
4619


4620
4621
4622
4623
4624
4625
4626
4627
4628
4629

4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659

4660
4661
4662
4663
4664
4665
4666
4667
4668
4669

4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685

4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696

4697
4698

4699
4700
4701
4702
4703
4704
4705
4706
4707

4708



4709
4710
4711
4712

4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725

4726
4727

4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741

4742

4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766

4767

4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781

4782
4783
4784
4785
4786
4787
4788
4789
4790
4791

4792


4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810

4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830

4831
4832
4833
4834
4835
4836
4837
4838

4839
4840
4841
4842
4843
4844
4845

4846
4847
4848
4849
4850
4851

4852
4853
4854

4855
4856
4857
4858

4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877

4878
4879
4880
4881
4882
4883
4884
4885

4886
4887
4888
4889
4890
4891
4892
4893

4894
4895
4896
4897


4898
4899
4900
4901
4902
4903

4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917

4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938

4939


4940

4941



4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965



4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984

4985
4986


4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003



5004
5005
5006
5007



5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020

5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037




5038
5039
5040

5041
5042
5043
5044
5045
5046
5047
5048

5049

5050
5051
5052
5053
5054
5055
5056
5057
5058

5059
5060

5061
5062
5063


5064
5065




5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077

5078
5079
5080
5081
5082
5083
5084

5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098

5099

5100


5101


5102
5103
5104
5105
5106
5107
5108

5109
5110
5111
5112
5113
5114

5115
5116
5117
5118


5119
5120
5121
5122
5123
5124

5125
5126

5127
5128



5129

5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144

5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164

5165



5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209

5210
5211
5212

5213
5214
5215
5216
5217

5218
5219
5220
5221
5222
5223
5224
5225

5226


5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240

5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252

5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323

5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338

5339
5340
5341
5342
5343
5344
5345
5346
5347

5348

5349
5350
5351

5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381

5382


5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394


5395
5396
5397
5398
5399
5400
5401
5402
5403

5404

5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419


5420
5421
5422
5423
5424
5425
5426
5427

5428
5429
5430
5431


5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459

5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481

5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502

5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518

5519
5520
5521
5522
5523
5524
5525

5526
5527
5528
5529
5530

5531
5532
5533
5534
5535
5536
5537

5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554

5555
5556
5557
5558
5559
5560
5561

5562
5563
5564
5565
5566
5567
5568


5569
5570
5571
5572
5573
5574
5575

5576
5577
5578
5579
5580
5581
5582
5583
5584
5585

5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609

5610
5611

5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623

5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638


5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654

5655

5656
5657
5658
5659
5660
5661
5662




5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678

5679
5680
5681
5682
5683
5684
5685
5686

5687
5688
5689
5690
5691
5692

5693

5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721

5722
5723
5724

5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738


5739
5740
5741
5742
5743
5744

5745
5746
5747
5748
5749
5750
5751

5752

5753
5754
5755



5756
5757
5758
5759
5760
5761
5762
5763
5764
5765

5766

5767
5768
5769
5770
5771
5772
5773
5774

5775
5776
5777

5778
5779
5780
5781
5782
5783
5784


5785
5786
5787
5788
5789
5790
5791
5792
5793

5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819

5820
5821
5822
5823
5824

5825
5826
5827

5828
5829

5830

5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847


5848


5849
5850
5851
5852
5853
5854
5855
5856
5857
5858

5859
5860
5861
5862
5863
5864
5865

5866
5867
5868
5869

5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886

5887
5888
5889
5890
5891
5892

5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906

5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920

5921
5922
5923


5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957

5958
5959
5960
5961

5962
5963
5964
5965
5966
5967
5968
5969
5970
5971

5972


5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983

5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995

5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014

6015
6016
6017
6018
6019
6020

6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061

6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079

6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119

6120
6121
6122
6123
6124
6125
6126
6127
6128

6129
6130
6131
6132
6133
6134
6135
6136

6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152

6153
6154
6155
6156
6157

6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169


6170
6171
6172
6173
6174
6175

6176

6177
6178
6179
6180
6181
6182

6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197


6198
6199


6200
6201

6202
6203

6204
6205
6206
6207
6208
6209
6210

6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221

6222

6223
6224
6225
6226
6227
6228
6229
6230
6231

6232
6233
6234
6235
6236

6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252

6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271


6272

6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287



6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303

6304
6305
6306

6307


6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325

6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345


6346
6347
6348


6349
6350
6351
6352
6353
6354

6355


6356
6357
6358
6359
6360

6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376


6377
6378
6379
6380
6381
6382
6383
6384

6385
6386

6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408


6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436



6437
6438
6439
6440
6441
6442

6443
6444
6445
6446
6447
6448
6449
6450
6451

6452
6453
6454

6455
6456
6457
6458
6459
6460
6461

6462
6463
6464
6465
6466
6467
6468
6469
6470
6471

6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484

6485
6486
6487
6488

6489
6490
6491
6492
6493
6494

6495
6496
6497
6498
6499

6500
6501
6502
6503
6504



6505

6506

6507
6508
6509
6510
6511
6512



6513
6514
6515

6516
6517
6518
6519


6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536

6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586

6587
6588
6589
6590
6591
6592
6593

6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621


6622

6623
6624
6625
6626
6627
6628
6629

6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642

6643
6644
6645
6646

6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660

6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685


6686
6687
6688
6689
6690

6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707

6708
6709
6710

6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727


6728
6729
6730
6731

6732

6733
6734
6735
6736
6737
6738
6739


6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775


6776
6777
6778


6779

6780
6781
6782
6783

6784
6785
6786
6787
6788
6789
6790
6791



6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821

6822
6823
6824
6825
6826
6827

6828

6829
6830
6831
6832
6833
6834
6835
6836


6837
6838
6839
6840
6841
6842

6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854

6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878

6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892

6893

6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904

6905
6906
6907
6908


6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933

6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950

6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967

6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984

6985
6986
6987
6988
6989
6990

6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009

7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020


7021
7022
7023
7024
7025
7026
7027
7028

7029

7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040

7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059

7060
7061
7062
7063
7064
7065
7066

7067
7068
7069
7070
7071

7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084

7085
7086
7087
7088
7089
7090


7091
7092
7093
7094
7095
7096
7097


7098
7099
7100
7101

7102
7103
7104
7105
7106
7107
7108
7109

7110

7111
7112
7113
7114
7115
7116
7117
7118

7119
7120
7121
7122
7123
7124
7125
7126
7127
7128

7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148

7149
7150
7151
7152
7153
7154
7155
7156
7157
7158

7159
7160
7161
7162
7163
7164
7165
7166
7167
7168

7169
7170
7171
7172
7173
7174
7175

7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192

7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204

7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221

7222
7223
7224
7225
7226

7227
7228


7229

7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249

7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264

7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298

7299
7300
7301
7302
7303
7304
7305
7306
7307
7308


7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338

7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368

7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418


7419
7420
7421
7422
7423

7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439

7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471


7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490

7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519

7520

7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548

7549
7550
7551
7552
7553
7554


7555

7556
7557
7558
7559
7560
7561
7562
7563

7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576



7577
7578
7579
7580

7581
7582
7583
7584
7585
7586
7587
7588
7589

7590
7591

7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603


7604
7605

7606
7607
7608
7609
7610
7611
7612

7613
7614
7615
7616
7617
7618


7619
7620
7621
7622
7623
7624
7625

7626
7627
7628
7629

7630
7631
7632
7633

7634

7635
7636
7637
7638
7639
7640


7641
7642


7643
7644
7645
7646
7647
7648
7649
7650


7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667



7668
7669
7670
7671

7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684

7685
7686
7687
7688
7689
7690

7691
7692
7693
7694
7695
7696

7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708
7709
7710


7711
7712
7713
7714
7715
7716
7717
7718
7719


7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732


7733
7734
7735
7736
7737

7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754

7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796


7797
7798
7799
7800

7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834


7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847

7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862

7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896


7897
7898
7899

7900
7901
7902
7903
7904
7905
7906
7907
7908
7909

7910
7911
7912
7913
7914
7915
7916
7917
7918


7919
7920
7921
7922
7923
7924
7925
7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941

7942
7943

7944
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954
7955



7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
7970
7971
7972
7973
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
7984
7985

7986
7987
7988
7989
7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000
8001
8002
8003


8004
8005
8006
8007

8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023
8024


8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039

8040

8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052


8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066

8067
8068
8069
8070
8071
8072
8073
8074
8075
8076

8077
8078
8079
8080


8081

8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112

8113


8114

8115
8116
8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132

8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144
8145
8146
8147
8148
8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170
8171
8172
8173
8174
8175
8176
8177
8178
8179
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191
8192
8193

8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205
8206
8207
8208

8209
8210

8211
8212
8213
8214
8215
8216
8217
8218
8219
8220

8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234


8235
8236

8237
8238
8239
8240
8241
8242
8243
8244

8245
8246
8247
8248
8249
8250
8251
8252
8253
8254
8255
8256
8257
8258
8259
8260
8261
8262
8263
8264
8265
8266
8267

8268
8269
8270


8271

8272
8273
8274
8275
8276
8277
8278
8279
8280
8281
8282

8283
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302

8303
8304
8305
8306
8307
8308
8309

8310
8311
8312
8313
8314
8315
8316
8317
8318


8319
8320
8321
8322
8323
8324
8325
8326

8327

8328
8329
8330
8331
8332
8333
8334
8335
8336
8337
8338
8339

8340
8341
8342
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
8364
8365
8366
8367
8368
8369
8370
8371

8372
8373
8374
8375
8376
8377
8378
8379
8380


8381
8382
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392
8393
8394


8395
8396
8397
8398
8399
8400
8401
8402
 */
#ifdef USE_MANUAL
#include "tool_hugehelp.h"
#include <zlib.h>
#include "memdebug.h" /* keep this as LAST include */
static const unsigned char hugehelpgz[] = {
  /* This mumbo-jumbo is the huge help text compressed with gzip.
     Thanks to this operation, the size of this data shrank from 170223
     to 47691 bytes. You can disable the use of compressed help
     texts by NOT passing -c to the mkhelp.pl tool. */
  0x1f, 0x8b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xed, 0xbd,
  0x6b, 0x77, 0xdc, 0xc6, 0xb1, 0x2e, 0xfc, 0xdd, 0xbf, 0x02, 0x9b, 0x59,
  0x39, 0x24, 0x4f, 0x66, 0x86, 0x37, 0x5d, 0x2c, 0x45, 0xce, 0xb6, 0x22,
  0x51, 0x36, 0xb7, 0x29, 0x91, 0x47, 0x43, 0xd9, 0xce, 0x89, 0xbd, 0xb4,
  0x30, 0x33, 0x18, 0x12, 0xd1, 0x0c, 0x30, 0x01, 0x30, 0xbc, 0x64, 0x9f,

  0x9c, 0xdf, 0xfe, 0x76, 0x3d, 0x55, 0xd5, 0xdd, 0x40, 0x37, 0x86, 0xb4,
  0x63, 0xfb, 0xdc, 0xde, 0xec, 0xb5, 0x2d, 0x89, 0x04, 0x1a, 0x7d, 0xa9,
  0xae, 0x7b, 0x3d, 0x95, 0x24, 0xf7, 0xfd, 0xef, 0x23, 0xfe, 0xff, 0xa3,
  0xf9, 0x9f, 0xf9, 0xf3, 0xb3, 0x24, 0x39, 0xaf, 0xca, 0xbf, 0x65, 0xd3,
  0x26, 0xfe, 0xec, 0xc7, 0x8f, 0xff, 0x23, 0xe1, 0xff, 0x33, 0xef, 0xfc,

  0x60, 0xfe, 0xfc, 0x6c, 0xe3, 0xd8, 0x7b, 0x89, 0x7b, 0xe1, 0x7f, 0x7c,
  0xdc, 0x4d, 0xee, 0x7b, 0xe1, 0x7f, 0x24, 0x3b, 0x78, 0xe1, 0xa3, 0x7c,
  0xe1, 0x05, 0xfd, 0xfd, 0xe3, 0xc7, 0xcd, 0x1f, 0xf9, 0x81, 0x66, 0x45,
  0xff, 0xd9, 0xa3, 0xf7, 0x7e, 0xf8, 0x48, 0x7f, 0x35, 0x3f, 0xf9, 0xec,
  0xb3, 0x77, 0x2f, 0xdf, 0x1e, 0xeb, 0xab, 0xd3, 0x75, 0xb5, 0x48, 0x86,
  0x49, 0x53, 0xa5, 0x45, 0x3d, 0xcf, 0xaa, 0x24, 0x4d, 0x3e, 0xbc, 0x3f,
  0xfd, 0xec, 0xb3, 0xf1, 0x5f, 0xde, 0x9d, 0x9d, 0x8f, 0x4f, 0xc6, 0xad,

  0xc7, 0xfe, 0x5a, 0xae, 0x9a, 0xbc, 0x2c, 0x6a, 0x33, 0x7d, 0xf3, 0x50,
  0xfd, 0xe3, 0x67, 0x9f, 0xbd, 0x3e, 0x1e, 0xbf, 0x7a, 0x7f, 0x72, 0x7e,
  0x71, 0x72, 0xf6, 0xae, 0xf5, 0x64, 0x92, 0xd7, 0x89, 0x19, 0xaa, 0x29,
  0xcb, 0x85, 0xf9, 0x8f, 0x1b, 0x7d, 0x96, 0x36, 0x69, 0x32, 0xaf, 0xca,
  0x65, 0x52, 0x56, 0xf4, 0x8b, 0x34, 0xa9, 0xb3, 0xea, 0x3a, 0xab, 0x06,
  0xc9, 0xba, 0xce, 0x8b, 0xcb, 0xa4, 0x2c, 0xb2, 0xa4, 0x9c, 0x27, 0xcd,
  0x55, 0xa6, 0xc3, 0xd5, 0xeb, 0xd5, 0xaa, 0xac, 0x9a, 0x6c, 0x96, 0xac,
  0xaa, 0xb2, 0x29, 0xa7, 0xe5, 0xa2, 0x4e, 0x76, 0x5e, 0x9f, 0xbc, 0xba,
  0x18, 0x24, 0x6f, 0x4e, 0x4e, 0x8f, 0xcd, 0x7f, 0x2f, 0xce, 0xf1, 0x9f,
  0xf1, 0x20, 0xf9, 0xea, 0xec, 0xfc, 0xeb, 0xe3, 0xf7, 0x83, 0xe4, 0xeb,
  0x0b, 0xfa, 0x19, 0xfd, 0xd7, 0xfc, 0x30, 0x39, 0x79, 0xfb, 0xf2, 0x7c,
  0xa0, 0xc3, 0xd1, 0x3f, 0xe8, 0x87, 0xa7, 0xaf, 0xcd, 0x0f, 0xf9, 0x0f,
  0xfa, 0xe7, 0xf9, 0xd9, 0xf9, 0x91, 0xfc, 0x41, 0xff, 0x7c, 0x7f, 0xf1,

  0xd6, 0xfc, 0xf6, 0xfd, 0xc5, 0xd8, 0xfc, 0x77, 0xfc, 0x8a, 0xfe, 0x83,
  0xaf, 0x8c, 0xdf, 0xfe, 0x19, 0xff, 0x19, 0xdb, 0xe1, 0xc6, 0x6f, 0xf9,

  0xe7, 0xf8, 0xd2, 0xc5, 0xf1, 0xe9, 0xbb, 0xe3, 0x8b, 0x24, 0x2d, 0x66,
  0xc9, 0x85, 0x79, 0x7e, 0x77, 0x94, 0x5c, 0x5c, 0x65, 0xc9, 0xb4, 0x5c,
  0x2e, 0xe9, 0x47, 0x66, 0x47, 0x66, 0x59, 0x9d, 0x5f, 0x16, 0x66, 0x29,
  0x66, 0xe5, 0x37, 0x65, 0xf5, 0x29, 0x49, 0x6e, 0xf2, 0xe6, 0xaa, 0x5c,
  0x37, 0x3a, 0xdc, 0xda, 0xec, 0x46, 0x92, 0x17, 0x4d, 0x56, 0xa5, 0x53,
  0xda, 0xe9, 0xd1, 0x67, 0xad, 0x5d, 0x2d, 0xe7, 0x66, 0x0f, 0x6b, 0xb3,
  0x69, 0x93, 0x75, 0xbd, 0x28, 0xd3, 0x19, 0x6d, 0x95, 0x79, 0x65, 0xbe,

  0x36, 0x9b, 0x5c, 0xe5, 0xd3, 0x4f, 0x75, 0xb2, 0xc8, 0x3f, 0x65, 0xb4,
  0x51, 0xb7, 0x77, 0xba, 0x71, 0x03, 0x1e, 0x34, 0x5d, 0x9b, 0x3d, 0x2d,
  0x86, 0x3a, 0x5c, 0x93, 0x4f, 0x53, 0xfa, 0x00, 0x76, 0x2e, 0x59, 0xaf,
  0x68, 0x34, 0xde, 0xb1, 0x64, 0x55, 0xd6, 0xe6, 0xa5, 0xf1, 0xf8, 0xd4,
  0xcc, 0xbc, 0x28, 0x32, 0xcc, 0xa3, 0x1e, 0x98, 0x7f, 0x94, 0x9f, 0xf2,
  0xcc, 0xfc, 0x65, 0x9e, 0x2f, 0xb2, 0x84, 0x4f, 0xd4, 0x0e, 0x47, 0x47,

  0x9b, 0x54, 0x59, 0xbd, 0x5e, 0x66, 0x66, 0xf7, 0xde, 0x66, 0x4d, 0xba,
  0xc8, 0x8b, 0x4f, 0xe6, 0xaf, 0xb4, 0xf0, 0x65, 0x59, 0x65, 0xa3, 0xe4,
  0x65, 0x9d, 0xdc, 0x95, 0x6b, 0xb3, 0xe0, 0xc5, 0xc2, 0x9c, 0x79, 0x96,
  0x4c, 0xb2, 0x45, 0x79, 0x33, 0xa0, 0x93, 0x4e, 0x8a, 0xf5, 0x72, 0x62,
  0x06, 0x28, 0xe7, 0x6e, 0xb8, 0xb4, 0x59, 0x9b, 0xe1, 0xf8, 0xe9, 0x65,
  0x6a, 0xd6, 0x64, 0xde, 0xad, 0x92, 0xab, 0xcc, 0xac, 0xb9, 0x5e, 0xe5,
  0xc5, 0xbf, 0xb5, 0xf7, 0xc5, 0x6c, 0xed, 0xaa, 0xbc, 0xc9, 0x2a, 0xb3,
  0xb3, 0x93, 0xbb, 0xc4, 0x6c, 0xc2, 0x84, 0x89, 0x70, 0x6e, 0x88, 0x2c,
  0x49, 0xcd, 0x10, 0x96, 0x00, 0x87, 0x55, 0xb6, 0x48, 0x89, 0x98, 0xec,

  0x37, 0x46, 0xe6, 0x10, 0x33, 0x4b, 0x6d, 0xf2, 0xea, 0xce, 0xd1, 0x2e,
  0x5e, 0x9e, 0x99, 0x95, 0xe4, 0x8b, 0xda, 0x1c, 0x03, 0x5d, 0x0a, 0x79,
  0x86, 0x0e, 0x95, 0xe8, 0xdf, 0xd0, 0xe6, 0x5d, 0xd1, 0xa4, 0xb7, 0xf8,
  0xbc, 0xd0, 0xe6, 0x70, 0x96, 0xad, 0xb2, 0x62, 0x96, 0x15, 0xcd, 0x28,
  0xf9, 0x4b, 0xb9, 0xde, 0x36, 0xdf, 0x9e, 0xe7, 0x66, 0x0f, 0x52, 0x19,

  0xca, 0x7c, 0xd9, 0x10, 0xc1, 0xb4, 0xca, 0x57, 0xde, 0x51, 0x94, 0x85,

  0x39, 0xf3, 0xe4, 0xfd, 0x9b, 0x57, 0xc9, 0xd1, 0xb3, 0xcf, 0x9f, 0xb8,
  0x33, 0x37, 0x03, 0x24, 0xd3, 0xb4, 0x30, 0x2b, 0xce, 0xa6, 0xf9, 0xfc,
  0x2e, 0x59, 0xae, 0x17, 0x4d, 0xbe, 0x32, 0xbb, 0x4f, 0x97, 0x8f, 0x2e,
  0xd0, 0x2a, 0xad, 0x9a, 0x9a, 0x88, 0x00, 0x3f, 0xc0, 0xda, 0x6f, 0xaa,
  0xbc, 0xa1, 0x8b, 0x84, 0xdf, 0x99, 0x19, 0x66, 0x4d, 0xad, 0xc3, 0x11,
  0xad, 0x99, 0xef, 0x4c, 0x0c, 0x6d, 0x99, 0xad, 0x4d, 0x6b, 0xf3, 0xd1,
  0xe7, 0x9f, 0x39, 0x0e, 0x72, 0xd5, 0x34, 0xab, 0xe7, 0x7b, 0x7b, 0x75,
  0xde, 0x64, 0xa3, 0xff, 0x34, 0xf7, 0x70, 0xd0, 0xdc, 0x94, 0x83, 0xe6,
  0xaa, 0xca, 0xb2, 0x7f, 0x8e, 0x0c, 0x0d, 0xdb, 0x27, 0xcd, 0x77, 0xef,
  0x64, 0x62, 0x97, 0x59, 0x63, 0xbe, 0xf0, 0xf7, 0x75, 0x56, 0xd0, 0x88,
  0x66, 0x1e, 0xe9, 0x62, 0x75, 0x95, 0x9a, 0xe3, 0xcc, 0x0c, 0x35, 0xd2,
  0xcd, 0x36, 0x04, 0x43, 0xb3, 0xe2, 0xbb, 0xfd, 0xd7, 0x1f, 0xc3, 0x8f,
  0xce, 0xf1, 0x4d, 0xf3, 0xdf, 0x51, 0x76, 0x9b, 0x2e, 0xcd, 0xda, 0xe8,

  0x53, 0x7b, 0x44, 0x62, 0x7f, 0x3d, 0x18, 0x1e, 0xec, 0xef, 0xff, 0x38,
  0x6a, 0x6e, 0x9b, 0x87, 0x3d, 0xbf, 0xbf, 0xef, 0xde, 0xa0, 0x47, 0x77,
  0x68, 0xbd, 0xc9, 0xc2, 0x90, 0x0c, 0x7d, 0xfc, 0x1f, 0x59, 0x55, 0xd6,
  0xbb, 0x0f, 0x1b, 0x29, 0x1d, 0xfe, 0xa3, 0xfd, 0xdd, 0x77, 0x59, 0x0d,
  0x9a, 0x71, 0x6b, 0x4d, 0xd2, 0xca, 0xd0, 0x6d, 0xd9, 0x38, 0xf6, 0x34,
  0x30, 0x97, 0xb2, 0xb1, 0x3b, 0x63, 0xee, 0x9c, 0x79, 0xda, 0x30, 0xb6,
  0x74, 0x41, 0x3c, 0xad, 0x4e, 0x8a, 0xec, 0xd6, 0xde, 0x72, 0x73, 0xfb,
  0xb3, 0x74, 0x7a, 0x95, 0x94, 0x86, 0xf8, 0xab, 0xc8, 0x11, 0xf8, 0x13,
  0x4a, 0xab, 0xe9, 0x55, 0x7e, 0x6d, 0x76, 0xe3, 0xd9, 0xb3, 0x27, 0x43,
  0xf3, 0x9f, 0x67, 0x3f, 0xee, 0x5d, 0x97, 0x0b, 0xb3, 0x39, 0x8f, 0x7e,
  0xdc, 0xa3, 0x23, 0xfe, 0xcf, 0x74, 0x30, 0x19, 0x4c, 0xff, 0x39, 0xba,
  0x6a, 0x96, 0x8b, 0x5e, 0xc2, 0x49, 0x0b, 0xf3, 0xff, 0xcb, 0x72, 0x5d,
  0x34, 0x96, 0x58, 0x0c, 0xcd, 0x35, 0x1e, 0x73, 0x32, 0xd7, 0xd5, 0xdc,
  0x51, 0x22, 0x6d, 0xa2, 0x21, 0xba, 0x75, 0xe6, 0x82, 0xba, 0xeb, 0xd8,
  0x4c, 0xaf, 0x68, 0xfd, 0x86, 0x7a, 0x52, 0xd9, 0x84, 0x26, 0x4f, 0xe9,
  0x66, 0x1a, 0x06, 0x41, 0x0c, 0x0b, 0x63, 0xf1, 0xd7, 0x72, 0xf3, 0x60,

  0x59, 0xcd, 0xb2, 0x6a, 0xd4, 0x9d, 0x86, 0xbd, 0xb2, 0xde, 0x37, 0x13,
  0x95, 0x28, 0xf4, 0x03, 0x4c, 0x6c, 0x99, 0xdf, 0x9a, 0x11, 0xc0, 0x30,
  0x0b, 0x4c, 0x9c, 0x47, 0x4b, 0x68, 0xc6, 0xf8, 0x8c, 0xbe, 0xef, 0xae,
  0xac, 0x99, 0x7a, 0x6b, 0xe9, 0xf8, 0xa8, 0x5b, 0x7c, 0x62, 0x0e, 0x6f,
  0x65, 0xde, 0x5a, 0x13, 0x5f, 0xc5, 0xb5, 0xa6, 0x61, 0x0c, 0x43, 0xb8,
  0x34, 0xe7, 0x62, 0xce, 0x82, 0xa8, 0x98, 0x8e, 0xea, 0x2e, 0x79, 0x67,
  0x08, 0x86, 0x99, 0x91, 0x47, 0xec, 0x8b, 0xac, 0x69, 0xee, 0x3d, 0x26,
  0x47, 0xb1, 0xcf, 0x0f, 0x02, 0xa2, 0xed, 0x7b, 0xde, 0xd0, 0xd9, 0xf3,
  0xc3, 0xf6, 0xc3, 0xdf, 0x19, 0x26, 0xed, 0xae, 0x8b, 0xf9, 0xfa, 0x7f,
  0xfe, 0xd3, 0xa3, 0xba, 0x1b, 0xfa, 0x6d, 0x5e, 0x5c, 0x97, 0x9f, 0xcc,
  0x16, 0x41, 0x8a, 0xa6, 0xed, 0xdd, 0x24, 0x3e, 0xb4, 0x5c, 0x35, 0x56,
  0x3c, 0x11, 0x39, 0x9a, 0x1f, 0x4d, 0xd2, 0xc9, 0xe2, 0x2e, 0xb9, 0x4a,
  0xaf, 0x33, 0x5a, 0xef, 0xca, 0xd0, 0x29, 0xed, 0x80, 0x11, 0x1b, 0x0b,
  0xf0, 0x31, 0x61, 0x0c, 0xb3, 0x72, 0x3d, 0x31, 0xcc, 0xe5, 0xef, 0xeb,
  0xb2, 0xe1, 0x8d, 0x49, 0xaf, 0xcb, 0x7c, 0xd6, 0x92, 0xc5, 0x57, 0x19,
  0x31, 0x34, 0xfa, 0x30, 0x84, 0x94, 0x61, 0xa8, 0x34, 0x53, 0x5c, 0xb4,
  0xbc, 0x21, 0x71, 0x67, 0x58, 0x61, 0xba, 0xa8, 0xcb, 0x24, 0xb9, 0x2c,

  0xe9, 0x96, 0x80, 0x01, 0x83, 0xcc, 0xcd, 0xa1, 0x5c, 0xa5, 0x24, 0xd5,

  0x8c, 0x00, 0xb3, 0xf7, 0xa0, 0xca, 0xc0, 0x8b, 0x71, 0x52, 0xe9, 0x62,
  0xc0, 0xd2, 0x8b, 0xde, 0x91, 0xad, 0x4a, 0xb6, 0xff, 0xcb, 0xf6, 0x20,
  0xd9, 0xfe, 0xf7, 0x6d, 0xd0, 0xc3, 0xf6, 0x7f, 0xdd, 0x76, 0xe7, 0x6c,
  0x94, 0xb1, 0xeb, 0x7c, 0x96, 0x31, 0x49, 0x9c, 0x9c, 0x5f, 0x3f, 0x49,
  0xfe, 0x41, 0xba, 0x83, 0xe1, 0xb5, 0xd9, 0xad, 0x12, 0xa4, 0xae, 0xcd,
  0xbc, 0x9d, 0x18, 0xa6, 0x9b, 0xae, 0x48, 0x89, 0xc8, 0xaa, 0xa9, 0xa1,
  0xde, 0xf4, 0xd2, 0xd0, 0xab, 0x91, 0xc5, 0x3a, 0x1c, 0x8d, 0x4f, 0xaf,
  0xf0, 0xb2, 0x0c, 0x83, 0x4c, 0x8a, 0x74, 0x69, 0x6e, 0xc4, 0x29, 0xcd,
  0x28, 0x2f, 0xc2, 0xc3, 0xfc, 0xeb, 0x3c, 0xfb, 0x7c, 0xff, 0xf9, 0xf3,
  0xa3, 0xdf, 0x1f, 0x3e, 0xce, 0x9a, 0xab, 0xfd, 0x1f, 0xf7, 0xec, 0x23,

  0x27, 0x73, 0x6c, 0xbb, 0x92, 0x9f, 0x4e, 0xc2, 0x48, 0x79, 0x2b, 0x25,
  0xcc, 0xfb, 0xe6, 0xef, 0xd9, 0x3c, 0xbf, 0x1d, 0xa8, 0xbe, 0xc4, 0x77,
  0x2e, 0x35, 0xa4, 0x66, 0xce, 0x8f, 0x58, 0x84, 0x0e, 0x77, 0xb9, 0xce,
  0x6a, 0xb3, 0x93, 0x37, 0x57, 0x69, 0x93, 0xd8, 0x01, 0xf8, 0x64, 0x97,
  0xf9, 0xe5, 0x55, 0x93, 0xdc, 0xa4, 0x24, 0x6c, 0x4e, 0x1a, 0x1e, 0x82,
  0xa4, 0xbc, 0x11, 0x31, 0xf3, 0xd4, 0xc8, 0x0a, 0x3a, 0x43, 0x88, 0xf4,
  0x89, 0xd3, 0x30, 0x1a, 0x43, 0xe6, 0x7c, 0x20, 0x4e, 0x9d, 0x9a, 0xa4,
  0x35, 0x5d, 0xda, 0xc2, 0x30, 0x87, 0xc6, 0xe8, 0x08, 0x6b, 0xfa, 0xd7,

  0x95, 0xd1, 0x02, 0xb0, 0x07, 0x32, 0x51, 0x08, 0xca, 0x37, 0x74, 0x9c,
  0x74, 0x36, 0x56, 0x78, 0x99, 0x43, 0x1a, 0xc8, 0x31, 0xdb, 0x37, 0x6a,
  0x73, 0xe1, 0x0c, 0x67, 0xb2, 0x94, 0xb1, 0x45, 0x4c, 0x76, 0x8b, 0xd7,
  0x89, 0x39, 0xa6, 0x35, 0x29, 0x0a, 0xac, 0x0e, 0x98, 0xc9, 0x7b, 0x8b,
  0x35, 0x9b, 0x96, 0x7e, 0x22, 0x95, 0xa4, 0xa3, 0xf8, 0xe0, 0xb5, 0x59,
  0x69, 0x88, 0xcc, 0xcc, 0xd6, 0x30, 0x63, 0x5a, 0x19, 0xb1, 0x58, 0xec,
  0x0a, 0x88, 0xdc, 0x8c, 0x49, 0x3f, 0xcc, 0x1b, 0x92, 0x31, 0xd0, 0x61,
  0xcd, 0x7c, 0xcd, 0xa6, 0x40, 0x11, 0x35, 0x8c, 0xda, 0x5b, 0x3f, 0xc4,
  0xa3, 0x79, 0x36, 0xb9, 0x36, 0x5a, 0x8a, 0x51, 0x48, 0x33, 0xfb, 0x16,
  0xe4, 0xf9, 0x94, 0x74, 0xa3, 0x85, 0xb9, 0x2f, 0xd3, 0xb2, 0xaa, 0x48,
  0xdf, 0xa7, 0x13, 0x9c, 0x30, 0x13, 0x5d, 0x66, 0x46, 0x8d, 0xf0, 0xb7,

  0x33, 0x27, 0x81, 0x66, 0xf8, 0x8b, 0xd1, 0x4b, 0xc0, 0x41, 0x8c, 0xfe,
  0x00, 0x9e, 0x8f, 0x85, 0x63, 0x76, 0x34, 0xf6, 0x74, 0x9a, 0xad, 0x9a,
  0x3a, 0xb6, 0x26, 0x3d, 0x70, 0x33, 0x9d, 0x2a, 0xa3, 0x9d, 0xf7, 0x95,
  0x2e, 0xec, 0xab, 0x15, 0xfa, 0xd0, 0xbb, 0x54, 0x8f, 0x31, 0x7a, 0x58,


  0x6d, 0x77, 0xad, 0x01, 0x6d, 0x18, 0x36, 0x86, 0x3d, 0x5f, 0xd2, 0x44,
  0xe9, 0xe1, 0x9a, 0x6f, 0x2a, 0x58, 0x33, 0x1d, 0x24, 0x6b, 0xda, 0xfc,
  0x5d, 0x12, 0x5d, 0x66, 0x3f, 0xed, 0xe0, 0xe6, 0xab, 0xf6, 0x4c, 0xe9,
  0xf3, 0xa4, 0xe2, 0x1b, 0x49, 0x3e, 0xab, 0xaf, 0x8c, 0xf2, 0x55, 0xcb,
  0xcd, 0xce, 0x97, 0x86, 0x66, 0xae, 0xe9, 0x7c, 0x57, 0x59, 0x36, 0x1b,
  0x25, 0x67, 0x73, 0xe2, 0xaa, 0x95, 0x99, 0x74, 0x83, 0x5f, 0x93, 0x54,
  0x31, 0xfb, 0x36, 0x83, 0x12, 0x6f, 0xaf, 0x16, 0x4f, 0xc5, 0x93, 0x0e,
  0xe0, 0xe4, 0xa9, 0xf9, 0x89, 0x99, 0xed, 0xa2, 0x2d, 0x82, 0x70, 0x0f,

  0x0d, 0xf7, 0xa6, 0xe9, 0x4d, 0xb2, 0x04, 0x94, 0x38, 0xc9, 0x9a, 0x9b,
  0x2c, 0xb3, 0xc3, 0xd5, 0x99, 0x11, 0x7b, 0x74, 0x68, 0xac, 0xf9, 0x81,
  0x19, 0xd2, 0xd6, 0x9e, 0xbf, 0x3f, 0xfb, 0xea, 0xfd, 0xf1, 0x78, 0x9c,
  0xbc, 0x3d, 0xbe, 0x38, 0x7e, 0xdf, 0xda, 0xe9, 0xa2, 0xac, 0x96, 0x38,
  0xd1, 0x59, 0x5e, 0xaf, 0x16, 0xe9, 0x1d, 0x1d, 0xb5, 0x59, 0xc9, 0x65,
  0x45, 0x37, 0x6b, 0x99, 0x91, 0x54, 0x98, 0xad, 0xc1, 0xc9, 0x8c, 0x38,
  0x32, 0xc7, 0x27, 0x1a, 0x2f, 0x31, 0x13, 0xa8, 0xc9, 0xc5, 0xa5, 0xdb,
  0x69, 0xc3, 0x71, 0x44, 0x92, 0x92, 0x28, 0xb5, 0xe7, 0x41, 0xaa, 0x27,
  0x8c, 0x9b, 0x81, 0xfb, 0x19, 0x6f, 0x13, 0x8b, 0x36, 0x43, 0xb3, 0xf9,
  0x12, 0xcc, 0xce, 0xfc, 0xe9, 0xb4, 0xcd, 0x6c, 0x6e, 0x54, 0x6d, 0x23,
  0x5d, 0xd9, 0x52, 0xe8, 0xce, 0x49, 0x67, 0x6b, 0xf5, 0x63, 0x43, 0x86,
  0xc4, 0x9a, 0x69, 0x40, 0x9e, 0x0a, 0x7f, 0xc1, 0x32, 0x31, 0xa3, 0x93,
  0x10, 0xef, 0x93, 0xc7, 0x56, 0x34, 0x85, 0xcc, 0x9c, 0xec, 0x8c, 0x87,
  0xaf, 0xd7, 0x73, 0x5c, 0xe4, 0x64, 0xc7, 0x68, 0xe6, 0x6f, 0x8d, 0xb5,
  0x64, 0x2c, 0x96, 0x41, 0x72, 0xbe, 0x8b, 0xf7, 0x0e, 0xf6, 0x0f, 0x1f,
  0x31, 0x23, 0x18, 0xe9, 0x70, 0x6f, 0x3c, 0x46, 0x7c, 0xf0, 0x89, 0x8e,
  0x97, 0x1f, 0xa2, 0xc1, 0x47, 0xc9, 0xc1, 0x5b, 0xfe, 0xc9, 0xa3, 0xcf,
  0x1f, 0x3f, 0x7d, 0x22, 0x3f, 0x6c, 0x13, 0xb8, 0x9d, 0x3f, 0xa8, 0x03,
  0x96, 0x1f, 0x99, 0x82, 0x66, 0x26, 0x66, 0x75, 0xcb, 0xbc, 0x30, 0xd7,
  0xc4, 0x5c, 0x2b, 0xe1, 0x55, 0x44, 0xcf, 0x66, 0xf2, 0x73, 0xe6, 0x6c,
  0x72, 0xae, 0x6d, 0x93, 0xd2, 0xbc, 0x6c, 0x48, 0xd6, 0xf0, 0x72, 0x7b,
  0x48, 0xac, 0x26, 0x34, 0x34, 0x91, 0x74, 0x42, 0x0c, 0x96, 0xec, 0x2a,
  0xa3, 0x00, 0x67, 0xd1, 0xaf, 0x59, 0xa9, 0x68, 0xde, 0x30, 0x73, 0x33,
  0x32, 0x91, 0xc4, 0x5c, 0xb8, 0xef, 0x86, 0x15, 0x80, 0x43, 0xde, 0xe4,
  0x35, 0x58, 0xc3, 0x4d, 0xb9, 0x5e, 0x18, 0x2b, 0x86, 0x1e, 0x58, 0xaf,
  0xf0, 0x82, 0xf9, 0xd4, 0xca, 0xf1, 0x00, 0xa3, 0xb1, 0x10, 0xed, 0x74,
  0x47, 0x31, 0x53, 0x33, 0xff, 0x5c, 0x19, 0x52, 0xe2, 0xe9, 0x8c, 0xba,
  0x12, 0x02, 0xbc, 0x2f, 0xa0, 0x44, 0xba, 0xf3, 0x60, 0xda, 0xe7, 0x67,
  0xe3, 0x0b, 0xd2, 0x00, 0xce, 0x3f, 0x5c, 0x98, 0x81, 0x8c, 0x0a, 0x50,
  0x37, 0x86, 0x28, 0xe9, 0xc5, 0x22, 0x83, 0x09, 0xa9, 0xc3, 0x19, 0xda,
  0xcb, 0xc1, 0xa8, 0xa0, 0xd6, 0xe8, 0x27, 0x79, 0x8e, 0x6c, 0x63, 0xd3,
  0x15, 0x54, 0x0b, 0x9b, 0x65, 0xb8, 0x7d, 0x27, 0xd9, 0xf9, 0xd3, 0xae,
  0xa1, 0xd9, 0x61, 0x69, 0x77, 0x67, 0x38, 0x94, 0x57, 0xcd, 0xb7, 0xeb,
  0x7c, 0x99, 0x2f, 0xd2, 0xca, 0x9b, 0x3a, 0x73, 0x54, 0xba, 0x9f, 0x96,
  0xaf, 0x4c, 0x0d, 0xd5, 0x60, 0xda, 0xce, 0x94, 0xa4, 0x3d, 0x04, 0x57,
  0x72, 0x47, 0x35, 0x23, 0x85, 0x00, 0x1a, 0xf3, 0x2a, 0xb7, 0x5b, 0x47,
  0x67, 0x46, 0xec, 0xaa, 0xb5, 0x51, 0xdd, 0x73, 0x0b, 0x36, 0x8e, 0x24,
  0x12, 0x3c, 0x15, 0x76, 0xeb, 0x92, 0xad, 0x49, 0x5a, 0x6d, 0x25, 0x96,

  0x17, 0xf3, 0xdd, 0xa4, 0x1b, 0x52, 0x65, 0x97, 0x6b, 0xb3, 0x82, 0x84,

  0x77, 0x97, 0x56, 0xfa, 0x3b, 0x6f, 0xa5, 0x3a, 0xc0, 0x70, 0x42, 0x8f,
  0xe4, 0x35, 0x9b, 0x99, 0x73, 0x63, 0xb7, 0xd0, 0xa5, 0x51, 0xfd, 0x15,
  0x1a, 0x8d, 0x50, 0x4c, 0x84, 0x60, 0x3c, 0xbd, 0xd6, 0x5c, 0x95, 0x26,
  0x33, 0x8c, 0x06, 0xec, 0x9f, 0x9e, 0x1c, 0x9a, 0x23, 0x1b, 0x0e, 0x6b,
  0xb3, 0xff, 0xa4, 0x7b, 0xaf, 0xc4, 0xa6, 0x3f, 0x83, 0xc3, 0xc4, 0xfa,
  0x56, 0xce, 0x44, 0x07, 0x86, 0xd8, 0xe4, 0x77, 0xc1, 0x42, 0x8d, 0xa2,
  0x7a, 0x63, 0x3e, 0x9c, 0x9a, 0x23, 0x33, 0x17, 0xee, 0x2d, 0x6d, 0x14,
  0xfb, 0x46, 0x12, 0xab, 0x36, 0x83, 0x32, 0x72, 0xba, 0xf7, 0xa9, 0xd3,
  0x65, 0x66, 0xb3, 0x9c, 0x7e, 0x6b, 0xee, 0x97, 0x91, 0x70, 0xeb, 0x0c,
  0xb6, 0x87, 0x6c, 0xea, 0xd2, 0x6d, 0x26, 0xcc, 0xd8, 0xfa, 0xaa, 0x24,

  0x33, 0x71, 0x8b, 0x79, 0xf1, 0x90, 0xbe, 0xb5, 0x05, 0x79, 0xbe, 0x4c,
  0xf4, 0x5b, 0xf2, 0x29, 0xb3, 0x8e, 0x99, 0xaf, 0x9b, 0x0d, 0x8c, 0xa0,


  0xb9, 0xf3, 0x8c, 0x04, 0xf0, 0x6a, 0x9e, 0x7b, 0x65, 0x15, 0x1e, 0x23,
  0x52, 0x57, 0xa4, 0x4c, 0x09, 0x0f, 0x87, 0x30, 0xc4, 0x95, 0xad, 0x79,
  0x6a, 0x03, 0xb3, 0xb7, 0xf4, 0xe4, 0xe5, 0x95, 0x3e, 0xea, 0x09, 0xd6,
  0xd4, 0x2c, 0x8e, 0x84, 0x03, 0xd9, 0xd3, 0x33, 0xe5, 0xfb, 0x65, 0xc5,
  0xcc, 0x6c, 0x51, 0x1a, 0x5a, 0xde, 0x62, 0x95, 0x55, 0xa6, 0x4d, 0xb3,
  0xa6, 0x59, 0xd2, 0x8e, 0xb3, 0x9f, 0xa9, 0xb4, 0x67, 0x63, 0x27, 0x2d,
  0xfb, 0x55, 0xdf, 0x3b, 0x35, 0xb7, 0x51, 0x63, 0xec, 0x91, 0x11, 0x9d,
  0x35, 0xd1, 0xb1, 0xee, 0x3c, 0xc8, 0xdb, 0x88, 0xba, 0xed, 0x86, 0xef,
  0x23, 0x6c, 0xac, 0xce, 0xce, 0xd7, 0x20, 0x1f, 0x11, 0x64, 0x76, 0x65,
  0x66, 0x45, 0xb3, 0x3c, 0x05, 0x9d, 0xf0, 0xd1, 0x40, 0x19, 0x71, 0x16,

  0x61, 0x44, 0x0f, 0xbe, 0xeb, 0x1a, 0x74, 0x8b, 0x85, 0x2f, 0x92, 0x74,
  0x4e, 0xc3, 0x33, 0xb3, 0xf6, 0x53, 0xac, 0x63, 0x78, 0x9d, 0xd0, 0xf5,
  0x33, 0x66, 0x03, 0xdd, 0xc5, 0xe1, 0xd9, 0xe9, 0xb5, 0x77, 0x8d, 0xc8,
  0x72, 0x2f, 0x48, 0x4f, 0x19, 0xc0, 0x3b, 0x32, 0x29, 0x4b, 0x63, 0x26,
  0xbb, 0xa5, 0x91, 0x3c, 0xc8, 0x0a, 0xa2, 0x76, 0x39, 0x51, 0xc3, 0x12,
  0x56, 0x96, 0xdf, 0xde, 0x19, 0x73, 0x29, 0xbd, 0x4c, 0x73, 0x4b, 0x6f,
  0x72, 0x33, 0x66, 0x89, 0x3e, 0x5c, 0x94, 0xf2, 0x3c, 0x1d, 0x15, 0xa9,
  0x40, 0xc2, 0xb7, 0xd6, 0x35, 0x5f, 0x1f, 0xb3, 0x2a, 0xc3, 0x79, 0xc0,
  0x3b, 0x64, 0x5c, 0x52, 0x1b, 0x75, 0xb8, 0x09, 0x14, 0x65, 0xd2, 0x39,
  0xc1, 0x7c, 0xa1, 0x41, 0x9a, 0x11, 0xb7, 0x46, 0xc9, 0xd7, 0xe5, 0x4d,
  0x06, 0x5f, 0x21, 0xf4, 0xfb, 0x9c, 0xbc, 0x5d, 0x46, 0x15, 0xbc, 0xc9,
  0x92, 0xa5, 0x51, 0x3d, 0xcd, 0x6e, 0x42, 0xfb, 0xc0, 0xcf, 0x3c, 0xf3,
  0xd0, 0x50, 0xf8, 0x0d, 0xef, 0x92, 0x5d, 0x85, 0x3d, 0xca, 0x39, 0x5f,
  0x89, 0x64, 0x07, 0xea, 0xcd, 0x94, 0x76, 0x6b, 0xd5, 0xb8, 0x55, 0xd8,
  0x0d, 0xb9, 0x49, 0x6b, 0xef, 0x72, 0x65, 0x30, 0x4d, 0x9f, 0x8e, 0x0e,
  0x9e, 0x8d, 0xf6, 0x47, 0xc6, 0x10, 0xc9, 0xae, 0xf3, 0x72, 0x5d, 0x9b,
  0x4f, 0xd3, 0x34, 0xdc, 0x3b, 0x19, 0xdd, 0xca, 0xa6, 0xbc, 0xbc, 0x5c,
  0xb0, 0xce, 0xb3, 0x57, 0xce, 0xe7, 0xac, 0xfb, 0x18, 0x4d, 0xcf, 0xea,
  0xcf, 0x6c, 0x01, 0xd1, 0xce, 0xc8, 0x75, 0x63, 0x96, 0x1a, 0x9a, 0xc8,
  0x23, 0xe7, 0xbc, 0x18, 0x0e, 0xd3, 0x49, 0xdd, 0x90, 0x31, 0x35, 0x5c,
  0x17, 0xf9, 0xed, 0xb0, 0x2e, 0xa7, 0x9f, 0xcc, 0xa1, 0xbc, 0x58, 0xa5,
  0xcd, 0xd5, 0x9f, 0x3a, 0x2e, 0xe1, 0x1d, 0x92, 0x25, 0xbb, 0x49, 0xf2,
  0x8a, 0xd5, 0x4a, 0xda, 0x89, 0x8a, 0xef, 0x9b, 0x39, 0x4d, 0x19, 0x25,
  0xf9, 0x60, 0x46, 0x31, 0xb4, 0xbc, 0x34, 0x87, 0x9a, 0xf0, 0x60, 0x03,
  0x65, 0xa5, 0x9d, 0xe1, 0xe0, 0x70, 0x24, 0x31, 0x02, 0xbf, 0x9d, 0xb9,
  0x3a, 0x65, 0xf5, 0xc9, 0x28, 0xda, 0xef, 0x8c, 0xc9, 0xf8, 0x9c, 0xfe,
  0x6d, 0x58, 0x58, 0x83, 0x2d, 0x17, 0xc9, 0x6a, 0x66, 0xc4, 0xcc, 0x98,
  0x2c, 0xf2, 0x74, 0x32, 0xec, 0x0c, 0x27, 0xdf, 0x97, 0x8f, 0x26, 0x6a,
  0x6b, 0x28, 0x29, 0x25, 0xdb, 0x5f, 0x1a, 0xfb, 0xef, 0x8a, 0x8f, 0x1d,
  0x03, 0xf2, 0x1a, 0x0d, 0x85, 0x5e, 0x1a, 0x0b, 0xa2, 0x68, 0xba, 0xc3,

  0x5d, 0x41, 0x54, 0x93, 0x94, 0x61, 0x63, 0x17, 0x44, 0x22, 0x1e, 0x20,
  0x6b, 0x7f, 0x8e, 0x3e, 0xeb, 0xbc, 0xf6, 0xd2, 0x9d, 0xe9, 0xe3, 0x23,
  0x73, 0xa6, 0xfe, 0x46, 0x2f, 0x9a, 0x61, 0x7d, 0x3d, 0x4d, 0x5e, 0x40,
  0xfb, 0x26, 0x32, 0x8d, 0x6e, 0xf0, 0x78, 0x37, 0xf9, 0xee, 0xe5, 0xfb,
  0x77, 0x27, 0xef, 0xbe, 0x7a, 0xce, 0x1f, 0x15, 0x4a, 0x33, 0x7f, 0xcb,
  0x6e, 0x57, 0xe4, 0x07, 0xa3, 0xd9, 0x1a, 0x51, 0x96, 0x24, 0xaf, 0x4b,
  0xd8, 0x23, 0x60, 0x98, 0x24, 0xb0, 0x3a, 0xc3, 0x19, 0xd1, 0x32, 0x5b,
  0x77, 0x7c, 0xbf, 0x96, 0x61, 0xbb, 0x81, 0xf9, 0x7a, 0xf2, 0x26, 0xeb,
  0x1c, 0x0d, 0x7f, 0x64, 0xf7, 0x31, 0xf4, 0xa5, 0x11, 0x49, 0x4b, 0x98,
  0xf9, 0x3a, 0xf3, 0xee, 0x97, 0x4a, 0x63, 0xec, 0xb2, 0x9d, 0x6f, 0xc6,

  0xbb, 0x35, 0xd7, 0x86, 0x76, 0x49, 0x07, 0x9b, 0x1a, 0x76, 0x94, 0x89,
  0xe2, 0x00, 0x56, 0x07, 0xb3, 0x41, 0x58, 0xd9, 0x28, 0x79, 0x39, 0xef,
  0x1e, 0x25, 0xe9, 0x2e, 0xa4, 0xd5, 0xab, 0x14, 0x9c, 0x39, 0x45, 0x98,
  0xbd, 0xbc, 0x3c, 0xa2, 0x0e, 0x53, 0x9b, 0xf3, 0x99, 0xa9, 0xa4, 0xa7,
  0xcf, 0x74, 0x86, 0x83, 0xe9, 0x09, 0x36, 0x43, 0x4a, 0x61, 0x4e, 0x07,
  0x4a, 0xa6, 0x9f, 0x61, 0xd4, 0xcb, 0x72, 0x06, 0x3b, 0x22, 0xd8, 0x9f,
  0xb1, 0x75, 0xf8, 0x6c, 0x6d, 0xb9, 0x55, 0x27, 0x3b, 0xe4, 0xfa, 0x33,
  0x54, 0x50, 0x5c, 0x36, 0x57, 0xbb, 0xce, 0xad, 0x41, 0x6a, 0x8a, 0x59,
  0xf0, 0x9e, 0x99, 0x08, 0xd6, 0x5d, 0x74, 0x49, 0x1d, 0x6e, 0x67, 0x68,
  0x9e, 0x7f, 0x5b, 0xd7, 0x0d, 0xac, 0x21, 0x11, 0xff, 0xbc, 0x12, 0x33,
  0xb3, 0x65, 0xb6, 0x2c, 0xab, 0xbb, 0x60, 0x22, 0x27, 0x50, 0x3e, 0xc8,
  0xf0, 0x94, 0xd3, 0x22, 0x3a, 0x80, 0x7c, 0x54, 0x97, 0x20, 0x19, 0x01,
  0xe4, 0x53, 0xb7, 0x76, 0x20, 0x94, 0x26, 0xc3, 0x80, 0x8c, 0xfd, 0xed,
  0x1c, 0xb6, 0x6a, 0x40, 0xc1, 0xd1, 0xc3, 0xb6, 0xbd, 0x58, 0x53, 0x13,
  0x71, 0xe1, 0xd0, 0xff, 0x2f, 0x52, 0xe2, 0x3a, 0x45, 0xd6, 0x3a, 0x21,
  0x48, 0x0f, 0x5e, 0xda, 0x26, 0x72, 0x7f, 0xf2, 0x68, 0x74, 0xd0, 0x22,

  0xf7, 0xe2, 0x8e, 0x02, 0x05, 0x71, 0x1e, 0x72, 0x61, 0x14, 0xc7, 0x9a,
  0xe7, 0x6c, 0x76, 0x71, 0x9e, 0x5f, 0xae, 0xab, 0x8c, 0x35, 0x38, 0xc4,
  0x16, 0x34, 0xa4, 0x40, 0x4a, 0xd1, 0x55, 0x09, 0x4f, 0xbc, 0x11, 0xa6,
  0xd9, 0x62, 0x3e, 0xe8, 0x0c, 0x07, 0xf3, 0x05, 0xd4, 0x4f, 0xd3, 0x07,
  0xd3, 0x34, 0x66, 0x0a, 0x06, 0x2b, 0x32, 0x51, 0x62, 0x97, 0x86, 0xa1,
  0x24, 0xe4, 0x8a, 0x4e, 0xa6, 0x8b, 0x34, 0x5f, 0x82, 0x4c, 0xc5, 0xd5,
  0x3a, 0x8a, 0x5d, 0x0b, 0x32, 0x30, 0xe8, 0xed, 0x09, 0x99, 0xbe, 0x55,
  0x4d, 0x92, 0x19, 0xa7, 0xaa, 0x9a, 0x33, 0x1b, 0x96, 0x57, 0xd9, 0xf4,
  0x93, 0x32, 0x2f, 0x55, 0x39, 0xbb, 0x74, 0x4c, 0x31, 0x06, 0xd8, 0xd7,
  0xe6, 0xa9, 0x75, 0x4d, 0xd7, 0xa4, 0xae, 0x73, 0x72, 0x9f, 0x91, 0x39,
  0xb8, 0x9e, 0xc2, 0x4a, 0xc4, 0x85, 0x31, 0xd4, 0xad, 0x1c, 0x30, 0x31,

  0x2c, 0xb5, 0x98, 0x0d, 0x9b, 0x2a, 0x5f, 0xf5, 0xcd, 0x8e, 0x4f, 0xa5,
  0xad, 0xa0, 0xd6, 0x62, 0xb1, 0xc3, 0x18, 0x66, 0xf3, 0x78, 0x9a, 0x74,

  0x76, 0xb3, 0x4b, 0x94, 0xd8, 0xdb, 0x01, 0xf9, 0x83, 0x72, 0xa3, 0x2f,
  0xb0, 0xb1, 0x04, 0x77, 0xa7, 0x31, 0x8d, 0x44, 0x70, 0x19, 0x2b, 0x2e,
  0x9f, 0x42, 0x09, 0xca, 0x2f, 0x33, 0x8a, 0xe5, 0x18, 0x59, 0xd6, 0x2c,
  0x8c, 0x6a, 0x14, 0xd2, 0xb8, 0xf9, 0x4d, 0x76, 0x59, 0x36, 0xa4, 0x8d,
  0x04, 0x64, 0xf2, 0x01, 0x7c, 0xde, 0xd2, 0x84, 0xaa, 0xfd, 0xbe, 0x4e,
  0x96, 0xb3, 0x3e, 0x6e, 0x3e, 0xcd, 0x6a, 0xbf, 0x78, 0x1c, 0xea, 0xc6,
  0xdc, 0xac, 0xee, 0xa9, 0x9b, 0xd1, 0xa6, 0x19, 0x6c, 0x2f, 0x28, 0x8e,
  0xaa, 0xb7, 0xaa, 0xc2, 0x4f, 0x2c, 0x81, 0x74, 0xe4, 0xe6, 0x26, 0x9f,
  0x66, 0xea, 0x8e, 0x13, 0x1f, 0xf5, 0x22, 0x0f, 0x59, 0xfd, 0x92, 0xee,

  0xa4, 0x79, 0x89, 0x75, 0x72, 0xf2, 0x9e, 0xdc, 0xe4, 0xa4, 0xb3, 0x0b,



  0xd3, 0x83, 0x4a, 0x26, 0xe2, 0x20, 0xad, 0x72, 0xb8, 0x8a, 0xcc, 0x70,
  0x32, 0x4f, 0xcf, 0xa2, 0xf7, 0xef, 0x18, 0xcf, 0x1b, 0xef, 0x8b, 0x19,
  0xe3, 0xcc, 0x17, 0x5c, 0xae, 0x79, 0x9a, 0x2f, 0x22, 0xfb, 0x04, 0x46,
  0x76, 0x99, 0xc1, 0xab, 0xc6, 0x67, 0xb0, 0xa6, 0x4d, 0xa7, 0xb8, 0x5b,

  0xc8, 0xa4, 0xb2, 0x8c, 0xed, 0x09, 0x18, 0x1f, 0xb7, 0x77, 0x76, 0x7b,
  0xa1, 0xb4, 0xf1, 0xd9, 0xc9, 0xdf, 0xf9, 0xf8, 0xbc, 0xeb, 0x99, 0xd2,
  0xa8, 0xe9, 0x8a, 0x02, 0x4c, 0xdd, 0x1b, 0x4a, 0xa6, 0x17, 0xc5, 0x28,
  0x77, 0xd5, 0x83, 0x9c, 0x89, 0xff, 0xdc, 0xc6, 0xf6, 0xc0, 0x90, 0x88,
  0xa7, 0xc9, 0x15, 0xe6, 0x71, 0x84, 0x03, 0x77, 0x79, 0xb9, 0x91, 0xaf,
  0x46, 0x1c, 0x83, 0x87, 0xb6, 0x28, 0xb6, 0x34, 0xec, 0xcb, 0x46, 0x98,
  0xc8, 0xe3, 0x2b, 0xbc, 0x0e, 0x86, 0x16, 0xee, 0x6c, 0x8c, 0x97, 0x93,
  0xe9, 0x47, 0x7a, 0x32, 0x4b, 0x99, 0x41, 0xc2, 0x7a, 0x1d, 0x33, 0xab,
  0x29, 0xfb, 0x80, 0x45, 0x87, 0x60, 0x51, 0x83, 0xa9, 0xce, 0x17, 0xe9,
  0x25, 0xdc, 0x6b, 0x97, 0xdd, 0x1b, 0x5a, 0x94, 0x12, 0xe8, 0xab, 0x4b,
  0xc3, 0xde, 0x69, 0xd5, 0xe2, 0xda, 0xaa, 0x93, 0x1d, 0x43, 0x64, 0x8b,
  0x35, 0xc4, 0xfd, 0x99, 0x59, 0xde, 0x78, 0xfc, 0xf5, 0xae, 0xcf, 0xde,
  0xb0, 0xbb, 0x0f, 0x61, 0x6e, 0xc4, 0x9d, 0x60, 0x84, 0xff, 0x99, 0xcf,

  0xa3, 0xcd, 0xe0, 0xac, 0x75, 0xe7, 0x6b, 0x72, 0x4a, 0x97, 0xb4, 0x0a,
  0x72, 0x85, 0x8e, 0xec, 0xd5, 0xa7, 0x27, 0xd5, 0x23, 0xcb, 0x84, 0xdd,

  0x52, 0x10, 0xd6, 0xf5, 0x1a, 0xce, 0x29, 0xc8, 0xe3, 0xee, 0x70, 0x86,
  0xd9, 0x1b, 0x56, 0xb4, 0x2e, 0xe8, 0x4f, 0xab, 0x43, 0xe7, 0xb0, 0xe6,
  0xe8, 0x2c, 0x2a, 0x72, 0x81, 0x93, 0x1d, 0x6c, 0x75, 0x50, 0xc3, 0x53,
  0x74, 0x6c, 0xda, 0xcb, 0xee, 0x25, 0x34, 0x1a, 0x1a, 0xd8, 0x8d, 0x11,
  0xa1, 0x46, 0x30, 0xd3, 0x85, 0xeb, 0xe1, 0xde, 0x3b, 0xf5, 0xda, 0xf0,
  0x17, 0x32, 0x1d, 0x84, 0x79, 0x10, 0x3d, 0x76, 0x67, 0xc7, 0xec, 0xc5,
  0x48, 0x1a, 0x8f, 0x8f, 0xec, 0xfe, 0xd2, 0x17, 0x04, 0x87, 0xe6, 0x9f,
  0xa2, 0x11, 0xbf, 0x99, 0x31, 0xc8, 0xa0, 0x92, 0x05, 0xda, 0xd8, 0xc5,
  0xe9, 0x38, 0x76, 0x98, 0xed, 0xf8, 0x14, 0xbd, 0x4f, 0xcc, 0x96, 0xdc,
  0x88, 0xec, 0x56, 0x2d, 0xc9, 0x28, 0xf0, 0x62, 0x54, 0xbe, 0xbf, 0x6f,
  0x95, 0x51, 0x30, 0x8b, 0xed, 0x65, 0x0e, 0x7e, 0x13, 0x03, 0x23, 0x61,
  0x4d, 0xda, 0x89, 0x75, 0xa1, 0xbe, 0x7a, 0xe9, 0x8f, 0x0b, 0x9f, 0x69,
  0xf7, 0x22, 0x78, 0xbf, 0xdf, 0xa9, 0x77, 0x2d, 0x0f, 0x33, 0xa3, 0x9c,
  0x1f, 0xbf, 0x85, 0xfd, 0x9a, 0x1a, 0xba, 0x79, 0xa7, 0xee, 0x4a, 0x8d,

  0x6d, 0x4f, 0xd6, 0xf9, 0xa2, 0x15, 0x13, 0x70, 0x26, 0x37, 0x02, 0xcb,

  0x4c, 0x5a, 0x98, 0x1a, 0x47, 0xb7, 0x72, 0xb8, 0x87, 0xbb, 0x84, 0xd6,
  0xdc, 0xad, 0xc4, 0xb3, 0xbd, 0xae, 0x5b, 0x0e, 0x24, 0x95, 0xcb, 0x8b,
  0x06, 0x5a, 0x36, 0xd9, 0xb5, 0xde, 0x98, 0xc1, 0x09, 0x61, 0x5a, 0x24,
  0x06, 0x2e, 0x8b, 0xfc, 0x1f, 0xa2, 0x83, 0x66, 0xc5, 0x75, 0x5e, 0x95,
  0x05, 0x69, 0xb9, 0xc6, 0xf4, 0xad, 0x72, 0xb0, 0x65, 0x52, 0xbf, 0x0c,
  0xe3, 0xd8, 0x7e, 0xf5, 0xe1, 0xfd, 0xe9, 0xc7, 0x57, 0x2f, 0x3f, 0xfe,
  0xf9, 0xc3, 0xbb, 0xd7, 0xa7, 0xc7, 0xdb, 0x9d, 0xe1, 0xc8, 0xe7, 0x97,
  0x8b, 0xa3, 0xbe, 0x26, 0xcb, 0x03, 0x97, 0xc4, 0x4c, 0x91, 0x47, 0xbe,
  0xcc, 0xaf, 0x0d, 0x43, 0x83, 0x21, 0x01, 0x1f, 0x3d, 0xfe, 0x06, 0xaf,
  0x96, 0x6c, 0x78, 0x67, 0xb8, 0xc9, 0x9a, 0xf4, 0xb4, 0x51, 0x4b, 0x5b,
  0xd6, 0xab, 0x22, 0x56, 0xbb, 0x4e, 0x30, 0xa2, 0x61, 0x93, 0x16, 0x55,
  0xcc, 0xc8, 0x7c, 0xf1, 0x8c, 0x44, 0xcf, 0x5d, 0xbf, 0x6e, 0x8c, 0x95,
  0xa4, 0x01, 0x02, 0xa3, 0xb5, 0x95, 0x9f, 0x34, 0xcb, 0xc0, 0x98, 0x58,
  0x2f, 0x23, 0xc7, 0x5d, 0x3b, 0x4d, 0x74, 0x96, 0x6c, 0xd3, 0x48, 0x86,
  0x7e, 0x87, 0x32, 0xc9, 0x69, 0xd5, 0x18, 0xfb, 0x26, 0xcb, 0x71, 0x31,
  0x34, 0x8a, 0x4a, 0x3a, 0x2b, 0x9c, 0x73, 0x81, 0x86, 0x6d, 0x74, 0x4d,
  0xda, 0x03, 0x68, 0xf7, 0xd9, 0x6d, 0x86, 0x9b, 0x27, 0x6f, 0xbd, 0x5a,
  0x57, 0xb8, 0xcd, 0xdf, 0x19, 0x6d, 0x84, 0xb8, 0xdf, 0x6b, 0x78, 0xf7,
  0xcc, 0x0b, 0xfa, 0x90, 0x11, 0x33, 0x5d, 0x91, 0x57, 0x2e, 0x28, 0xae,
  0x9a, 0xc2, 0x93, 0x02, 0xbf, 0xd7, 0xf9, 0xcb, 0x8b, 0xaf, 0xa3, 0xca,
  0xac, 0x4b, 0xe9, 0x11, 0x52, 0x84, 0x62, 0x5e, 0x37, 0x72, 0x41, 0xde,
  0x8d, 0xc7, 0x09, 0x12, 0x46, 0x16, 0xf9, 0xa4, 0x4a, 0xe9, 0x9b, 0xf4,
  0x63, 0xfa, 0xa9, 0x21, 0xeb, 0xce, 0x70, 0xe7, 0xdf, 0xbc, 0x1a, 0xff,
  0xee, 0xe0, 0x80, 0xb4, 0xf8, 0xb5, 0xd9, 0x97, 0x1d, 0xf3, 0x4a, 0x51,

  0x9b, 0x9b, 0xb9, 0x1c, 0xd5, 0xe5, 0x2e, 0xc4, 0x76, 0x2d, 0xea, 0x40,

  0x7a, 0x6d, 0xa4, 0x2d, 0xe8, 0x48, 0x89, 0xda, 0x1c, 0x67, 0xb0, 0x27,
  0x60, 0x74, 0x92, 0x4d, 0x63, 0xf8, 0x85, 0x91, 0xd7, 0x8b, 0x50, 0x21,
  0xdf, 0xc9, 0xcf, 0xc6, 0x92, 0x8b, 0x92, 0x4e, 0xcd, 0x5f, 0xc9, 0x51,
  0xb0, 0x4b, 0x2b, 0x6b, 0xdf, 0x30, 0x5d, 0xd5, 0x98, 0xb5, 0xd1, 0x0b,
  0x32, 0x5f, 0x90, 0x42, 0x13, 0x72, 0x85, 0xa2, 0x7b, 0xb9, 0x5c, 0x9a,
  0x12, 0xc8, 0x61, 0x92, 0x4e, 0x3f, 0xdd, 0xa4, 0xd5, 0x8c, 0xed, 0x21,
  0x43, 0x31, 0x93, 0x7c, 0x91, 0x37, 0x77, 0x6c, 0xd7, 0x76, 0x6d, 0x6a,
  0x8e, 0x8f, 0xd2, 0x06, 0x9a, 0x7b, 0x74, 0x69, 0x4c, 0x7e, 0xd2, 0x3e,
  0x49, 0xc5, 0xcf, 0x1b, 0xdf, 0xa4, 0x85, 0x8a, 0xd4, 0x58, 0x15, 0xc7,
  0x7e, 0x3b, 0x10, 0x8f, 0x0d, 0xdf, 0x23, 0x4c, 0xd3, 0xd1, 0xae, 0xb2,
  0x41, 0x9f, 0x49, 0x29, 0xf9, 0x24, 0xf5, 0x9d, 0x91, 0xf2, 0xcb, 0x24,
  0xa2, 0x22, 0x22, 0x7b, 0x28, 0xf9, 0x26, 0xbb, 0x33, 0xf6, 0x73, 0x5e,
  0x38, 0x4e, 0xc9, 0xf6, 0x7d, 0x46, 0xd6, 0x1d, 0xeb, 0xa2, 0xb9, 0x3a,
  0xd3, 0x33, 0x89, 0x87, 0xb0, 0x24, 0x09, 0x1d, 0x08, 0xfc, 0xbe, 0xea,

  0xe1, 0x34, 0xc4, 0x76, 0xdd, 0x62, 0xc9, 0xf8, 0x52, 0x78, 0x88, 0x63,
  0xf3, 0xf3, 0xa2, 0xc8, 0x16, 0x72, 0x7c, 0x17, 0x9b, 0x0e, 0xc0, 0x3e,
  0x6b, 0xa6, 0xfc, 0x1d, 0xdf, 0xe8, 0xce, 0x70, 0x4f, 0x39, 0xb8, 0x9f,
  0x36, 0x2a, 0x93, 0x34, 0x6b, 0xc8, 0x58, 0x45, 0xfb, 0xf6, 0x57, 0xa3,
  0xde, 0xcf, 0x04, 0xb7, 0xa9, 0x72, 0x87, 0xde, 0x3e, 0x73, 0x76, 0x8a,
  0xe2, 0x90, 0xe9, 0x8c, 0xe5, 0x88, 0xff, 0x68, 0x35, 0x2b, 0x04, 0x30,
  0x3a, 0xc3, 0xf9, 0x5a, 0xb6, 0xca, 0x30, 0x59, 0xc7, 0xb6, 0xd1, 0x53,
  0xcb, 0x0a, 0xfe, 0xa2, 0xaa, 0x34, 0x67, 0xdd, 0x3a, 0xcf, 0x1d, 0x56,
  0x36, 0xba, 0xd7, 0x44, 0xb8, 0xb9, 0xb7, 0x31, 0xbb, 0xb1, 0x8b, 0x1e,
  0x68, 0x26, 0xa1, 0xc9, 0xda, 0x6b, 0x71, 0xb6, 0x25, 0x34, 0xb8, 0xf4,

  0x0b, 0xc3, 0xc6, 0xfe, 0x75, 0x01, 0xcd, 0xcc, 0x10, 0xcc, 0x2f, 0x94,


  0x59, 0x42, 0x8b, 0x2d, 0x41, 0xfd, 0x56, 0x25, 0x32, 0x4d, 0xc2, 0xba,
  0x60, 0x57, 0x9c, 0x30, 0xc0, 0x8a, 0x23, 0xfb, 0x92, 0x43, 0x33, 0x80,
  0xdc, 0x81, 0xe2, 0x72, 0x7c, 0xbe, 0x95, 0xec, 0x64, 0xa3, 0x4b, 0x33,
  0xde, 0x16, 0x8d, 0x73, 0xf0, 0x9c, 0xfe, 0x7b, 0x88, 0xff, 0x1e, 0x6d,
  0x69, 0x6a, 0x9f, 0xbf, 0xf5, 0x24, 0xcd, 0xbb, 0xb2, 0x88, 0xe3, 0x71,
  0x4e, 0xb8, 0x0f, 0xd8, 0xc7, 0xdc, 0xc7, 0x78, 0x58, 0x67, 0x3d, 0xe5,
  0x5d, 0x0e, 0xd5, 0x2d, 0xdd, 0x86, 0x25, 0xfb, 0x23, 0xae, 0x33, 0x76,
  0x88, 0x98, 0x95, 0x4d, 0x8d, 0x7a, 0x08, 0x37, 0xa2, 0xde, 0xaa, 0xe9,
  0xc7, 0x2a, 0xbb, 0x4a, 0xeb, 0xab, 0x64, 0xdd, 0x30, 0x11, 0x1a, 0xba,
  0xed, 0x0e, 0xb7, 0x5a, 0xe4, 0xce, 0xd3, 0x26, 0x9f, 0x1e, 0xa9, 0xdd,
  0xe7, 0x4e, 0x91, 0x23, 0x20, 0x8b, 0xf2, 0x46, 0x9f, 0x19, 0x4a, 0xae,
  0x5d, 0x4c, 0x2d, 0x30, 0xa7, 0x09, 0xbf, 0x09, 0x3d, 0xe6, 0x47, 0xb2,
  0x97, 0xa4, 0x4d, 0x52, 0x22, 0xa0, 0x61, 0x71, 0x73, 0xb3, 0x63, 0x64,
  0xd1, 0x2d, 0x70, 0x6e, 0x64, 0xbb, 0x62, 0xde, 0x81, 0x69, 0x2a, 0x7a,
  0x5e, 0x3e, 0x17, 0xef, 0xad, 0xfc, 0x1b, 0xf2, 0x54, 0xb4, 0xaf, 0x9a,
  0xa3, 0xdd, 0x5d, 0xd5, 0xeb, 0x7e, 0xd2, 0x56, 0x06, 0x69, 0x35, 0x1d,
  0x59, 0x2c, 0x07, 0x4c, 0x94, 0xae, 0xf3, 0x4b, 0xd8, 0x1a, 0x31, 0x07,
  0x06, 0x3b, 0xa5, 0xfe, 0xa5, 0x4b, 0x62, 0x66, 0x3c, 0x24, 0x7f, 0xe9,

  0xba, 0x7e, 0xc0, 0x1d, 0xf1, 0x98, 0x2e, 0xbf, 0x63, 0xfd, 0xc5, 0x1c,
  0xd5, 0xf7, 0x37, 0xa0, 0x4b, 0x85, 0x77, 0x1e, 0x61, 0xbc, 0xf2, 0x6e,
  0xd6, 0x98, 0x07, 0x7a, 0x2f, 0x2e, 0x92, 0x9d, 0xf4, 0x53, 0x3a, 0x4a,
  0xce, 0x5e, 0x8d, 0xcf, 0xe9, 0x13, 0x86, 0x3a, 0x8a, 0x4b, 0x33, 0x8b,
  0xd3, 0x71, 0x67, 0xb8, 0xec, 0xb6, 0xc9, 0x8a, 0x3a, 0xe6, 0xa0, 0x0c,
  0xb7, 0x59, 0xa3, 0x08, 0x9a, 0x5e, 0x23, 0x93, 0x35, 0x96, 0x3e, 0xe2,
  0xe2, 0x14, 0xe6, 0xa5, 0x1c, 0x8c, 0x84, 0xaf, 0x5a, 0xf0, 0xa1, 0x95,
  0xb9, 0xf9, 0xb3, 0x5d, 0xeb, 0xaa, 0x19, 0x28, 0x2d, 0xd8, 0x70, 0x61,
  0xbd, 0xbe, 0x24, 0x1b, 0xa4, 0x56, 0xbb, 0xd1, 0x7e, 0xc1, 0xec, 0x46,
  0xa8, 0x2a, 0xc8, 0xb2, 0xad, 0x27, 0xd1, 0x58, 0x4d, 0x94, 0x49, 0x05,
  0x15, 0xa9, 0x28, 0xdd, 0xa8, 0x94, 0x4d, 0x81, 0xac, 0xd1, 0x1c, 0x01,
  0xb6, 0x69, 0x66, 0x54, 0xd0, 0x59, 0x44, 0x09, 0xe0, 0x43, 0x51, 0xc3,
  0x69, 0x2e, 0x99, 0xa2, 0x11, 0xff, 0x0f, 0x06, 0x9a, 0xb2, 0x8a, 0x46,
  0x54, 0x8f, 0x40, 0x45, 0x4e, 0x7e, 0x52, 0x52, 0x98, 0xd9, 0x54, 0xa7,
  0xf1, 0xec, 0xfd, 0xff, 0xaa, 0x58, 0x9b, 0x8d, 0x8f, 0x48, 0x63, 0x52,
  0xaa, 0x48, 0xcc, 0xd0, 0x06, 0x6e, 0x72, 0xec, 0x3d, 0x3a, 0x68, 0xfb,
  0xb1, 0x41, 0x6c, 0xc6, 0x00, 0xc8, 0x92, 0x17, 0xf4, 0xdf, 0x7b, 0xb9,
  0x32, 0x52, 0x57, 0xf0, 0xbc, 0xc4, 0x3b, 0x99, 0x77, 0x8a, 0x2f, 0x26,
  0x69, 0x33, 0xe8, 0x40, 0x7a, 0x81, 0xdc, 0x46, 0xc4, 0xf7, 0x06, 0xc9,
  0x6b, 0x4a, 0xc8, 0x3e, 0x7e, 0xf7, 0x15, 0x68, 0xe0, 0xfc, 0xe0, 0x10,

  0xd1, 0x25, 0x6b, 0x3d, 0xcc, 0xf0, 0x91, 0x9a, 0x1d, 0x09, 0x1c, 0x1d,
  0x0e, 0x15, 0x5f, 0xc8, 0x84, 0x01, 0xd8, 0x28, 0x85, 0x05, 0x91, 0x3d,
  0x34, 0xfb, 0xf5, 0xe4, 0x57, 0x60, 0x88, 0x1e, 0x0f, 0x64, 0x07, 0xc5,
  0x31, 0xf3, 0x29, 0xbb, 0x73, 0x7f, 0xc3, 0xae, 0x7a, 0x5b, 0xed, 0x1e,
  0x7e, 0xe1, 0x6d, 0xd2, 0x5f, 0x9f, 0x53, 0x86, 0x92, 0xd1, 0x52, 0x67,
  0x3f, 0xfe, 0x3c, 0x89, 0x18, 0xdf, 0xf9, 0x88, 0xb3, 0x05, 0x7e, 0x2e,
  0xcd, 0x05, 0xe2, 0xd0, 0x3f, 0xb3, 0x78, 0x49, 0x87, 0xa7, 0x4c, 0x79,
  0x22, 0xf8, 0xb4, 0xb0, 0x2a, 0xc9, 0x90, 0x13, 0xc0, 0x90, 0x10, 0xd6,

  0xdd, 0xfb, 0x69, 0xb9, 0x08, 0x64, 0x5d, 0xcb, 0x70, 0x85, 0x3e, 0x7f,
  0x28, 0xf2, 0x0d, 0xc6, 0x1c, 0x33, 0x1b, 0xd1, 0xa2, 0xbb, 0xd7, 0xc1,
  0xea, 0xd4, 0x50, 0xbf, 0x9c, 0x64, 0xa4, 0x37, 0xf9, 0x45, 0x84, 0xb9,
  0x31, 0x35, 0xd6, 0x94, 0x46, 0x89, 0xd3, 0x78, 0x63, 0xea, 0xbf, 0x39,
  0x5b, 0xdd, 0x5b, 0x73, 0xe8, 0xe4, 0x67, 0xb2, 0xbb, 0x36, 0xf0, 0x3d,
  0x4d, 0x86, 0xc9, 0x55, 0xb9, 0xea, 0xe7, 0x92, 0x4c, 0x1a, 0xc6, 0x30,
  0x38, 0xe3, 0x40, 0xbc, 0x51, 0x92, 0x59, 0xd5, 0xf2, 0xe5, 0x33, 0xf9,

  0x91, 0x25, 0xba, 0xe5, 0x6d, 0xc9, 0x56, 0xec, 0x28, 0x1a, 0x0e, 0x7e,
  0xca, 0x15, 0xca, 0xaf, 0x69, 0xeb, 0x94, 0x76, 0x9c, 0x63, 0xb3, 0xad,
  0xfa, 0x96, 0x05, 0xfd, 0x59, 0x90, 0x4f, 0xec, 0xdf, 0x22, 0x04, 0x19,
  0xa5, 0x45, 0xf2, 0x8d, 0x4b, 0xec, 0x03, 0x0a, 0x0c, 0x25, 0x41, 0x4a,
  0x16, 0xfa, 0xe2, 0xee, 0x41, 0x06, 0x9d, 0x2a, 0x20, 0x6a, 0xb7, 0x79,
  0xc6, 0x5c, 0x60, 0xed, 0x74, 0x09, 0xc4, 0xb0, 0xf1, 0x86, 0x52, 0x4a,

  0x98, 0x76, 0xc9, 0xf7, 0x9a, 0x4f, 0x3f, 0x21, 0xf2, 0x22, 0x12, 0xca,
  0x5f, 0x9f, 0xe6, 0xed, 0x71, 0xc6, 0x69, 0xe4, 0x08, 0x60, 0x4b, 0x92,
  0x53, 0x98, 0x68, 0x92, 0xa4, 0x73, 0x5e, 0xb0, 0xce, 0xd6, 0xeb, 0x65,

  0x30, 0x73, 0xfd, 0xf8, 0xfa, 0xe4, 0x7d, 0xb2, 0x43, 0x1a, 0x78, 0xd7,
  0xc8, 0x55, 0xf1, 0xbe, 0x97, 0x35, 0xd3, 0xbd, 0xd5, 0xa7, 0x7c, 0xcf,
  0x18, 0x9b, 0xb3, 0xc9, 0xae, 0x35, 0xa2, 0xf0, 0x39, 0xa2, 0x42, 0x6b,
  0x98, 0xaa, 0x65, 0x0a, 0xd3, 0x34, 0x70, 0x3d, 0x3a, 0x53, 0x95, 0x2b,

  0x5c, 0xac, 0x8d, 0xca, 0xdb, 0xc4, 0x04, 0x8d, 0x10, 0x0d, 0x67, 0x47,
  0x20, 0xb0, 0x93, 0xb1, 0x5f, 0xda, 0xd8, 0xd8, 0xdd, 0xbb, 0xca, 0xd9,
  0x8f, 0xe2, 0xc8, 0x61, 0x07, 0x8e, 0xa6, 0xec, 0x89, 0xb8, 0x70, 0xda,
  0xef, 0x80, 0x92, 0x2d, 0x69, 0x53, 0x56, 0x24, 0x92, 0x66, 0xe4, 0x06,
  0xec, 0x0e, 0x07, 0x4d, 0x6e, 0x6b, 0xb4, 0xb7, 0x95, 0xd8, 0xf4, 0x52,
  0xb3, 0xcb, 0x9c, 0x3f, 0x6d, 0x03, 0x5f, 0x86, 0xc4, 0xe6, 0xeb, 0xda,
  0xfa, 0x31, 0x53, 0x7b, 0x5e, 0xa3, 0x18, 0x43, 0xf5, 0x8e, 0xd3, 0xea,
  0x5c, 0x46, 0x37, 0xc6, 0xcd, 0xf2, 0xad, 0x75, 0x99, 0x14, 0x8e, 0x6a,
  0xeb, 0x87, 0xad, 0xc4, 0x4b, 0x4f, 0x6c, 0x65, 0x29, 0xe6, 0x2e, 0x81,
  0xc8, 0x13, 0x02, 0x46, 0x22, 0xdb, 0x3b, 0x3c, 0xcb, 0x16, 0xf9, 0x32,
  0x87, 0xed, 0xe5, 0x4f, 0x61, 0x18, 0x0b, 0x10, 0xba, 0x29, 0xfd, 0x10,
  0x4e, 0x49, 0x53, 0x7e, 0x53, 0xfa, 0xb5, 0x99, 0x12, 0x3c, 0x62, 0x9c,
  0x91, 0x19, 0xb7, 0x9a, 0xdb, 0x13, 0xb2, 0x49, 0xc3, 0x1b, 0x22, 0xc7,
  0xf6, 0x2e, 0xf5, 0xa9, 0xf2, 0xce, 0x25, 0xa2, 0x97, 0x9e, 0x99, 0x5a,
  0xb2, 0xfa, 0x34, 0xad, 0x0f, 0x0e, 0xba, 0x82, 0xae, 0x76, 0x14, 0x25,
  0xf6, 0x7b, 0x6a, 0x09, 0xf3, 0xc3, 0xfb, 0x93, 0x64, 0x87, 0x8a, 0x44,
  0x9e, 0x3e, 0x3e, 0x38, 0xdc, 0xf5, 0x33, 0x4b, 0x94, 0x01, 0x84, 0x72,
  0xf3, 0x8e, 0x43, 0xb2, 0xde, 0x05, 0x5c, 0x94, 0xd3, 0x54, 0x34, 0x0e,
  0x37, 0xf4, 0x2c, 0xbb, 0xce, 0xa7, 0x54, 0xa3, 0x43, 0x01, 0x79, 0xe2,

  0xc1, 0x93, 0xcc, 0x4c, 0x32, 0xd8, 0x71, 0x97, 0xd1, 0xcb, 0xb3, 0x37,
  0x26, 0x92, 0xd5, 0x94, 0x29, 0x6f, 0xda, 0xd0, 0x40, 0x23, 0x7b, 0xe7,
  0xcf, 0x5a, 0xa2, 0x04, 0x69, 0x8f, 0x27, 0x88, 0xd6, 0xc5, 0x15, 0x34,
  0xd0, 0x31, 0x06, 0x2e, 0xf0, 0x33, 0x1c, 0xca, 0x66, 0x09, 0xeb, 0xb5,
  0xb1, 0x63, 0xca, 0x40, 0xe9, 0x1e, 0xa0, 0xcc, 0x69, 0x8b, 0x04, 0x49,
  0x01, 0xe1, 0x9e, 0xba, 0x41, 0xed, 0xee, 0xfb, 0x9a, 0x50, 0x7b, 0xd4,
  0xd0, 0x53, 0x0e, 0xc2, 0x31, 0x9a, 0x4b, 0x7c, 0xc8, 0xdf, 0xc8, 0xc9,
  0xd4, 0x66, 0x9f, 0x72, 0x3c, 0x74, 0xf6, 0xe2, 0x35, 0x9c, 0xb0, 0xa2,

  0xa0, 0xfc, 0x36, 0xd5, 0xc7, 0x03, 0x39, 0x6e, 0x5e, 0xdf, 0x53, 0x21,
  0x04, 0x29, 0xa4, 0xfe, 0x46, 0xf6, 0xfc, 0x18, 0xe6, 0x09, 0x4f, 0xcf,
  0x27, 0x71, 0xf4, 0x40, 0x29, 0xb6, 0x29, 0x1c, 0xa1, 0xaf, 0x58, 0x05,
  0xbf, 0x39, 0xa2, 0x69, 0x39, 0xeb, 0x98, 0xec, 0xb4, 0x09, 0x9e, 0xc0,
  0x03, 0xf7, 0xe3, 0x50, 0x25, 0x38, 0x5e, 0xdc, 0x93, 0x4d, 0x94, 0xca,
  0xee, 0xf5, 0x9f, 0xc4, 0x03, 0x63, 0x1e, 0x35, 0xb0, 0xc0, 0x9f, 0xc5,
  0x01, 0xef, 0xf1, 0x39, 0xbd, 0x0a, 0x24, 0x76, 0x6d, 0x95, 0x21, 0xa7,
  0xab, 0x51, 0xb2, 0x78, 0x82, 0x8d, 0x0b, 0x2d, 0x1a, 0x4a, 0x1b, 0x44,

  0x4a, 0x00, 0xe5, 0x7c, 0x75, 0xee, 0x26, 0x3b, 0x76, 0xcc, 0x75, 0xd9,
  0x39, 0xe5, 0x20, 0x65, 0x72, 0xfe, 0xe6, 0x7b, 0xe5, 0x96, 0x31, 0x03,
  0x1e, 0x8e, 0xa8, 0x3f, 0xda, 0xec, 0x30, 0x63, 0x51, 0x50, 0xa6, 0x5a,
  0x2e, 0x59, 0x9f, 0xec, 0x26, 0x42, 0x38, 0x7c, 0xd7, 0x25, 0x33, 0xd2,


  0x56, 0x6f, 0xbd, 0xc0, 0xef, 0xba, 0xb1, 0xa6, 0x92, 0x2d, 0x99, 0x3f,
  0xfd, 0xc0, 0xbf, 0x66, 0x1e, 0x6b, 0xfe, 0xd5, 0x5c, 0xad, 0x97, 0x13,
  0x73, 0x9e, 0x45, 0xf3, 0xa7, 0xad, 0x84, 0x83, 0xad, 0x73, 0xd9, 0xcf,
  0x0d, 0x66, 0x67, 0xae, 0xf5, 0x3a, 0xea, 0x5b, 0x6c, 0xed, 0x1a, 0xcf,
  0x4e, 0x6b, 0x07, 0x5c, 0x7e, 0x9e, 0x39, 0x3c, 0xf6, 0x65, 0x07, 0xaa,
  0xde, 0x07, 0x43, 0x9e, 0x3f, 0xbc, 0xfd, 0xcb, 0x0f, 0xcf, 0x8e, 0x1e,

  0xa5, 0x4f, 0xd3, 0xe9, 0x93, 0xf9, 0xe7, 0xe9, 0xe3, 0xd9, 0xe3, 0xa7,
  0xcf, 0x0e, 0x3f, 0x7f, 0x9c, 0x3e, 0x7d, 0x34, 0x4f, 0x9f, 0x1c, 0x64,
  0x07, 0xcf, 0xe6, 0x87, 0x47, 0xb3, 0xd9, 0x3c, 0xfb, 0x7c, 0xf6, 0x34,
  0xdd, 0x1a, 0xc1, 0xfc, 0xd2, 0xa9, 0x87, 0xac, 0x56, 0x03, 0x6f, 0x69,
  0x32, 0xfe, 0xfa, 0xe5, 0xf0, 0x20, 0xb9, 0xca, 0x6e, 0xf5, 0x82, 0xb1,
  0x47, 0xd3, 0x66, 0xdd, 0x65, 0x92, 0x57, 0xdd, 0xbf, 0x58, 0x2d, 0x14,
  0xa4, 0xac, 0x69, 0xf2, 0x95, 0x40, 0x03, 0xe6, 0x5d, 0xd4, 0x6d, 0xe5,
  0xbc, 0x3a, 0xeb, 0x3f, 0x7c, 0xae, 0x3e, 0x7b, 0x5a, 0x57, 0xf7, 0xf2,
  0x9f, 0x9a, 0x77, 0x16, 0x6f, 0xd3, 0xa9, 0x51, 0x92, 0xcc, 0x9e, 0xc8,
  0x83, 0x63, 0x63, 0xda, 0x1a, 0x36, 0x3d, 0x48, 0xe4, 0x2f, 0xe4, 0x25,
  0xf6, 0xc6, 0xf8, 0xaa, 0x2a, 0xd7, 0xab, 0xf3, 0x72, 0x91, 0x4f, 0xef,
  0x36, 0x0d, 0xe7, 0x3f, 0xd6, 0xfa, 0xc5, 0x31, 0xb3, 0xf0, 0xbc, 0xce,
  0x7e, 0x43, 0xd3, 0xca, 0x63, 0xc7, 0x0f, 0xb0, 0xad, 0x86, 0xd3, 0x7c,
  0x75, 0x45, 0x71, 0xde, 0x17, 0xc8, 0xf2, 0xa3, 0xd0, 0x0c, 0xff, 0x20,

  0x6e, 0x53, 0x8d, 0xe5, 0x46, 0xd6, 0x72, 0x9e, 0xfa, 0xb6, 0x68, 0x5c,
  0xb9, 0x96, 0xc0, 0xa9, 0x9b, 0x4a, 0x32, 0x4b, 0xf3, 0xc0, 0x8f, 0xe7,
  0x3e, 0xc4, 0xb7, 0x5d, 0xb5, 0x6d, 0x76, 0x5e, 0xc8, 0xaf, 0x46, 0xc9,
  0x7b, 0xc4, 0xc9, 0xd7, 0x2b, 0x36, 0x2f, 0xe0, 0xcf, 0xe7, 0xdf, 0x75,
  0x2f, 0x1a, 0x4d, 0x5e, 0x28, 0x86, 0x0b, 0xf1, 0xcc, 0x8e, 0x7e, 0x78,
  0x7f, 0xfa, 0xbc, 0xbb, 0x4f, 0x28, 0x36, 0xaa, 0x9f, 0xef, 0xed, 0x21,
  0xe4, 0x73, 0x95, 0xde, 0xde, 0x8e, 0xea, 0x6c, 0x6f, 0x56, 0x4e, 0xeb,
  0xbd, 0xba, 0x5e, 0xe8, 0x6e, 0xb4, 0x6b, 0xff, 0x7e, 0x05, 0x6f, 0x6e,
  0xb9, 0x04, 0xdb, 0xca, 0x66, 0xc3, 0xba, 0x0e, 0x72, 0x83, 0xc6, 0xaf,
  0x34, 0xf3, 0xe0, 0x58, 0x72, 0xd2, 0x20, 0xe7, 0x86, 0x66, 0x77, 0xc7,
  0xe3, 0xaf, 0x13, 0x7d, 0x19, 0xdb, 0x6b, 0x43, 0xe2, 0x36, 0x2f, 0x67,
  0x10, 0x51, 0xc3, 0x52, 0x61, 0xd8, 0x7f, 0xf4, 0x1d, 0x3a, 0xa4, 0x4e,
  0x97, 0xfc, 0x87, 0xd4, 0xae, 0xe4, 0xcd, 0xc6, 0x44, 0xbe, 0x27, 0x1d,
  0x07, 0x88, 0x5d, 0x44, 0x3c, 0xfe, 0xaf, 0x4e, 0xb0, 0x34, 0x71, 0x4f,
  0x3a, 0x8f, 0x50, 0xb7, 0x38, 0xdd, 0x50, 0xef, 0x65, 0x59, 0x19, 0xe1,
  0xb1, 0xac, 0x63, 0x5e, 0x50, 0xbd, 0xe5, 0x35, 0xab, 0x7d, 0x35, 0xe7,
  0x22, 0x9a, 0x61, 0x0a, 0x6f, 0x70, 0x73, 0x8c, 0xc8, 0x61, 0x1c, 0xf9,
  0x87, 0x15, 0x8d, 0x6f, 0xe9, 0xe1, 0xf5, 0x79, 0xd1, 0xd6, 0x85, 0x0b,
  0x7e, 0x40, 0x1c, 0x9b, 0xc9, 0x4a, 0x61, 0x59, 0x60, 0x21, 0x20, 0xf7,
  0x1f, 0x62, 0x82, 0x74, 0x88, 0xaa, 0x2a, 0x3d, 0xa5, 0x76, 0xf8, 0x0d,
  0x8c, 0x4b, 0x23, 0x1d, 0xf3, 0x4b, 0x0d, 0xaf, 0xf7, 0xe4, 0xd8, 0x91,

  0xe8, 0x6a, 0x90, 0xbb, 0x2c, 0xe5, 0xe0, 0x24, 0x14, 0x28, 0x85, 0x0d,


  0xa9, 0x25, 0x92, 0x9d, 0xc9, 0xe9, 0x40, 0xad, 0x2a, 0xf8, 0xe0, 0x26,

  0x50, 0xcd, 0x8f, 0x7b, 0x9c, 0xd2, 0xa8, 0xf4, 0x5e, 0x62, 0x78, 0x71,



  0x5f, 0x78, 0x89, 0x6d, 0xa4, 0x95, 0xc1, 0xcd, 0x60, 0x9e, 0xe9, 0x5a,
  0x7b, 0xc8, 0xb9, 0xb5, 0x3a, 0x5f, 0xac, 0xc4, 0xb5, 0xbb, 0x1e, 0x4d,
  0xbd, 0xd7, 0xbd, 0xcd, 0x51, 0x54, 0x9d, 0x22, 0xaf, 0x3f, 0x26, 0xda,
  0x4b, 0x2f, 0x48, 0x4b, 0x03, 0x86, 0x32, 0xaf, 0xb1, 0x69, 0x93, 0x5a,
  0xa9, 0x04, 0x85, 0xc0, 0x70, 0x20, 0x23, 0xf6, 0x28, 0xe3, 0x9c, 0x4a,
  0xe9, 0x17, 0xa5, 0x53, 0xb0, 0x0c, 0xe1, 0x19, 0x5e, 0x88, 0x6a, 0xc4,
  0x51, 0xc0, 0xb7, 0xb9, 0x26, 0x89, 0x93, 0x08, 0xb9, 0xb6, 0x8e, 0xb3,
  0xbd, 0xf8, 0x67, 0x10, 0x5f, 0x13, 0x8d, 0x91, 0x3b, 0x7e, 0x46, 0xe7,
  0x17, 0x73, 0x0d, 0x49, 0x56, 0x3e, 0x17, 0x3a, 0xe6, 0x28, 0xe1, 0x95,
  0xa2, 0x4f, 0x2e, 0x32, 0x50, 0xcf, 0x76, 0x5d, 0x4a, 0xca, 0x26, 0x4d,
  0x94, 0xe6, 0xc9, 0x73, 0xec, 0x92, 0xba, 0x2d, 0xe8, 0x6c, 0x19, 0x23,
  0x69, 0xed, 0x72, 0xf5, 0xeb, 0x30, 0x5a, 0xe9, 0x36, 0x33, 0x66, 0xbd,
  0x06, 0x75, 0x0f, 0x98, 0x48, 0x95, 0xe9, 0x17, 0x8a, 0xb2, 0x3b, 0x29,
  0x9d, 0x47, 0x2c, 0x1f, 0x55, 0x73, 0xfb, 0xbd, 0x09, 0x68, 0x8e, 0xbf,
  0x3d, 0xe5, 0x9e, 0xec, 0xcd, 0x2c, 0x71, 0x8f, 0x24, 0xce, 0xce, 0x74,
  0xc7, 0x08, 0x7f, 0x03, 0x2a, 0x36, 0x6a, 0x9e, 0xfa, 0x73, 0x9a, 0xd3,
  0x17, 0xbb, 0x31, 0x3f, 0xb1, 0x1b, 0x49, 0x29, 0x8a, 0xee, 0xe9, 0xa2,
  0xac, 0x35, 0xfe, 0x42, 0xca, 0x05, 0xd7, 0xdd, 0x1a, 0x6e, 0xf0, 0x9d,
  0xfc, 0x80, 0x8f, 0xa6, 0x33, 0x1c, 0x3f, 0x35, 0x90, 0x29, 0xce, 0x9d,
  0xb2, 0x21, 0xb6, 0xaa, 0x2b, 0x16, 0x26, 0x6d, 0xc3, 0x5a, 0x93, 0xcf,
  0x93, 0x1f, 0x7e, 0x18, 0x24, 0xc6, 0x48, 0xee, 0x0c, 0xf7, 0x43, 0x63,
  0x7e, 0x6a, 0x68, 0xf1, 0x07, 0x2e, 0x58, 0xfa, 0xe1, 0x9a, 0x8c, 0x40,
  0x72, 0x30, 0xd7, 0x0b, 0x8a, 0x1e, 0xb1, 0x9a, 0xdd, 0xf6, 0xca, 0x71,
  0x3d, 0xf4, 0x86, 0xd4, 0x2c, 0x67, 0xb7, 0x73, 0x2a, 0xa6, 0x39, 0xb0,



  0xf5, 0xb2, 0x10, 0xeb, 0x84, 0x89, 0x13, 0xf7, 0x1e, 0x72, 0x60, 0xfb,
  0x77, 0xdb, 0x8e, 0x90, 0x62, 0x7b, 0x57, 0x65, 0x2c, 0xe9, 0x21, 0xaa,
  0x72, 0x4f, 0x4c, 0x69, 0xf5, 0x30, 0xcc, 0xcd, 0x84, 0xc3, 0xa5, 0xc4,
  0x4c, 0xcf, 0xc8, 0xb9, 0xce, 0x65, 0x60, 0x5d, 0x31, 0xee, 0x4c, 0x49,
  0xaa, 0x8d, 0x5b, 0x5d, 0xdd, 0xd5, 0x94, 0xc9, 0x21, 0xb3, 0x09, 0x6e,
  0x4f, 0x6f, 0x82, 0xb1, 0xec, 0x3d, 0x15, 0xf5, 0x10, 0x1f, 0x20, 0xe6,
  0xd7, 0x62, 0x9d, 0x66, 0x46, 0xdb, 0xc3, 0x6d, 0x1b, 0x0b, 0x93, 0x7c,
  0x99, 0x20, 0x97, 0xde, 0x26, 0x67, 0xbb, 0xe4, 0xc3, 0xe0, 0x93, 0x5e,
  0x52, 0x5c, 0xe9, 0xa7, 0x3b, 0xba, 0xe2, 0x76, 0xaa, 0x4e, 0xd5, 0x28,
  0xbe, 0x7c, 0x5f, 0xf8, 0x4f, 0xc4, 0xe1, 0x84, 0xb4, 0x48, 0x98, 0x1e,
  0x3a, 0x00, 0xbc, 0x21, 0x2e, 0x3c, 0x34, 0x1c, 0x02, 0x67, 0x64, 0xc5,
  0xd8, 0x20, 0x44, 0x12, 0xc8, 0x3c, 0xb8, 0xa3, 0x4a, 0xb0, 0xd5, 0x22,
  0xe0, 0xb7, 0x92, 0x0a, 0xa8, 0xc5, 0xd6, 0x74, 0xc1, 0x09, 0x90, 0xe2,
  0xa6, 0x10, 0x40, 0x81, 0x71, 0x09, 0xaf, 0xcc, 0x14, 0x39, 0x0c, 0x92,
  0x2e, 0x23, 0x35, 0x65, 0x11, 0x2b, 0x90, 0x64, 0x60, 0xa0, 0x03, 0xd1,
  0x7c, 0xbe, 0x48, 0xb6, 0xfa, 0x35, 0xa1, 0xad, 0xee, 0x1b, 0xc8, 0x80,
  0x74, 0x2e, 0x4e, 0xa9, 0x97, 0xc7, 0x44, 0x76, 0x24, 0x93, 0x6e, 0xf8,
  0x77, 0x4e, 0x68, 0xe3, 0x92, 0x2e, 0x91, 0xaf, 0xbb, 0x9c, 0x20, 0x5c,
  0x47, 0x22, 0xfb, 0x2e, 0xcb, 0xca, 0xa3, 0x0f, 0x97, 0xa7, 0x94, 0xc3,

  0x7d, 0x0d, 0xe9, 0xc5, 0xd2, 0xce, 0x7b, 0x3a, 0x08, 0xc5, 0xeb, 0xdb,
  0x54, 0x71, 0x42, 0xdf, 0x13, 0x97, 0xb4, 0x8a, 0x0e, 0x7b, 0xa3, 0x57,


  0x0b, 0xe0, 0x74, 0x68, 0xad, 0x0b, 0x54, 0xa2, 0x60, 0x77, 0x0e, 0x76,
  0x6d, 0x75, 0x24, 0xc0, 0x36, 0x38, 0x33, 0x5b, 0xf4, 0x84, 0xad, 0xab,
  0x92, 0x73, 0x89, 0xb6, 0x9e, 0x53, 0xe1, 0x9e, 0xdc, 0x46, 0xac, 0x51,
  0x61, 0x10, 0x3a, 0xc3, 0x21, 0x53, 0xeb, 0xeb, 0xb3, 0xb7, 0xc7, 0xed,
  0x0c, 0x5c, 0xfc, 0x24, 0xe6, 0x7c, 0x35, 0xec, 0xea, 0x8d, 0xe1, 0x30,
  0x4c, 0x03, 0x69, 0xa0, 0xcd, 0x31, 0x6d, 0x99, 0x69, 0x5d, 0x66, 0xcd,
  0xea, 0x66, 0x9d, 0xcf, 0x76, 0x76, 0x89, 0x46, 0xa8, 0xdc, 0x64, 0x88,
  0x1a, 0x27, 0x36, 0x0d, 0xeb, 0x64, 0x87, 0x15, 0xf4, 0x2a, 0x6b, 0xd6,
  0x55, 0xc1, 0x0e, 0x73, 0x9a, 0x7b, 0xd7, 0xc8, 0x32, 0xd2, 0x99, 0x45,
  0x9d, 0xef, 0x1c, 0x10, 0xcc, 0x1c, 0x4e, 0x61, 0xe2, 0x01, 0x8d, 0xb9,
  0x7b, 0x66, 0xf3, 0x3e, 0x70, 0xf0, 0x58, 0x4b, 0x20, 0xbf, 0xfc, 0x9d,
  0x48, 0x5e, 0x9e, 0x9f, 0xbf, 0x7e, 0x79, 0xf1, 0xd2, 0xae, 0x0d, 0x02,
  0x1a, 0xcc, 0x05, 0x1a, 0xb2, 0xe1, 0x43, 0xa4, 0x35, 0xd1, 0x93, 0xdb,
  0xbf, 0xff, 0x30, 0x3e, 0x7e, 0xdf, 0x3d, 0xd8, 0xf3, 0xf7, 0x67, 0x04,
  0x48, 0xf4, 0xfb, 0x1f, 0x5e, 0xae, 0x56, 0x0b, 0x0d, 0x0a, 0xbe, 0x4e,
  0x9b, 0x74, 0x3b, 0xb8, 0xd5, 0x87, 0xbb, 0x34, 0xbf, 0x1b, 0x3b, 0xbf,
  0xb9, 0x08, 0x39, 0x98, 0xfa, 0xc9, 0x88, 0x0e, 0xb4, 0x9a, 0x6a, 0xfa,



  0xad, 0xdd, 0x0d, 0x6c, 0x00, 0xb2, 0x67, 0xfb, 0x17, 0x52, 0x3a, 0x4e,
  0xa6, 0x89, 0x64, 0xba, 0x59, 0x0b, 0x63, 0x64, 0x67, 0xd3, 0x75, 0xa3,
  0x24, 0x0f, 0xfa, 0xa2, 0x2a, 0xee, 0xee, 0xbe, 0x04, 0xc7, 0xe3, 0xc2,
  0x28, 0xcc, 0x05, 0x00, 0x22, 0x60, 0x08, 0x0d, 0x29, 0xd2, 0x3a, 0x5b,



  0xe6, 0x62, 0x11, 0x9a, 0x9a, 0x65, 0x1c, 0x56, 0x01, 0xa8, 0x00, 0x4f,
  0x29, 0xd8, 0x90, 0xdf, 0x99, 0xdb, 0x38, 0x4c, 0x8e, 0xa5, 0xda, 0x0d,
  0x0b, 0x37, 0x3f, 0x08, 0x1e, 0x6a, 0xac, 0xf9, 0x20, 0xec, 0x3e, 0xce,
  0x2b, 0x3c, 0xa0, 0x8d, 0xad, 0xae, 0x08, 0xe0, 0xd2, 0x56, 0xf3, 0x10,
  0x4d, 0x9b, 0x36, 0x1d, 0xd6, 0xd3, 0x56, 0x24, 0xe9, 0x69, 0x98, 0x5e,
  0x12, 0x79, 0x99, 0x47, 0x8d, 0x76, 0x6d, 0x8c, 0x26, 0xfa, 0xd7, 0xde,
  0xc1, 0x68, 0x7f, 0x2b, 0x9c, 0x3c, 0x5d, 0x16, 0x80, 0xa4, 0xd8, 0xa8,
  0x1a, 0x71, 0xc3, 0xa6, 0x2c, 0xef, 0x9d, 0x1f, 0xb3, 0x30, 0xa3, 0x9f,
  0xae, 0xcc, 0xf8, 0xd1, 0xa9, 0x0c, 0xcf, 0x82, 0x2c, 0x10, 0xca, 0xdc,
  0xad, 0x94, 0x29, 0x1a, 0x9e, 0x58, 0x94, 0x37, 0xb4, 0x12, 0x43, 0x6a,
  0x8b, 0x45, 0x0b, 0xcd, 0x66, 0x2b, 0xbe, 0xcd, 0x05, 0x80, 0xa3, 0xb2,
  0xee, 0x6e, 0x47, 0x23, 0xd7, 0xaa, 0x7c, 0xfa, 0x1a, 0x9e, 0x4d, 0x79,
  0x85, 0x15, 0x69, 0x29, 0xc1, 0x07, 0x13, 0x30, 0x5c, 0x2e, 0xe0, 0x7b,

  0x0b, 0x3f, 0x33, 0x63, 0xa8, 0xe9, 0x21, 0x43, 0x1a, 0x84, 0xb4, 0xd2,
  0x17, 0x5c, 0xab, 0x1e, 0xd8, 0xf2, 0x6f, 0xd3, 0xdb, 0x7c, 0xb9, 0x5e,
  0xe2, 0x63, 0x44, 0xdb, 0xf2, 0x98, 0xc4, 0x13, 0xe0, 0x55, 0xe4, 0xf4,
  0x14, 0x10, 0xf9, 0x76, 0x9d, 0x78, 0x16, 0x7d, 0x4c, 0xc8, 0x18, 0x91,
  0x3c, 0x72, 0xcb, 0x83, 0xb2, 0x80, 0x80, 0x43, 0xdd, 0xf1, 0x06, 0x18,
  0xfd, 0x20, 0xa5, 0x9c, 0x83, 0xba, 0xb4, 0x09, 0x3b, 0x11, 0x76, 0xce,
  0x60, 0x09, 0xa2, 0xc3, 0x79, 0xf9, 0xaa, 0x59, 0x95, 0x97, 0x33, 0x7b,
  0x6f, 0x48, 0x7f, 0xcc, 0x8b, 0xb5, 0xd9, 0x67, 0xf6, 0x25, 0x73, 0x10,
  0x82, 0x7e, 0x15, 0x78, 0x08, 0x91, 0x55, 0x3f, 0x46, 0xb1, 0x84, 0xa6,
  0xa0, 0x3e, 0x1d, 0x1d, 0x1d, 0x8e, 0xf6, 0x07, 0x2d, 0x83, 0x5e, 0x30,
  0x25, 0xcc, 0xed, 0x9a, 0xe6, 0x4b, 0x5b, 0x6f, 0x3a, 0xfa, 0xcd, 0x1c,
  0x37, 0xc8, 0x08, 0x5f, 0xa6, 0xb7, 0x38, 0xbe, 0xe8, 0xb1, 0x96, 0xc9,
  0x8b, 0xaf, 0xcf, 0xc6, 0x17, 0x07, 0xcf, 0xcf, 0xcf, 0xde, 0x9b, 0xff,
  0xd2, 0xdf, 0x0f, 0xf1, 0xf7, 0xc3, 0xc0, 0xaa, 0x7c, 0x23, 0x19, 0xb4,
  0x5a, 0xac, 0x03, 0x0d, 0x05, 0x1a, 0x0d, 0xef, 0x66, 0xe2, 0x0d, 0x44,
  0x7a, 0x39, 0xd8, 0xe0, 0xd4, 0x56, 0x34, 0x76, 0x8f, 0xd8, 0xfb, 0x94,
  0x26, 0xd9, 0x8d, 0x92, 0x30, 0x91, 0x2f, 0x6f, 0x54, 0x9b, 0x92, 0x5a,




  0x78, 0xad, 0xb2, 0xef, 0xfa, 0xba, 0xb9, 0x8e, 0x59, 0xea, 0x73, 0x14,
  0xaf, 0x0e, 0xb9, 0x61, 0xed, 0x5f, 0x4d, 0x17, 0x46, 0xbb, 0xcf, 0x28,
  0x97, 0x64, 0x96, 0x71, 0x80, 0x85, 0x7e, 0x12, 0x33, 0x4c, 0xcc, 0xf5,

  0x93, 0x92, 0x85, 0x20, 0xc1, 0x10, 0x14, 0xa9, 0x51, 0x1d, 0x33, 0x1b,
  0x33, 0xc7, 0xdc, 0x68, 0xe2, 0xbc, 0x1d, 0x45, 0x16, 0x54, 0x08, 0x30,
  0x8e, 0x9c, 0xef, 0xc4, 0x42, 0x91, 0x3e, 0xca, 0xed, 0xdf, 0x9d, 0x5d,
  0x24, 0xe9, 0x7c, 0xae, 0xd8, 0x00, 0x54, 0x96, 0x40, 0x1a, 0xeb, 0xde,
  0x8a, 0x25, 0x59, 0xda, 0xc4, 0x52, 0x37, 0x44, 0x1f, 0xb9, 0x38, 0x1d,
  0xef, 0x91, 0x0b, 0x8b, 0x93, 0xe0, 0xc6, 0xef, 0x4e, 0x06, 0x2d, 0x5f,
  0xb5, 0x9f, 0xfa, 0xb2, 0x4b, 0x92, 0x32, 0xae, 0x50, 0xa4, 0x9e, 0x2c,
  0x74, 0x88, 0x33, 0x94, 0x54, 0x87, 0x23, 0xdd, 0x92, 0x6a, 0xb0, 0x2d,

  0x1c, 0xed, 0x56, 0xa2, 0x51, 0x53, 0xd8, 0xc5, 0xcb, 0x55, 0x73, 0x17,

  0xd6, 0x8b, 0xc2, 0xb7, 0x41, 0x38, 0x2c, 0xa4, 0x74, 0x6c, 0x91, 0x59,
  0x42, 0xcb, 0xc2, 0x92, 0xb6, 0x46, 0x3c, 0xec, 0xe1, 0x16, 0x46, 0xc5,
  0xa0, 0xe6, 0xef, 0x34, 0x26, 0x88, 0x76, 0x92, 0xc5, 0xd2, 0xfb, 0xf9,
  0x43, 0xde, 0xe0, 0x89, 0x1d, 0xde, 0x4c, 0xcc, 0xd6, 0xa9, 0x29, 0x75,
  0x10, 0x83, 0x29, 0xab, 0xfc, 0x92, 0xf2, 0x04, 0xba, 0xa5, 0x63, 0x6e,
  0x22, 0x81, 0x67, 0x8a, 0x94, 0xb1, 0xba, 0xd9, 0xf2, 0x5c, 0x09, 0x4d,
  0x90, 0xa0, 0x8f, 0xb4, 0xd1, 0x4a, 0x4d, 0x1a, 0x9d, 0x0e, 0xf1, 0x9f,
  0x26, 0xa2, 0xc7, 0xb3, 0xb2, 0x67, 0x56, 0x47, 0x72, 0xc7, 0x05, 0x81,
  0xb4, 0xf4, 0x47, 0xef, 0x12, 0x90, 0x70, 0x4e, 0x1a, 0x65, 0xe0, 0x1c,

  0x36, 0xea, 0x0e, 0xc7, 0x88, 0x6d, 0x86, 0x23, 0x68, 0xd5, 0xc7, 0xd6,
  0xc1, 0xe1, 0xd3, 0xd1, 0xbe, 0xf9, 0x3f, 0x73, 0x28, 0xa2, 0x1f, 0x01,

  0x2e, 0xca, 0xc1, 0x02, 0xd9, 0x27, 0xb3, 0xdb, 0x2e, 0x49, 0xb2, 0x00,
  0x2a, 0xab, 0xcb, 0xad, 0x8d, 0x35, 0xac, 0x2d, 0x91, 0x42, 0x07, 0x69,
  0xc5, 0x49, 0x3a, 0x93, 0x9f, 0xe8, 0x1d, 0xaf, 0xd6, 0x8b, 0x48, 0x5a,


  0x9f, 0xe7, 0x46, 0x26, 0xed, 0x6c, 0x71, 0x2d, 0x4e, 0xe4, 0xaf, 0x89,
  0x37, 0x71, 0x1d, 0xdf, 0xa8, 0x95, 0x14, 0xf5, 0xac, 0xe5, 0x13, 0x7c,




  0x25, 0x26, 0x1b, 0x38, 0xf3, 0xd0, 0x5c, 0x86, 0x17, 0xe5, 0x7c, 0x5e,
  0x67, 0x4d, 0x57, 0x00, 0xbd, 0x92, 0x47, 0xf6, 0xde, 0x03, 0xe0, 0x10,
  0x9c, 0x4a, 0x2b, 0x6e, 0x92, 0x36, 0x2c, 0x4f, 0x22, 0x59, 0x68, 0xcc,
  0xb6, 0x78, 0xb8, 0x51, 0xa4, 0xc8, 0xc0, 0xff, 0xbd, 0x66, 0x88, 0x70,
  0x55, 0xbc, 0x82, 0xbd, 0xa0, 0xdc, 0x8a, 0x71, 0x5c, 0x44, 0xd2, 0x75,
  0x51, 0xd9, 0xf4, 0x4a, 0x7c, 0xca, 0x57, 0x2b, 0x32, 0x6f, 0x18, 0xe1,
  0x0c, 0x64, 0x6b, 0x03, 0x68, 0x88, 0xe3, 0x82, 0x94, 0x35, 0x5b, 0xd0,
  0x28, 0xc9, 0x53, 0x91, 0xf9, 0x93, 0x6c, 0x1e, 0x06, 0x81, 0x38, 0xa9,
  0xd1, 0x87, 0xb5, 0x91, 0x1a, 0xdd, 0x19, 0x41, 0xd8, 0x14, 0xa9, 0xb2,
  0x98, 0xb9, 0x07, 0xf8, 0x20, 0xc5, 0x7f, 0x83, 0xc8, 0xfd, 0x77, 0xc5,
  0x59, 0xd6, 0x0f, 0x37, 0x3e, 0xf9, 0xef, 0xc7, 0x0e, 0x84, 0xc8, 0xa2,
  0xfc, 0x70, 0xb9, 0x4b, 0xac, 0x78, 0xc8, 0xdc, 0xc2, 0xe1, 0x2b, 0x73,

  0x5e, 0x5b, 0x98, 0x8a, 0x4b, 0x35, 0x29, 0x3b, 0xe5, 0x18, 0xb0, 0x7b,
  0x48, 0x93, 0x80, 0x36, 0xb4, 0x47, 0x75, 0xff, 0x81, 0x68, 0x60, 0x8c,
  0x4a, 0xf6, 0x2f, 0xca, 0x1a, 0x71, 0x3b, 0x1a, 0xa9, 0x9a, 0xf3, 0x6b,
  0x4e, 0x44, 0x59, 0xdc, 0xcb, 0x0b, 0x52, 0x19, 0x59, 0x81, 0x09, 0x4a,
  0x32, 0xb4, 0x0e, 0x96, 0xd1, 0x4e, 0xd6, 0xcd, 0x6f, 0x18, 0x3b, 0xa9,
  0x88, 0x7e, 0x01, 0x63, 0xe7, 0x11, 0xf5, 0x94, 0x89, 0x9a, 0xb0, 0x3a,
  0x87, 0x7f, 0x33, 0x56, 0xf6, 0x0b, 0x75, 0x53, 0xf4, 0x01, 0x03, 0xa8,

  0x53, 0x83, 0x8a, 0x28, 0x60, 0x84, 0x81, 0x36, 0x2c, 0x3e, 0x8d, 0x6e,
  0x35, 0xc3, 0xea, 0xa4, 0xd0, 0x65, 0x00, 0x04, 0xda, 0xbd, 0xf3, 0x73,
  0x80, 0xde, 0x78, 0xe5, 0xdf, 0xb6, 0x76, 0x72, 0x44, 0x51, 0xaa, 0x05,
  0x8f, 0x50, 0x73, 0x62, 0xa5, 0x8c, 0xa1, 0x46, 0x43, 0x1e, 0xc8, 0xdc,
  0xbc, 0x18, 0x72, 0x71, 0xb5, 0x3e, 0x8b, 0x60, 0x1a, 0xa1, 0xb6, 0x09,
  0x39, 0xf2, 0x11, 0xb1, 0x19, 0xde, 0x48, 0x62, 0x05, 0xd4, 0x5a, 0x7c,
  0x36, 0xe6, 0x46, 0x67, 0x5f, 0x24, 0x1c, 0x88, 0xfc, 0x71, 0x72, 0x90,
  0x7d, 0x32, 0xba, 0x73, 0x31, 0xa0, 0x9f, 0xa2, 0x10, 0xd5, 0x5e, 0x32,
  0xf6, 0x6d, 0x34, 0x19, 0x07, 0x2d, 0xb2, 0x88, 0x2e, 0xeb, 0x3d, 0x2b,
  0x8f, 0x7a, 0x6e, 0x94, 0x77, 0x59, 0x23, 0xa9, 0x23, 0x3c, 0x79, 0xad,
  0xcd, 0x42, 0x7d, 0xd7, 0xc9, 0xbc, 0x33, 0x1c, 0xe0, 0xe2, 0xb2, 0xa6,
  0x5d, 0xad, 0x2f, 0x31, 0x5c, 0xc6, 0xc8, 0x22, 0x5f, 0xe8, 0xc0, 0x5c,
  0x83, 0x2d, 0xf5, 0xcb, 0xf2, 0x0a, 0xe2, 0xa9, 0x0b, 0x3a, 0x1d, 0x72,
  0x13, 0x35, 0xb3, 0x18, 0x4d, 0xb2, 0xee, 0xab, 0x17, 0x52, 0xa0, 0x03,

  0xfd, 0x74, 0x08, 0x02, 0x41, 0x43, 0xf4, 0xde, 0x7d, 0x4d, 0x13, 0x57,

  0x22, 0x55, 0x85, 0x5e, 0x55, 0x29, 0xa5, 0xd0, 0x54, 0x33, 0xf5, 0x8c,


  0xe8, 0x44, 0x0d, 0x17, 0x16, 0xbb, 0xe8, 0x26, 0x05, 0xa5, 0xd9, 0xf1,


  0x63, 0xb5, 0x0f, 0x5e, 0xfe, 0xe3, 0x70, 0xe2, 0xc8, 0xd9, 0xc1, 0xe7,
  0x44, 0xd3, 0x94, 0xe4, 0x21, 0xa2, 0x79, 0x23, 0x58, 0xb6, 0x1b, 0xaf,
  0xb8, 0x14, 0x88, 0x34, 0x76, 0x53, 0x78, 0x0b, 0x6f, 0xae, 0xca, 0x45,
  0x16, 0x0b, 0x91, 0x78, 0x25, 0xbf, 0x00, 0x77, 0xa1, 0xb4, 0x5e, 0x78,
  0x9b, 0xaf, 0x91, 0x31, 0xdc, 0x0a, 0x9d, 0x18, 0xfd, 0x2e, 0x4b, 0xa9,
  0xe0, 0xc8, 0x26, 0xcd, 0x5f, 0x0f, 0x82, 0x34, 0x76, 0x73, 0xcf, 0x27,
  0x65, 0x6d, 0xe9, 0x85, 0x0a, 0x6b, 0x49, 0x82, 0xdc, 0xa4, 0x15, 0x18,

  0xb3, 0xa0, 0x64, 0x29, 0x80, 0xa8, 0x9f, 0x33, 0x48, 0xaa, 0x60, 0xb7,
  0xde, 0x21, 0xa7, 0x62, 0x74, 0x43, 0x26, 0x46, 0x01, 0x20, 0x37, 0x2d,
  0x68, 0x87, 0x86, 0x14, 0xfc, 0xab, 0x2b, 0x40, 0xe1, 0x4a, 0xc5, 0xba,
  0xb9, 0x87, 0x57, 0x24, 0xd3, 0xf3, 0x66, 0x9d, 0x36, 0x0f, 0x4b, 0xd8,
  0xee, 0xe3, 0x4d, 0xcc, 0x9c, 0xfc, 0x7c, 0xd4, 0x3e, 0xcc, 0x86, 0x9e,
  0x28, 0xa2, 0x7f, 0x90, 0x2f, 0xe8, 0xae, 0xfd, 0x8f, 0x7b, 0x18, 0xd3,

  0x39, 0x10, 0xfd, 0xae, 0xda, 0x90, 0x50, 0xa8, 0xc9, 0x15, 0x79, 0xa2,
  0x95, 0x6f, 0x3c, 0xa6, 0x8a, 0xfb, 0x93, 0x48, 0xa0, 0x1f, 0xd1, 0x31,
  0x33, 0x9d, 0xc5, 0x9d, 0x1b, 0xd0, 0x2b, 0x99, 0xd5, 0x0c, 0x6f, 0x0f,
  0x2e, 0xcf, 0x7e, 0x21, 0xc8, 0x5a, 0xda, 0x1a, 0x1b, 0x15, 0x9c, 0xbf,


  0xf9, 0x7c, 0x4b, 0xd1, 0x47, 0x2d, 0x9c, 0x92, 0x70, 0x11, 0x29, 0xda,
  0xd2, 0xfa, 0x0f, 0xf5, 0xd5, 0xd3, 0xf5, 0xef, 0x0e, 0x47, 0x50, 0xdc,
  0x07, 0x5f, 0x7c, 0xfb, 0xf2, 0xf4, 0xc3, 0xf1, 0xc1, 0x1f, 0x13, 0xfa,
  0xd7, 0x21, 0xff, 0xeb, 0x70, 0x2b, 0x76, 0x5c, 0x86, 0x51, 0x6d, 0x7f,
  0xb1, 0x9d, 0xd4, 0x77, 0xcb, 0x49, 0xb9, 0xb0, 0x07, 0x26, 0x5b, 0xa1,
  0x81, 0xb4, 0x81, 0x48, 0x71, 0x5b, 0xba, 0x2d, 0xae, 0xf2, 0x2e, 0xcb,

  0xae, 0x25, 0xe9, 0x50, 0xd9, 0x0d, 0x22, 0x78, 0x7e, 0x2d, 0x71, 0x83,
  0x4a, 0x6b, 0xe5, 0x61, 0x12, 0xcb, 0xeb, 0x4b, 0x04, 0x85, 0x50, 0xd2,

  0x8b, 0x5d, 0x47, 0x38, 0x07, 0x8b, 0x17, 0x07, 0xe9, 0xec, 0x33, 0x8c,
  0x30, 0xdb, 0xcc, 0x70, 0x27, 0x5c, 0x29, 0x8b, 0x3b, 0xcd, 0xaf, 0x8b,



  0x81, 0x40, 0x68, 0x1c, 0x77, 0x82, 0x3f, 0xb0, 0x5d, 0x65, 0x96, 0xf5,

  0x62, 0xd5, 0xf4, 0x6e, 0x77, 0xb8, 0x89, 0xe8, 0x2e, 0x1e, 0x34, 0xd7,
  0x29, 0xa1, 0x81, 0x0d, 0x35, 0x3d, 0xc3, 0xb9, 0x3a, 0xc8, 0x18, 0x9d,
  0x91, 0x66, 0xad, 0xfe, 0x8c, 0xc4, 0x03, 0x7f, 0xb6, 0x30, 0x92, 0x82,
  0xc3, 0x98, 0xb4, 0x42, 0x82, 0xec, 0x6b, 0x0e, 0xa1, 0x57, 0x18, 0x08,
  0xc6, 0x6c, 0x0e, 0xd2, 0x4d, 0x96, 0x41, 0x76, 0x56, 0x61, 0x34, 0xc9,
  0x1d, 0xc3, 0xde, 0x77, 0x7d, 0x4c, 0x10, 0x3d, 0x3e, 0x71, 0x4b, 0x34,
  0x36, 0xa2, 0xda, 0x13, 0x2b, 0xb8, 0xb8, 0x6a, 0x09, 0x1a, 0x55, 0xf9,
  0xb4, 0xc0, 0x99, 0xe3, 0xb3, 0x22, 0x39, 0x78, 0x18, 0x26, 0x53, 0xca,
  0xde, 0x5c, 0xa4, 0x01, 0x12, 0x0d, 0xee, 0x9a, 0xc2, 0x61, 0x50, 0xa0,
  0xdf, 0x12, 0xbe, 0xf9, 0xfe, 0xdd, 0x22, 0xdb, 0x55, 0xc3, 0x40, 0x85,
  0xdd, 0xde, 0xdb, 0xf2, 0x1f, 0x66, 0xde, 0xa9, 0x7c, 0x24, 0x26, 0x33,
  0x45, 0x04, 0xf6, 0xce, 0xdc, 0xf1, 0x17, 0x2e, 0x13, 0xf7, 0xb9, 0x46,
  0xcb, 0x36, 0x46, 0x10, 0x98, 0xf4, 0x32, 0xa4, 0x6a, 0x07, 0xa4, 0x23,
  0xda, 0x45, 0x20, 0xa1, 0x3d, 0xbc, 0x19, 0x43, 0xca, 0xa5, 0x64, 0xe8,
  0x58, 0x12, 0x13, 0xb1, 0xd3, 0x65, 0xe1, 0x5d, 0x9d, 0xaa, 0x47, 0x10,

  0x1d, 0xdf, 0x66, 0xd5, 0x94, 0xa0, 0x26, 0xa6, 0x46, 0x2f, 0x05, 0x3f,
  0x9d, 0x8b, 0x7b, 0x8a, 0x72, 0xa9, 0x24, 0x2b, 0xbe, 0x8d, 0x0b, 0x03,
  0xf1, 0xab, 0x74, 0xd6, 0x4b, 0x62, 0xc8, 0x7d, 0x98, 0x1a, 0xc2, 0x18,
  0x59, 0x08, 0x3c, 0x15, 0x90, 0x6d, 0xf6, 0xa1, 0x45, 0x66, 0x08, 0x27,
  0x04, 0x19, 0x7b, 0xd8, 0x61, 0x7d, 0xd1, 0x3b, 0x4d, 0x21, 0x17, 0xcc,
  0x85, 0x01, 0xcd, 0x5c, 0x74, 0x88, 0xa0, 0x02, 0x80, 0x0b, 0xd5, 0x9f,
  0x9e, 0x68, 0x4f, 0x07, 0xf8, 0x1d, 0x88, 0x96, 0x14, 0x77, 0x8a, 0x26,
  0xb5, 0x03, 0xb1, 0xc9, 0xca, 0xa1, 0x62, 0x0e, 0x42, 0xf3, 0x0a, 0x8b,
  0x91, 0x17, 0xe5, 0x0d, 0xc5, 0x60, 0xda, 0x08, 0xa0, 0x0a, 0xf6, 0xc3,
  0x39, 0x75, 0xcc, 0x97, 0x87, 0xa4, 0x2b, 0xf1, 0x67, 0x47, 0x1a, 0xad,
  0x8d, 0x52, 0x80, 0x96, 0xd3, 0x76, 0x2b, 0x91, 0x52, 0x97, 0x41, 0xd1,
  0xb0, 0x33, 0x99, 0xf5, 0x0b, 0x07, 0xc0, 0x15, 0x13, 0x6c, 0x58, 0xf1,
  0xa4, 0x6c, 0xae, 0xbc, 0x3c, 0x54, 0x02, 0xf5, 0x23, 0x3f, 0xcf, 0x7c,
  0xdd, 0xc0, 0x08, 0x50, 0x33, 0xb0, 0x91, 0x54, 0x63, 0x71, 0x16, 0x05,
  0x59, 0x0f, 0x9f, 0x08, 0xfc, 0x8d, 0x96, 0x68, 0x01, 0x6c, 0x29, 0x81,
  0xb6, 0x40, 0xa6, 0x38, 0xd1, 0xa5, 0x31, 0x80, 0x81, 0x2f, 0x68, 0xbe,
  0x49, 0x89, 0x4a, 0x75, 0x4d, 0x58, 0x72, 0x48, 0x49, 0x35, 0x1b, 0x1b,
  0x40, 0x4e, 0x00, 0x24, 0xa9, 0xf0, 0x8f, 0x74, 0x87, 0xe1, 0x6f, 0x1c,
  0x70, 0x13, 0xe3, 0x62, 0x90, 0xd5, 0x3e, 0x91, 0xa3, 0xa9, 0x71, 0x7f,
  0x89, 0x1e, 0x22, 0x4e, 0x11, 0xab, 0xbf, 0xf6, 0x5c, 0xd8, 0x7f, 0xd9,

  0xa8, 0x09, 0x8c, 0xbc, 0xaa, 0x66, 0x00, 0x5d, 0x40, 0x10, 0xdb, 0xc4,



  0x78, 0x6c, 0x77, 0xc8, 0xb8, 0x52, 0x17, 0x7f, 0x8b, 0xc5, 0x79, 0xd7,
  0xab, 0x19, 0xd4, 0x3e, 0x7d, 0x07, 0x8a, 0x92, 0x07, 0x84, 0x59, 0x97,
  0x72, 0x1b, 0x31, 0x3c, 0x31, 0x19, 0xc7, 0x65, 0x62, 0x20, 0x39, 0xdd,
  0xfb, 0xef, 0x07, 0x58, 0x5a, 0x48, 0x6d, 0xec, 0xc3, 0x59, 0xfa, 0xbc,
  0xc1, 0xbc, 0x08, 0xe1, 0x3b, 0x34, 0xb4, 0x5f, 0xc7, 0x02, 0x95, 0x2a,
  0xc0, 0x0d, 0x87, 0xff, 0xdb, 0xba, 0x98, 0x76, 0x64, 0x54, 0x39, 0xf0,
  0xf0, 0x38, 0x25, 0x2a, 0x6b, 0x25, 0x44, 0x97, 0xe8, 0xf1, 0x21, 0x81,
  0xbf, 0xa1, 0x8a, 0x50, 0xaa, 0xde, 0x20, 0xf1, 0xb6, 0xf0, 0x4a, 0x68,
  0xaf, 0x72, 0x73, 0x42, 0xd5, 0xf4, 0x0a, 0x48, 0x02, 0xf0, 0x23, 0x65,
  0xea, 0x1c, 0x0d, 0x14, 0x61, 0xf1, 0xfc, 0x63, 0x58, 0xd1, 0xc5, 0x72,
  0x62, 0x47, 0x84, 0x16, 0x52, 0x16, 0xca, 0xa4, 0xfb, 0xe6, 0x19, 0x66,
  0x76, 0x5d, 0xd1, 0x9e, 0x67, 0x8b, 0xda, 0x09, 0x48, 0xfb, 0x8e, 0x93,
  0x94, 0x30, 0xc2, 0x0b, 0xf8, 0x64, 0x59, 0x14, 0xe7, 0xd1, 0x1b, 0x8e,
  0x99, 0x18, 0x35, 0x47, 0x26, 0x43, 0x76, 0x25, 0xd1, 0xc9, 0x9d, 0x62,
  0xcc, 0xc8, 0x08, 0x5d, 0x98, 0x99, 0x40, 0xf2, 0x94, 0x76, 0xdf, 0x04,
  0xc0, 0x46, 0xb7, 0x2a, 0x57, 0xbc, 0x75, 0x26, 0x15, 0x72, 0x64, 0x50,
  0xf9, 0x34, 0xfa, 0x80, 0x50, 0xfc, 0x6b, 0x38, 0x9c, 0x37, 0x41, 0xba,
  0x96, 0x77, 0xd6, 0x6d, 0x12, 0x58, 0xcc, 0x05, 0xa3, 0xe7, 0xad, 0xa2,
  0xf1, 0x5d, 0x53, 0x0d, 0x4f, 0x72, 0xfa, 0x86, 0xbd, 0x78, 0xaf, 0xde,
  0xd3, 0xdf, 0x72, 0x8b, 0x50, 0x84, 0x3a, 0x5c, 0x34, 0xf6, 0xe0, 0x04,
  0xd9, 0xb7, 0xdf, 0x76, 0xcb, 0x30, 0x77, 0xce, 0xc6, 0x7b, 0x47, 0xcf,
  0xf6, 0x77, 0x23, 0x39, 0xcb, 0xe6, 0x1b, 0x3e, 0x4e, 0xe1, 0xa3, 0xfd,
  0xd1, 0xfe, 0x6e, 0x67, 0x36, 0xb4, 0xdd, 0x1b, 0x00, 0x54, 0x14, 0x5d,
  0xdd, 0x0a, 0x0d, 0x24, 0x23, 0xbb, 0x62, 0x2d, 0xc9, 0x9b, 0xf6, 0x8b,
  0x49, 0xdf, 0x67, 0xd7, 0x86, 0xd4, 0xa2, 0xf9, 0x6b, 0xa7, 0x79, 0x2d,
  0x86, 0x0d, 0x49, 0x32, 0x95, 0x2d, 0x54, 0xad, 0xdd, 0xce, 0x09, 0xc6,
  0x23, 0x24, 0x2c, 0x39, 0xd7, 0x21, 0x12, 0x6d, 0xa9, 0xcd, 0xa4, 0x2a,
  0x24, 0xe6, 0x21, 0xa6, 0xff, 0xab, 0x3b, 0x5b, 0x5e, 0xb6, 0xd0, 0x1e,
  0x9f, 0xfa, 0x67, 0x4a, 0x9a, 0xfe, 0x30, 0xad, 0xa7, 0x79, 0xce, 0xf6,
  0x4c, 0x8f, 0x19, 0xa3, 0x19, 0x8f, 0xc0, 0x90, 0x43, 0x25, 0x75, 0x9e,
  0x72, 0xa8, 0xd6, 0x01, 0x95, 0x06, 0xc3, 0x92, 0xb2, 0x6a, 0x48, 0x6c,
  0xd3, 0xb8, 0x62, 0xc3, 0x53, 0xb3, 0x16, 0xc1, 0x56, 0xb6, 0xfa, 0x65,
  0xdd, 0x55, 0xa3, 0xcc, 0x5d, 0x60, 0xb8, 0xb2, 0x55, 0x15, 0xd6, 0xf7,
  0x51, 0x6e, 0x26, 0x32, 0x9e, 0xd3, 0xa6, 0x2e, 0x69, 0x9f, 0x62, 0x9b,
  0x0a, 0x0f, 0x05, 0xd0, 0x69, 0xad, 0x01, 0x65, 0xef, 0xbe, 0xe4, 0x03,
  0x7d, 0x39, 0x70, 0xe9, 0x3a, 0x2d, 0x03, 0x28, 0x8d, 0x28, 0x82, 0x0c,
  0xae, 0x9f, 0x20, 0x3c, 0xce, 0x95, 0x54, 0xb4, 0x10, 0x69, 0x31, 0x01,
  0xb7, 0x07, 0xe7, 0x88, 0x48, 0x83, 0x09, 0x82, 0x21, 0xb2, 0xbb, 0x15,
  0x01, 0x97, 0x1a, 0x98, 0xf5, 0x01, 0xba, 0x13, 0x14, 0x54, 0x64, 0x37,
  0xc4, 0x8d, 0x6b, 0x51, 0x25, 0xaa, 0x2a, 0x27, 0xbf, 0x91, 0x4d, 0x2e,
  0x60, 0x75, 0x8c, 0xb2, 0x30, 0x49, 0x38, 0xcf, 0x22, 0xb5, 0xdd, 0x53,
  0xdc, 0xce, 0xda, 0xe6, 0x6c, 0x17, 0x80, 0x9f, 0x24, 0x7c, 0xb9, 0x60,
  0x6f, 0xd0, 0x1f, 0x00, 0x93, 0x53, 0xd0, 0xd9, 0xa6, 0x9d, 0xfe, 0x41,
  0x5a, 0x3b, 0xe7, 0x37, 0x33, 0xbc, 0x59, 0xd9, 0x32, 0x30, 0xeb, 0xfe,

  0x70, 0xc9, 0xde, 0xed, 0xf0, 0xe6, 0xe6, 0x66, 0x48, 0x17, 0x8e, 0x72,
  0x72, 0xa4, 0xcc, 0x62, 0xd4, 0x02, 0x8f, 0x86, 0x5d, 0xc9, 0x26, 0x27,
  0x31, 0x91, 0x30, 0xbe, 0xe1, 0xa5, 0x48, 0x55, 0x93, 0xbc, 0x41, 0x3d,

  0x9f, 0x10, 0x17, 0x5e, 0x93, 0xba, 0x3a, 0x99, 0x0e, 0x34, 0x1c, 0x75,
  0x44, 0x45, 0x6e, 0x9f, 0x5b, 0x0b, 0xc1, 0x4f, 0x4d, 0x9b, 0x8c, 0xea,
  0xd7, 0xcd, 0x27, 0x96, 0xcf, 0x93, 0xe1, 0xd7, 0xc9, 0xd6, 0x2b, 0x59,
  0xed, 0x85, 0x79, 0xe2, 0x79, 0x7b, 0x2d, 0xfc, 0x70, 0x18, 0xcc, 0x31,
  0xef, 0x6e, 0x3d, 0x0c, 0x3e, 0xb1, 0xf7, 0x22, 0xa3, 0xbb, 0x8a, 0xcb,

  0x9a, 0x69, 0x22, 0xce, 0x3a, 0x4a, 0x7b, 0x61, 0xb7, 0x16, 0x63, 0x9e,
  0x61, 0xe9, 0x69, 0x2d, 0x9d, 0x78, 0x26, 0x7c, 0xc3, 0x37, 0x5c, 0xc7,
  0x2a, 0xbd, 0xb9, 0xff, 0x8e, 0x7b, 0x37, 0x51, 0xa8, 0x77, 0x01, 0x57,
  0x97, 0x87, 0x47, 0x4c, 0xfe, 0x1d, 0x9b, 0x84, 0x19, 0x99, 0xa9, 0xf4,
  0xc1, 0x70, 0xc5, 0x54, 0x6c, 0x98, 0x8a, 0x5e, 0xfa, 0xe5, 0x86, 0x3a,
  0x34, 0xe7, 0x14, 0x76, 0xab, 0x68, 0x45, 0x3e, 0x3a, 0xb0, 0xa6, 0x58,
  0x96, 0xa5, 0xaa, 0x07, 0x30, 0x1a, 0xb7, 0xba, 0x81, 0xbd, 0x9c, 0x42,
  0xcb, 0xec, 0xd8, 0xf3, 0x96, 0x29, 0x08, 0xb8, 0xb1, 0xf4, 0x4e, 0x8e,

  0x73, 0xd0, 0x55, 0x55, 0x80, 0x32, 0x71, 0x59, 0x65, 0x15, 0x11, 0x3a,


  0xb2, 0xe0, 0x87, 0x9a, 0xc2, 0x1c, 0x13, 0xd6, 0x86, 0xa1, 0xbc, 0xfa,
  0xea, 0x04, 0xd9, 0xdc, 0x86, 0x91, 0x16, 0x02, 0xe2, 0xc0, 0xf3, 0xe7,
  0x96, 0x47, 0xd6, 0xa8, 0xbd, 0x24, 0x56, 0xc2, 0x25, 0x91, 0x69, 0x12,
  0x03, 0x40, 0x55, 0x9b, 0x23, 0x51, 0xe3, 0x42, 0x92, 0x56, 0xc5, 0x46,
  0x90, 0xcb, 0x6b, 0xc3, 0xbb, 0xa9, 0x2b, 0x11, 0x88, 0xee, 0x17, 0xbe,
  0xae, 0x60, 0x23, 0x69, 0x2d, 0x11, 0x5c, 0x28, 0x6b, 0x41, 0xfa, 0xb8,
  0xa3, 0x57, 0x6e, 0x21, 0x95, 0x85, 0x79, 0x6f, 0xf2, 0xf9, 0x78, 0x87,
  0x37, 0x9c, 0x49, 0xc7, 0x93, 0x62, 0xb7, 0x2e, 0xf3, 0x3d, 0x06, 0x5c,
  0x8b, 0x45, 0xbe, 0xb4, 0x98, 0xe7, 0xd6, 0x26, 0x46, 0x1a, 0x66, 0xfc,
  0x1f, 0x24, 0xa1, 0x20, 0x77, 0x0d, 0xcf, 0x23, 0xcd, 0x43, 0xeb, 0x25,
  0xfd, 0xd1, 0x14, 0xca, 0x4f, 0x12, 0x62, 0xe3, 0xc3, 0x91, 0xfd, 0xf7,
  0x05, 0x69, 0x4b, 0x5f, 0x8a, 0xa3, 0x8a, 0xf2, 0xe0, 0x6b, 0xcf, 0x1a,
  0x91, 0x62, 0x59, 0xcc, 0x5d, 0x6b, 0x84, 0x68, 0x1b, 0xe2, 0xc3, 0x71,
  0x84, 0xd3, 0xdb, 0x3d, 0xa6, 0x38, 0x82, 0x9d, 0xaf, 0xb9, 0x8d, 0xd8,

  0xbf, 0x75, 0x37, 0xef, 0x8b, 0xfb, 0x77, 0xef, 0xa7, 0x6e, 0xdf, 0xe6,
  0xdd, 0xe3, 0xf6, 0x0d, 0x9a, 0x2c, 0xfb, 0x85, 0xe7, 0xa0, 0x43, 0xb2,
  0x07, 0x5b, 0x5f, 0xd6, 0x51, 0xd7, 0xe6, 0x32, 0x9e, 0x91, 0xf9, 0xc5,
  0x2f, 0x75, 0xea, 0x20, 0x46, 0x58, 0xf4, 0x34, 0xf9, 0xf8, 0x70, 0x1c,
  0x56, 0xc4, 0xd9, 0xfb, 0xd8, 0x8b, 0xa2, 0x87, 0x63, 0x04, 0xc1, 0x2f,
  0x9e, 0x36, 0x4c, 0xcc, 0x13, 0xa4, 0x79, 0x0e, 0xe3, 0xc3, 0x69, 0x21,
  0xa0, 0x28, 0xe2, 0xc1, 0xfa, 0xbe, 0x54, 0xc1, 0xff, 0xf0, 0xc5, 0x21,
  0xad, 0xc8, 0xb5, 0x0c, 0xf4, 0x33, 0x42, 0x38, 0x04, 0xb3, 0x13, 0xfa,
  0x0d, 0xf5, 0xfa, 0x08, 0x0c, 0x24, 0xb7, 0x90, 0x52, 0x95, 0x60, 0x77,
  0xd0, 0xde, 0x30, 0x82, 0xba, 0x83, 0x30, 0xd0, 0x53, 0xce, 0x7b, 0xcf,
  0x58, 0xcf, 0x8e, 0xda, 0x32, 0x44, 0xcf, 0xee, 0xff, 0xa6, 0xf5, 0x81,
  0x9e, 0x1d, 0x19, 0x50, 0x84, 0xa1, 0x66, 0x0c, 0x6f, 0x24, 0xdd, 0x27,

  0xa8, 0x56, 0x20, 0x11, 0xdf, 0x33, 0x3b, 0xa0, 0x0f, 0x90, 0x52, 0x44,
  0xf1, 0xd6, 0x85, 0xc0, 0x85, 0x32, 0xcc, 0xfb, 0x17, 0x4e, 0x99, 0x19,
  0xd2, 0x22, 0x87, 0x42, 0xb2, 0x23, 0x10, 0xe1, 0x06, 0x4a, 0xb5, 0x94,
  0x19, 0x27, 0xca, 0x80, 0xfc, 0xfa, 0x45, 0xa3, 0xe2, 0xab, 0x8a, 0x6c,
  0x6f, 0x49, 0xca, 0x83, 0xcf, 0x5b, 0x92, 0xd2, 0xbd, 0xb3, 0x49, 0x46,
  0x8e, 0x33, 0x4e, 0x48, 0xf3, 0x1d, 0x98, 0x78, 0x89, 0xab, 0xac, 0xa9,
  0x91, 0x47, 0x98, 0xda, 0x44, 0xaf, 0x06, 0x45, 0xc7, 0x9c, 0x5b, 0xe4,
  0xd5, 0x4e, 0x22, 0xc1, 0x9c, 0xa2, 0x66, 0x62, 0x1d, 0x25, 0x93, 0xaa,
  0xbc, 0xa9, 0xa1, 0x8e, 0xaa, 0x81, 0x9a, 0x72, 0x0a, 0xec, 0x55, 0x50,
  0x12, 0x6d, 0xb6, 0x77, 0x61, 0x71, 0x60, 0xbf, 0xbe, 0x78, 0x7b, 0xca,
  0x8d, 0x1d, 0xb8, 0x3a, 0x97, 0x8a, 0x90, 0x64, 0xce, 0xeb, 0xc9, 0xd2,
  0x58, 0xd2, 0x46, 0x3b, 0x69, 0x98, 0x95, 0x29, 0x77, 0x0c, 0x4a, 0x88,
  0x11, 0xd2, 0x93, 0x80, 0xf0, 0x2a, 0x16, 0x9f, 0x11, 0x45, 0xd2, 0xc3,
  0xa1, 0xf2, 0x34, 0xe0, 0x9f, 0xae, 0xeb, 0x1a, 0x3b, 0x19, 0x19, 0x31,
  0xd0, 0xa3, 0xde, 0xd0, 0x51, 0xd0, 0x23, 0xc1, 0xed, 0xf3, 0xd4, 0x34,
  0xf4, 0x1f, 0x03, 0xa4, 0xb4, 0xf5, 0xd0, 0x90, 0xd6, 0x65, 0x9b, 0x8f,
  0x00, 0x35, 0x2b, 0x6d, 0x6b, 0x5a, 0x41, 0x59, 0xad, 0xd5, 0xbc, 0x5c,
  0x1b, 0x11, 0x5f, 0xf9, 0x22, 0x3d, 0x84, 0xf4, 0x21, 0x09, 0x24, 0xad,
  0x2b, 0x72, 0xe6, 0xb1, 0x56, 0x3d, 0x88, 0xe4, 0xdc, 0x8b, 0x42, 0xa2,
  0xde, 0x7c, 0x1b, 0xda, 0x6c, 0x99, 0x7a, 0xda, 0x2f, 0x81, 0xc6, 0xf6,
  0x6e, 0x70, 0x44, 0x49, 0x64, 0x84, 0x2a, 0x14, 0x53, 0xe0, 0x34, 0x0d,
  0xb1, 0x99, 0xd1, 0xd1, 0x0e, 0x2c, 0x85, 0x73, 0x3c, 0x50, 0xef, 0xa2,
  0x0a, 0xb6, 0x6b, 0x26, 0x52, 0xbb, 0xfe, 0x11, 0x6a, 0x2f, 0x03, 0xa8,
  0x0b, 0xd0, 0x5c, 0x68, 0x20, 0x51, 0xb6, 0xfd, 0x5d, 0xa1, 0xff, 0x51,
  0xfc, 0x5f, 0x03, 0x2f, 0xbc, 0x96, 0x93, 0x07, 0xca, 0x8f, 0x17, 0xba,
  0xc8, 0xfa, 0x32, 0xab, 0x2e, 0xb9, 0x0c, 0x81, 0x21, 0x61, 0xa3, 0x28,
  0x16, 0x69, 0xe2, 0xa1, 0xb4, 0x25, 0xc9, 0x7f, 0x19, 0xb2, 0x44, 0x85,
  0xab, 0x6a, 0x4d, 0xf5, 0x2f, 0xe2, 0x4f, 0xdf, 0x1e, 0xce, 0x98, 0xad,
  0xcc, 0xd2, 0xc2, 0xec, 0x84, 0xb9, 0xb1, 0x61, 0x7e, 0xcc, 0x62, 0xf1,
  0xc5, 0xa2, 0x5c, 0xd7, 0x77, 0xdb, 0x89, 0xf4, 0xf2, 0x91, 0xf6, 0x17,
  0x8d, 0xe4, 0xf2, 0xd0, 0x59, 0x9a, 0xf3, 0x5d, 0x17, 0x9f, 0x54, 0x28,
  0x52, 0xa5, 0x42, 0xcd, 0x8e, 0xda, 0xce, 0x70, 0xdb, 0xde, 0xc7, 0xfe,
  0x8b, 0x3f, 0x76, 0x74, 0x97, 0xe1, 0xfe, 0x67, 0xc3, 0xf9, 0x61, 0x96,
  0xb3, 0x0b, 0xc9, 0xc4, 0xcc, 0xe6, 0xa4, 0x15, 0xa9, 0xb3, 0x03, 0x92,
  0xf0, 0x60, 0x18, 0x5e, 0x0d, 0x39, 0xb8, 0xd4, 0x0d, 0xf0, 0x9b, 0x9e,
  0xe2, 0x13, 0x27, 0x79, 0x38, 0xa0, 0xe4, 0x90, 0xf3, 0x18, 0xc2, 0xc4,
  0xf6, 0xbe, 0xf1, 0x4b, 0xe0, 0x46, 0xc9, 0xb9, 0xd9, 0xaf, 0x00, 0x6a,
  0x82, 0x22, 0xd9, 0x76, 0xb8, 0xb4, 0x05, 0x7a, 0x3a, 0x2f, 0xcb, 0x49,
  0x5a, 0x6d, 0xcb, 0xde, 0x03, 0x55, 0xdd, 0x0c, 0x38, 0x63, 0xe7, 0x0b,
  0x9d, 0xf5, 0x70, 0x36, 0x88, 0xde, 0x68, 0xd2, 0x19, 0xf0, 0xee, 0x48,
  0x8b, 0x3a, 0xf4, 0xe7, 0x14, 0x20, 0x2f, 0x17, 0x33, 0xbb, 0x15, 0xfe,
  0x57, 0x23, 0x87, 0x86, 0xda, 0x04, 0xe7, 0x0a, 0x50, 0x4f, 0x00, 0xca,
  0x5b, 0xd4, 0x59, 0x60, 0x9d, 0xfa, 0x84, 0xe2, 0x4e, 0xb0, 0x21, 0x94,
  0x38, 0x11, 0x87, 0x6d, 0x91, 0x20, 0x89, 0x35, 0xc1, 0x3d, 0xe6, 0x40,
  0x33, 0x8a, 0xf1, 0x18, 0xc7, 0x53, 0x42, 0x87, 0xbb, 0xcf, 0xbe, 0x24,
  0x5b, 0x75, 0x43, 0xa6, 0x9b, 0xcf, 0x35, 0x3c, 0x39, 0xe6, 0x8c, 0xb9,
  0xae, 0x70, 0xdb, 0xe0, 0xda, 0x75, 0xb8, 0xb8, 0x60, 0xaf, 0xc2, 0x5f,
  0xd9, 0x09, 0x32, 0x3c, 0xd1, 0x2c, 0x3a, 0xfe, 0xe7, 0x05, 0x10, 0x9b,
  0xe1, 0x9c, 0x1c, 0x46, 0x48, 0xb3, 0x65, 0x5d, 0x66, 0x8b, 0xec, 0x92,
  0x57, 0xfb, 0xe2, 0xf4, 0xf8, 0xdb, 0xe3, 0xd3, 0x40, 0x6c, 0x7e, 0x35,
  0x1e, 0xef, 0x7d, 0xca, 0xaa, 0x09, 0x9a, 0xb2, 0x52, 0xe0, 0x22, 0xc1,
  0x73, 0x36, 0xc1, 0xcb, 0x93, 0x25, 0x37, 0x0e, 0xb2, 0x45, 0x12, 0xbd,
  0x03, 0x9f, 0x0d, 0x65, 0xf0, 0xf2, 0x27, 0x05, 0xe6, 0x1d, 0x25, 0x47,
  0x92, 0x4b, 0x08, 0xd9, 0x38, 0xad, 0xb2, 0x19, 0xf7, 0x2c, 0x0d, 0xb3,
  0x08, 0x81, 0xec, 0x41, 0x7d, 0x39, 0xe8, 0x50, 0x39, 0x93, 0x1c, 0x01,
  0x2c, 0xbb, 0x88, 0xe0, 0x8d, 0x15, 0xaa, 0xe7, 0x93, 0xd7, 0xf2, 0x4d,
  0xa9, 0x47, 0xa5, 0x5d, 0x62, 0x60, 0x37, 0xb6, 0x52, 0xce, 0xbe, 0x19,
  0xbe, 0x1c, 0x0f, 0x5f, 0x1f, 0x9f, 0x1e, 0x7f, 0xf5, 0xf2, 0xe2, 0xd8,
  0xe2, 0x99, 0xd7, 0x59, 0x8f, 0x0a, 0x26, 0xfa, 0xd7, 0x37, 0xb2, 0x2d,
  0x58, 0x3f, 0x61, 0xe1, 0x37, 0x39, 0x37, 0x64, 0x51, 0xc8, 0x7f, 0xee,
  0xac, 0x4d, 0x56, 0x51, 0xc3, 0x79, 0x82, 0xf1, 0xe1, 0xcc, 0xbd, 0x58,
  0x2c, 0x65, 0xaa, 0xc1, 0x0a, 0xd2, 0xc5, 0x0d, 0x35, 0x66, 0xfb, 0x50,
  0x50, 0x2a, 0x7d, 0x6e, 0x4b, 0x49, 0x79, 0xf5, 0xbe, 0x47, 0xc8, 0xed,
  0x6c, 0xeb, 0x80, 0x81, 0x4c, 0xdf, 0xe3, 0x2f, 0xd0, 0x32, 0x70, 0xc4,
  0x8f, 0x5f, 0xe3, 0xc9, 0x0e, 0xc6, 0xb8, 0x83, 0x46, 0x27, 0x06, 0x23,
  0xbf, 0x8a, 0x00, 0x96, 0x10, 0x01, 0xd5, 0xd3, 0xab, 0x6c, 0x29, 0xaa,
  0x2c, 0xa5, 0x26, 0x20, 0x08, 0xce, 0x35, 0x95, 0x82, 0x17, 0xc4, 0x29,
  0x64, 0x93, 0x8c, 0x21, 0x17, 0x80, 0x91, 0x46, 0x74, 0x1d, 0x4b, 0xf5,
  0xbd, 0xa1, 0x8e, 0x03, 0x14, 0x6b, 0xa1, 0xb4, 0x1d, 0x14, 0x18, 0x8f,
  0x90, 0x60, 0xe8, 0xe5, 0x0d, 0x84, 0x79, 0x02, 0xdc, 0x3d, 0xb0, 0x7b,
  0x67, 0x2d, 0x80, 0xb9, 0x45, 0x5b, 0x2f, 0xe1, 0x3a, 0xc3, 0x8f, 0xb8,

  0x79, 0x89, 0xe8, 0xdc, 0x34, 0xc9, 0x9f, 0xe9, 0xa8, 0x96, 0xf2, 0x04,
  0x29, 0x37, 0x24, 0x37, 0x16, 0xcc, 0xe0, 0x78, 0xd6, 0x76, 0x94, 0x69,
  0x48, 0x37, 0x56, 0x6f, 0xba, 0xcc, 0x1e, 0x18, 0x5a, 0x7d, 0x26, 0xa7,
  0x83, 0x1f, 0x49, 0x23, 0x02, 0x9b, 0xe2, 0x11, 0x75, 0xe5, 0x3b, 0x8e,
  0xd1, 0xee, 0x55, 0x40, 0x18, 0xf1, 0xfa, 0xd7, 0xb0, 0xa3, 0x84, 0x2d,
  0xb5, 0x1b, 0x66, 0xab, 0x00, 0xb0, 0x7b, 0xe7, 0x8d, 0xe2, 0xef, 0x5b,
  0xdd, 0xd2, 0xef, 0xb5, 0xe6, 0xb5, 0x46, 0x3a, 0x3e, 0x7f, 0xcf, 0xdd,
  0xd5, 0x4f, 0xe9, 0x2f, 0x12, 0x79, 0xab, 0x63, 0xf8, 0x77, 0xd2, 0xfd,
  0x83, 0x92, 0x51, 0x32, 0x84, 0x6e, 0x6c, 0x30, 0x5d, 0x93, 0x11, 0x39,
  0xff, 0x54, 0x80, 0xd6, 0xe5, 0x3a, 0x60, 0x8b, 0x83, 0xe4, 0x7f, 0xdb,
  0xa0, 0x93, 0x66, 0x42, 0x53, 0x10, 0x84, 0x22, 0x4c, 0x82, 0x73, 0x68,
  0x35, 0x40, 0x72, 0x46, 0xbf, 0x24, 0x7d, 0x93, 0xe5, 0x5a, 0xd3, 0xc7,
  0x79, 0xb9, 0x05, 0x82, 0xa8, 0x44, 0x34, 0x2c, 0xbd, 0x99, 0x54, 0x68,
  0xe7, 0x9a, 0x9a, 0xa9, 0x8c, 0x3a, 0x4b, 0x45, 0x43, 0x2e, 0x82, 0xdd,
  0x0c, 0xe3, 0x21, 0x68, 0x45, 0x26, 0x8e, 0x38, 0xc9, 0x4a, 0xc7, 0x82,

  0x35, 0xd7, 0x7e, 0x20, 0x39, 0x06, 0x64, 0x41, 0xa0, 0xed, 0x10, 0xd7,
  0x0b, 0x20, 0xf9, 0x20, 0xd0, 0xf0, 0xa5, 0x26, 0x41, 0x33, 0xd1, 0xb2,
  0x3b, 0x09, 0x9b, 0xb3, 0x42, 0x38, 0x97, 0xf0, 0x64, 0x0a, 0x40, 0x59,
  0x98, 0x36, 0x13, 0xd6, 0x60, 0x90, 0xd5, 0x77, 0x95, 0x16, 0x91, 0x3b,
  0x67, 0x36, 0xde, 0xf6, 0x44, 0xc3, 0x2a, 0xe5, 0xd8, 0x22, 0x4a, 0x3c,
  0xd1, 0x46, 0x17, 0xd6, 0xca, 0x18, 0x7a, 0x86, 0x81, 0xe5, 0x14, 0xd7,
  0x90, 0xa9, 0xf0, 0xce, 0xa0, 0x31, 0x90, 0xd0, 0x5b, 0x19, 0xa3, 0x2a,
  0x61, 0x2e, 0x2e, 0xda, 0xd2, 0x22, 0xc1, 0xfe, 0xa2, 0x6f, 0xeb, 0x99,
  0x47, 0x85, 0x8d, 0x87, 0xaa, 0x4b, 0x3d, 0x86, 0xdb, 0x25, 0x38, 0x38,

  0x3e, 0x08, 0xfb, 0xa2, 0x9b, 0x81, 0x92, 0x71, 0xd1, 0x85, 0xf9, 0x36,

  0xa6, 0x4b, 0x6e, 0x20, 0x1b, 0x91, 0x25, 0xe2, 0x09, 0xbe, 0xff, 0x1a,
  0x93, 0xa3, 0xef, 0xe0, 0x05, 0xdc, 0x7b, 0x82, 0x1e, 0xba, 0xd4, 0x1e,
  0x4f, 0x4c, 0xca, 0x93, 0xcc, 0x7c, 0x2f, 0xa7, 0x1e, 0x78, 0x7e, 0x18,

  0x20, 0x4c, 0x73, 0xae, 0x0d, 0x01, 0xa2, 0x2a, 0xa0, 0x64, 0x07, 0x10,
  0xbd, 0x4b, 0xb9, 0x14, 0x59, 0xe2, 0x37, 0x90, 0x04, 0x41, 0xc0, 0x62,
  0x38, 0x1f, 0x48, 0x3c, 0x13, 0xe9, 0x8d, 0x65, 0x15, 0x96, 0xc0, 0x4e,
  0x2d, 0xd6, 0x92, 0x3e, 0x99, 0xd6, 0xd7, 0xf1, 0x1b, 0x5e, 0x5f, 0x47,
  0x6f, 0xf8, 0x03, 0xee, 0xb9, 0xb3, 0xb7, 0x8e, 0xcf, 0xc7, 0xdf, 0x26,
  0x3d, 0xa0, 0x11, 0xdc, 0xc9, 0x85, 0xaf, 0xb8, 0x5b, 0x1d, 0x11, 0xbd,
  0x7f, 0xcd, 0xfb, 0xef, 0x79, 0x34, 0x3e, 0x10, 0xdc, 0x73, 0xf3, 0x7d,
  0xb9, 0xdc, 0xe7, 0x2f, 0xc7, 0xdf, 0x7a, 0xd7, 0xda, 0x23, 0x81, 0x58,
  0x31, 0xa6, 0xcd, 0x6c, 0xa7, 0x20, 0x31, 0x93, 0x0e, 0x0d, 0x16, 0xa5,
  0xf7, 0xfa, 0xfa, 0x21, 0xf4, 0x6e, 0x66, 0x12, 0xd0, 0x7b, 0xb0, 0xc7,
  0x9b, 0xe8, 0xdd, 0x3f, 0xa8, 0x76, 0xd2, 0xac, 0x47, 0xed, 0x05, 0x77,
  0xd1, 0xa6, 0x02, 0x8f, 0x3e, 0x32, 0xa7, 0x40, 0xa2, 0x90, 0x76, 0x98,
  0x4a, 0x88, 0x79, 0xfe, 0x34, 0x42, 0x37, 0x2f, 0x04, 0x84, 0xae, 0xe7,
  0x19, 0xa7, 0xf4, 0x3e, 0x42, 0xd7, 0x94, 0xe2, 0x8c, 0x89, 0xdc, 0xa7,
  0xf1, 0x90, 0xbe, 0x3d, 0xaa, 0xf5, 0xcb, 0xc0, 0xc3, 0x1d, 0xd2, 0x4c,
  0x33, 0x07, 0x65, 0xe0, 0x80, 0x1c, 0x22, 0xe0, 0x22, 0x0a, 0xca, 0xc0,
  0x05, 0xb1, 0xa1, 0x3b, 0xdf, 0x96, 0xe6, 0xb7, 0xaa, 0x1f, 0x2a, 0xd5,
  0xb0, 0xb9, 0xb1, 0x1a, 0x09, 0x6d, 0xb8, 0x07, 0x7c, 0x40, 0x81, 0x79,
  0x70, 0x23, 0x5b, 0xe8, 0x41, 0x59, 0xb4, 0x3a, 0xbd, 0xce, 0x28, 0xcf,
  0x03, 0x30, 0x64, 0xdd, 0x7b, 0x4a, 0x6a, 0x1e, 0xb4, 0x01, 0x52, 0x54,
  0x86, 0x79, 0x31, 0x0c, 0xd3, 0xa0, 0xfd, 0xd0, 0x56, 0xd3, 0xc2, 0xa6,
  0xa5, 0x12, 0x45, 0x28, 0xbc, 0x12, 0xe4, 0x20, 0x65, 0x14, 0x96, 0xa6,
  0xc4, 0x04, 0xd8, 0x2b, 0x19, 0x29, 0xa8, 0x8d, 0x22, 0xac, 0xb5, 0xdb,
  0xbd, 0x34, 0x65, 0xcb, 0x19, 0xf7, 0xa4, 0x83, 0x62, 0x3c, 0x2b, 0xea,
  0xa1, 0xeb, 0xd0, 0xfe, 0xc2, 0xfe, 0x35, 0xb0, 0x2f, 0x5e, 0xbf, 0x1b,
  0x53, 0xe4, 0x2a, 0x43, 0xad, 0x81, 0x9a, 0xc1, 0x75, 0xc6, 0xf5, 0x21,
  0x97, 0xe0, 0x1c, 0xe6, 0x11, 0x5b, 0xf0, 0x67, 0x9b, 0x22, 0xbe, 0x88,
  0x3a, 0x84, 0xf0, 0x89, 0xa0, 0x50, 0x2f, 0xe5, 0x82, 0x1b, 0x63, 0xdb,
  0x21, 0x2e, 0x4e, 0x2b, 0x70, 0x73, 0xd3, 0x8a, 0x76, 0x78, 0x9e, 0x22,
  0x18, 0x47, 0x5a, 0x96, 0x47, 0xd3, 0xd8, 0xd5, 0xf6, 0xcc, 0x2b, 0x46,

  0x64, 0x17, 0x0c, 0x32, 0xdb, 0xe1, 0xaa, 0xe8, 0x74, 0xa5, 0xef, 0x2e,


  0x56, 0x30, 0x93, 0x24, 0x67, 0x6c, 0x77, 0xa3, 0xf1, 0x48, 0x1b, 0xb8,
  0xba, 0x7e, 0x34, 0xa4, 0x87, 0x25, 0xfd, 0xd0, 0xfe, 0xf4, 0x09, 0x7e,
  0x3a, 0x0a, 0x36, 0x3a, 0x28, 0xa1, 0x91, 0x0e, 0xaa, 0x16, 0x1d, 0x97,
  0xb2, 0x1b, 0x8b, 0x19, 0x75, 0xde, 0xc0, 0xd9, 0x6b, 0x23, 0x05, 0x42,
  0x4b, 0x64, 0xcc, 0x43, 0xd7, 0xbc, 0x2d, 0x09, 0x70, 0x5a, 0x8c, 0x6e,
  0x53, 0xb7, 0x0e, 0xfd, 0xe8, 0x28, 0x72, 0xe8, 0x76, 0xce, 0x2f, 0x64,
  0x99, 0xf1, 0x23, 0x6f, 0x49, 0x97, 0x49, 0xce, 0xfd, 0xad, 0x5e, 0xe4,
  0xab, 0xa1, 0xbe, 0xc5, 0xc2, 0x63, 0x99, 0x7e, 0x12, 0x91, 0xfe, 0x48,
  0xe8, 0x60, 0x18, 0xc0, 0xac, 0x70, 0xbb, 0x65, 0x74, 0xa5, 0x76, 0xeb,
  0x6c, 0x11, 0x8d, 0xe8, 0x5b, 0x8d, 0x05, 0x6d, 0x25, 0xa2, 0xe0, 0xef,
  0xc4, 0x6a, 0xbe, 0x34, 0x3b, 0xdb, 0xf7, 0xf1, 0x68, 0x7d, 0x07, 0x66,
  0x62, 0xdf, 0xbd, 0xe7, 0xfc, 0x1c, 0x91, 0x6d, 0x3e, 0x3f, 0xdd, 0xb3,


  0xff, 0x3d, 0xce, 0xef, 0xc9, 0xaf, 0x72, 0x7e, 0x4f, 0xfe, 0xb7, 0x39,
  0xbf, 0x27, 0xff, 0xf2, 0xf9, 0x3d, 0x0a, 0xce, 0xef, 0xc9, 0xff, 0x2e,
  0xe7, 0xa7, 0xfd, 0xd5, 0xf4, 0xf4, 0xb2, 0xe0, 0xfc, 0xc6, 0x92, 0x36,
  0xa2, 0xc0, 0x7c, 0xb4, 0xd3, 0xfa, 0x16, 0x07, 0x69, 0x24, 0xd1, 0x91,
  0xbd, 0xe0, 0x9a, 0x6b, 0xcb, 0xd0, 0x90, 0x3d, 0x0d, 0x4b, 0x46, 0x5a,
  0x56, 0xa1, 0x83, 0x9e, 0x9c, 0x27, 0x76, 0x02, 0xde, 0x31, 0x38, 0xa0,
  0x2d, 0x28, 0x68, 0x51, 0x17, 0x75, 0x4d, 0x7e, 0x4b, 0xb3, 0x7e, 0x2e,
  0xaf, 0xac, 0x5d, 0x51, 0x70, 0x0c, 0x49, 0xcb, 0x6c, 0xdc, 0xf3, 0x17,
  0xb4, 0x5d, 0x43, 0x7e, 0xfc, 0x4f, 0xd1, 0x62, 0x37, 0x74, 0x6c, 0x76,

  0x53, 0x8a, 0x85, 0x25, 0xbc, 0xad, 0x73, 0xe7, 0x66, 0xa3, 0x59, 0xde,

  0xa1, 0xc5, 0xce, 0xac, 0xab, 0xea, 0xd8, 0x13, 0xbc, 0xff, 0xc8, 0xca,
  0x2b, 0xe0, 0xf8, 0xbc, 0xf8, 0xf0, 0x3e, 0xf4, 0xbd, 0x99, 0xa5, 0x86,
  0xd0, 0x88, 0xe6, 0xb8, 0x86, 0x64, 0xdb, 0x0f, 0x81, 0x12, 0x6f, 0x6e,
  0xe3, 0xd9, 0xd7, 0xbb, 0x9e, 0x13, 0x08, 0x41, 0x8b, 0x32, 0xd6, 0xef,
  0x8e, 0xcb, 0x6e, 0x6d, 0x69, 0x79, 0x3d, 0xe8, 0xf4, 0xb8, 0xb4, 0x69,
  0xef, 0x4e, 0x49, 0x81, 0x77, 0x44, 0x0a, 0x76, 0xab, 0xa0, 0xbf, 0x25,
  0x29, 0x83, 0x79, 0x2d, 0xa8, 0x71, 0x04, 0xa3, 0xa1, 0x72, 0x10, 0x33,
  0xfb, 0x2d, 0x33, 0xfe, 0x9e, 0x1c, 0xb6, 0x76, 0xf5, 0x35, 0x74, 0xc5,
  0xf5, 0x72, 0x25, 0xa5, 0xc5, 0xf7, 0x94, 0x56, 0x26, 0xdc, 0x8d, 0x11,
  0x65, 0x93, 0xec, 0xde, 0x97, 0x2a, 0x23, 0xb5, 0xcc, 0x6d, 0x69, 0x85,
  0x98, 0xef, 0xbd, 0xc0, 0x68, 0x51, 0x2c, 0xaa, 0x8b, 0x6e, 0x82, 0x14,
  0x57, 0xc4, 0x28, 0xbe, 0x3a, 0x71, 0x49, 0x4f, 0x6b, 0x96, 0x42, 0x07,
  0x80, 0x00, 0xf0, 0x57, 0x63, 0xe0, 0xdc, 0x88, 0x12, 0x52, 0x81, 0x15,
  0xcd, 0x99, 0xd1, 0x05, 0xcd, 0xab, 0x66, 0x98, 0x91, 0x54, 0x59, 0xd5,
  0x5e, 0x9c, 0xda, 0x16, 0x86, 0x00, 0xdc, 0x29, 0x56, 0x1d, 0x80, 0x60,


  0x0f, 0xd4, 0x5b, 0xc9, 0xea, 0x13, 0xe8, 0x0e, 0x8b, 0xcd, 0x54, 0x5c,
  0x6b, 0xed, 0x4d, 0xab, 0x45, 0xc9, 0x70, 0x12, 0x86, 0x03, 0x5a, 0x25,
  0x80, 0xff, 0x06, 0xda, 0xe8, 0x29, 0xcb, 0x60, 0xd5, 0xcc, 0x73, 0x4c,
  0x44, 0x6e, 0x92, 0x5f, 0xf5, 0x11, 0x75, 0x05, 0x90, 0xa1, 0xa3, 0x0b,
  0x94, 0x7e, 0x15, 0xdc, 0x04, 0xa4, 0xed, 0x92, 0xea, 0x18, 0x49, 0x9c,
  0xfd, 0x1b, 0x24, 0x14, 0x0a, 0xc0, 0x40, 0xf4, 0x18, 0x5b, 0x29, 0xe0,
  0x9c, 0x5b, 0x7c, 0x95, 0xf9, 0x55, 0xd3, 0x16, 0x82, 0x92, 0xa3, 0x14,
  0x9c, 0xbc, 0x68, 0x76, 0x51, 0x32, 0x61, 0x83, 0x86, 0x43, 0x40, 0x45,

  0x90, 0xa9, 0x6f, 0x09, 0x8a, 0xd3, 0x5a, 0xa0, 0x67, 0xb9, 0xe5, 0x32,
  0x40, 0x6f, 0x7e, 0xbb, 0x2a, 0x65, 0x2f, 0x33, 0xdc, 0x67, 0x51, 0xd9,
  0x25, 0x87, 0xff, 0x37, 0x65, 0x21, 0x77, 0x00, 0xd7, 0xb8, 0x99, 0xb8,
  0x85, 0x5c, 0x83, 0x47, 0xb0, 0x68, 0xaa, 0x72, 0x75, 0x97, 0x7c, 0x95,


  0xd2, 0xb2, 0xa0, 0xd6, 0xa7, 0xd9, 0x32, 0x28, 0x4d, 0xe3, 0xf6, 0xe2,
  0xa2, 0x66, 0x73, 0xab, 0x71, 0x5d, 0x21, 0xec, 0x02, 0xde, 0x16, 0x43,
  0xac, 0x66, 0xbf, 0xc8, 0x99, 0x2c, 0x65, 0x23, 0x9c, 0x7a, 0x3d, 0x1e,
  0x9f, 0x86, 0xb6, 0x9c, 0x36, 0x36, 0xda, 0x88, 0x49, 0x80, 0xd1, 0x86,
  0xdd, 0xe8, 0x88, 0x0c, 0xfe, 0x22, 0xca, 0x39, 0x64, 0xdd, 0xd9, 0x42,
  0x31, 0x3b, 0x14, 0x47, 0x7e, 0x5a, 0xdd, 0xad, 0xc8, 0xf8, 0x92, 0x22,
  0x5c, 0xbe, 0xe6, 0x34, 0x3f, 0x06, 0x81, 0xdd, 0x58, 0xf6, 0xfc, 0xa1,
  0xf6, 0xb0, 0xd4, 0x21, 0x4b, 0x29, 0x7e, 0x4f, 0xa0, 0xc8, 0x04, 0x6e,
  0x25, 0xb2, 0x95, 0xa4, 0xce, 0x0c, 0x68, 0x2e, 0xbd, 0x3d, 0xce, 0xa4,
  0x73, 0x59, 0xa7, 0x3b, 0x06, 0x9b, 0x33, 0x64, 0x69, 0x11, 0x22, 0x22,
  0xc2, 0x29, 0xbb, 0x2a, 0xdf, 0xe5, 0x0d, 0xa9, 0xda, 0xeb, 0xde, 0x0c,
  0xdb, 0x3c, 0x21, 0x25, 0x84, 0x87, 0x22, 0x80, 0x92, 0xe1, 0x2c, 0x8f,
  0x83, 0xfd, 0xfd, 0x7b, 0x31, 0x82, 0xc4, 0x5a, 0xdd, 0x08, 0x15, 0x44,
  0xec, 0x90, 0x03, 0x1c, 0xb6, 0xa6, 0x3d, 0xcd, 0xa5, 0x60, 0xa9, 0x8b,
  0xaa, 0x66, 0x3e, 0x69, 0x21, 0x7b, 0xdc, 0x15, 0x64, 0xb6, 0xca, 0x50,
  0x5a, 0x00, 0x0c, 0x32, 0x77, 0xfb, 0x18, 0x73, 0xac, 0x9f, 0xb7, 0xde,
  0x89, 0xb6, 0x94, 0xa6, 0x09, 0xd1, 0x4b, 0xa2, 0x7f, 0x8e, 0x92, 0x3f,
  0xdf, 0x39, 0xbb, 0x1d, 0x0c, 0x91, 0xfd, 0xc1, 0x98, 0x15, 0xfb, 0xf9,
  0x79, 0xfe, 0xa3, 0x4d, 0xac, 0x3f, 0x8e, 0x03, 0xf4, 0x6f, 0xcc, 0x58,
  0x30, 0xac, 0xe1, 0x76, 0xab, 0x1a, 0xa3, 0x02, 0x4e, 0x24, 0xee, 0xb0,
  0xb2, 0xab, 0x35, 0xfa, 0x47, 0xb7, 0xc9, 0x92, 0xd7, 0x2f, 0x89, 0xb9,
  0xe0, 0x46, 0x3c, 0xe7, 0x36, 0xaa, 0x53, 0x3b, 0x0b, 0xf5, 0x69, 0x5b,
  0x4d, 0xa1, 0xd2, 0xea, 0x21, 0x0a, 0xa8, 0xbb, 0xa8, 0x11, 0x54, 0x73,
  0x4d, 0xbc, 0x0b, 0xbe, 0x86, 0xb2, 0xf0, 0x3c, 0x30, 0x84, 0x26, 0xc6,
  0x99, 0x3f, 0x5a, 0x6b, 0xd5, 0x01, 0xb1, 0xf5, 0x19, 0xab, 0x22, 0xef,
  0xeb, 0x4d, 0x9f, 0x95, 0x1e, 0x76, 0x95, 0x2d, 0xaf, 0xeb, 0xb8, 0x72,
  0xd8, 0x97, 0x13, 0xc2, 0x62, 0x70, 0x06, 0xb1, 0x73, 0x13, 0x72, 0xa1,
  0x38, 0xb2, 0x23, 0xa0, 0x09, 0xb2, 0xea, 0x68, 0x34, 0x96, 0x41, 0x22,

  0x9d, 0xc8, 0x29, 0x61, 0x9c, 0x4f, 0x39, 0xaa, 0xde, 0x3a, 0x58, 0x35,
  0xee, 0x33, 0xc6, 0x2b, 0xa9, 0x1d, 0x1c, 0x1c, 0x31, 0x6d, 0xee, 0x99,
  0x66, 0x46, 0xad, 0x6d, 0x6a, 0x58, 0xe8, 0x11, 0xf5, 0x2a, 0xb4, 0xcd,
  0x93, 0x84, 0x50, 0x53, 0xaf, 0xe1, 0xbd, 0xe6, 0xe1, 0x2d, 0x02, 0x1b,
  0xdf, 0x49, 0xae, 0x5c, 0x27, 0x3f, 0x99, 0x54, 0xe0, 0x06, 0x6c, 0x83,
  0xa2, 0xe3, 0x04, 0xde, 0x98, 0xe0, 0x70, 0x50, 0x02, 0xbf, 0xae, 0xbc,
  0x18, 0xf9, 0xd6, 0x55, 0x6e, 0x4e, 0xb5, 0xd8, 0x02, 0x30, 0xe4, 0x7a,
  0xc2, 0x98, 0xa3, 0x8d, 0x7e, 0x34, 0x58, 0xec, 0x7a, 0xe1, 0x39, 0x66,
  0xe3, 0x6d, 0xc6, 0x5b, 0x09, 0xdf, 0x83, 0xa4, 0x75, 0x21, 0x54, 0x9f,
  0xe4, 0xb0, 0xbd, 0x2b, 0xbe, 0xe7, 0x73, 0x8b, 0x7a, 0x73, 0x5d, 0x21,
  0x1e, 0xdd, 0x7c, 0x74, 0xe6, 0x1a, 0xf8, 0x6d, 0x71, 0x9c, 0xa3, 0x39,
  0x5d, 0x92, 0x13, 0x87, 0x75, 0x55, 0xda, 0xe5, 0x68, 0xd3, 0x12, 0x3a,
  0x08, 0x81, 0x6c, 0x89, 0x60, 0x0a, 0x4b, 0x6a, 0x5f, 0x7a, 0x87, 0xaa,
  0x23, 0xfb, 0x69, 0x50, 0x77, 0x00, 0x00, 0x47, 0x60, 0x88, 0x25, 0x34,
  0x7f, 0xa1, 0x63, 0xda, 0xc2, 0x69, 0x95, 0xaf, 0x1a, 0xce, 0x47, 0x90,
  0xe4, 0xea, 0x8d, 0xc0, 0x39, 0xe6, 0x6f, 0x97, 0x8b, 0x72, 0x92, 0xf2,
  0x1d, 0xb1, 0xb9, 0x4d, 0xea, 0xf1, 0x6c, 0x01, 0x16, 0x13, 0x7b, 0x23,
  0xf2, 0x8c, 0x34, 0x5c, 0x30, 0x4b, 0x1e, 0x3e, 0x47, 0x77, 0x78, 0x0a,
  0x84, 0x6e, 0xfa, 0xa0, 0xfd, 0x04, 0xc3, 0xff, 0x0d, 0xe7, 0x03, 0xb9,
  0xbd, 0x5a, 0x95, 0x8d, 0xd4, 0xb0, 0xda, 0xbb, 0x53, 0x81, 0xce, 0x05,
  0x18, 0x85, 0xd9, 0x3a, 0x6b, 0x67, 0x8a, 0x6d, 0x4b, 0x98, 0x58, 0x5a,
  0xda, 0x21, 0x5b, 0xc9, 0x76, 0x2a, 0x90, 0x70, 0x6c, 0x34, 0x0b, 0x8a,

  0x00, 0x82, 0x25, 0x6b, 0x69, 0x60, 0x8c, 0x8f, 0x1b, 0x54, 0x68, 0x14,
  0x24, 0x95, 0xdc, 0xe4, 0x34, 0xfb, 0xd6, 0xdb, 0x2b, 0x06, 0x56, 0x08,
  0x29, 0x7e, 0xce, 0x0a, 0x21, 0xfc, 0x97, 0x7c, 0x26, 0x1b, 0x76, 0xc6,
  0x47, 0x19, 0x6f, 0x9b, 0x08, 0xf6, 0xd3, 0x71, 0xf1, 0x04, 0xb6, 0x56,
  0x93, 0xd1, 0x40, 0xfe, 0xfd, 0x1d, 0x43, 0x2c, 0x52, 0xfd, 0x96, 0x22,
  0xf1, 0x00, 0xd8, 0x98, 0xda, 0xce, 0x8f, 0x79, 0x41, 0xbc, 0x32, 0x8f,
  0x6e, 0x0a, 0xe5, 0xb8, 0x2d, 0xee, 0x38, 0x8b, 0x06, 0x67, 0x0e, 0x7d,
  0x57, 0x62, 0x06, 0x4a, 0x50, 0x59, 0x33, 0xf5, 0x7e, 0x39, 0xcb, 0xd2,
  0x45, 0xac, 0x5b, 0x06, 0x4d, 0x98, 0x1c, 0xdd, 0xcc, 0xda, 0x08, 0x26,
  0xa5, 0x90, 0x90, 0x89, 0xe4, 0x58, 0x73, 0x96, 0xa1, 0x18, 0x07, 0x76,
  0x86, 0xb8, 0x55, 0x11, 0xed, 0x9a, 0xfa, 0xf7, 0xe0, 0x01, 0xd4, 0x0e,
  0x4f, 0x05, 0x91, 0x00, 0x01, 0x4f, 0x57, 0x82, 0x43, 0x98, 0x6e, 0x94,
  0x90, 0xa8, 0x0f, 0x80, 0x02, 0x90, 0x0f, 0xdf, 0x1d, 0x4e, 0x1c, 0xa9,
  0x5c, 0x17, 0x0a, 0x21, 0xa3, 0x65, 0x1b, 0x34, 0x31, 0xce, 0x81, 0x21,
  0x26, 0xb9, 0x2b, 0xf7, 0x10, 0x79, 0x16, 0xc2, 0x39, 0x56, 0xe1, 0x49,
  0x5f, 0x67, 0x9a, 0x19, 0x05, 0x53, 0x86, 0x0f, 0xa0, 0xb1, 0xc5, 0xb2,
  0x34, 0x9a, 0xf0, 0x19, 0x66, 0x32, 0x87, 0x87, 0x3d, 0xa6, 0x97, 0xf4,
  0x49, 0x17, 0x1a, 0xc3, 0x65, 0xaf, 0xd3, 0x79, 0xa6, 0xc0, 0xa9, 0xc2,
  0xbe, 0xcb, 0xa9, 0xd9, 0x42, 0x04, 0x69, 0x01, 0x4a, 0x44, 0xda, 0x51,
  0x60, 0x41, 0x33, 0xd7, 0x24, 0x2e, 0x69, 0x45, 0x2e, 0x5d, 0x04, 0x61,
  0xb7, 0xf5, 0x22, 0x5f, 0xa9, 0x7f, 0x7a, 0x90, 0x64, 0x92, 0x55, 0xb4,

  0xb8, 0x93, 0x53, 0x59, 0x0f, 0x23, 0xa6, 0x97, 0x6d, 0xe6, 0x2e, 0xf0,
  0xb7, 0x0b, 0x52, 0xfc, 0x77, 0x3a, 0xa3, 0x3f, 0xda, 0x3f, 0xc0, 0x64,
  0x1f, 0xed, 0x3f, 0xdd, 0x6d, 0x4b, 0xe5, 0x45, 0x9d, 0x0d, 0x91, 0xb4,
  0x16, 0xd7, 0x4e, 0xb9, 0x55, 0x9d, 0xf3, 0xab, 0x43, 0x13, 0xa5, 0x97,
  0x24, 0xd3, 0x6d, 0xb6, 0xae, 0xd4, 0x94, 0xa3, 0x26, 0x86, 0x64, 0x98,
  0xd6, 0x57, 0x84, 0xba, 0x18, 0x48, 0x79, 0xf7, 0x0e, 0x8c, 0x36, 0xc4,
  0x6e, 0x78, 0x9f, 0x52, 0xbc, 0x2a, 0x0d, 0xd2, 0x78, 0x1f, 0xf0, 0x1c,
  0x59, 0xa5, 0x1c, 0x60, 0x88, 0xb5, 0x33, 0x55, 0x24, 0x07, 0x4e, 0x12,
  0x93, 0xf0, 0x5d, 0xbb, 0xdd, 0xb0, 0xe5, 0x3b, 0x6f, 0xf2, 0x22, 0xaf,
  0xaf, 0xd0, 0xa6, 0xb8, 0xae, 0xd3, 0xcb, 0x2c, 0x2c, 0x70, 0x37, 0x0c,
  0xc9, 0x98, 0x4c, 0xdc, 0x46, 0xaf, 0x02, 0x32, 0x3d, 0xa5, 0x86, 0xf1,
  0xbe, 0x4b, 0xc1, 0x8a, 0xf4, 0xd8, 0x03, 0x32, 0x9a, 0x5b, 0x66, 0x8c,
  0x5e, 0xf2, 0xda, 0x6b, 0x00, 0xd9, 0xd7, 0xff, 0x91, 0xba, 0x91, 0x01,
  0x22, 0x8b, 0x7b, 0x03, 0x71, 0x73, 0xa0, 0x58, 0xd7, 0x17, 0xa3, 0x6a,
  0x9b, 0xc3, 0x3d, 0x1b, 0x1b, 0x16, 0xe4, 0x7a, 0x15, 0x23, 0x05, 0xd0,
  0xfc, 0xec, 0x7b, 0xa3, 0x8b, 0x8e, 0x9e, 0xd9, 0x1f, 0xef, 0x3e, 0xac,

  0x61, 0xe4, 0x61, 0x47, 0x37, 0xa3, 0x5c, 0x5c, 0x89, 0x44, 0xc0, 0x54,
  0xf9, 0x82, 0xff, 0x11, 0xf7, 0x75, 0xa0, 0xae, 0xd5, 0x58, 0x91, 0x6f,
  0x5f, 0x02, 0x52, 0xca, 0x21, 0x3c, 0x7b, 0x69, 0xbb, 0xad, 0x1a, 0x3d,
  0x74, 0xcf, 0x24, 0x55, 0x35, 0x0a, 0xf0, 0x67, 0x31, 0x79, 0x39, 0x83,
  0xd0, 0x45, 0xdd, 0x54, 0x97, 0x33, 0x82, 0xb7, 0x21, 0xc3, 0x94, 0xa0,
  0x77, 0x92, 0xd3, 0x8c, 0x9b, 0xe5, 0x24, 0xdb, 0x5f, 0x6e, 0x47, 0xaa,
  0xf9, 0xb6, 0x5f, 0x78, 0x08, 0xe3, 0xb5, 0x6b, 0xc4, 0xb5, 0xfd, 0x47,

  0x4a, 0x4a, 0x26, 0x30, 0x15, 0xfe, 0xa6, 0x9c, 0x01, 0xe7, 0xd7, 0xc6,
  0xc3, 0xfa, 0x9a, 0xd2, 0x27, 0xf8, 0x80, 0xed, 0xe4, 0x21, 0x6e, 0x7c,
  0x4d, 0xd8, 0xeb, 0x9d, 0x75, 0xab, 0x3e, 0xb7, 0x1d, 0x54, 0xfb, 0x51,
  0xea, 0x3e, 0xa3, 0xf5, 0x48, 0x77, 0x70, 0xd7, 0xc6, 0x94, 0xe7, 0xc4,
  0x93, 0x81, 0xaf, 0x72, 0x3a, 0xcd, 0x49, 0x73, 0xc1, 0xd5, 0x37, 0xbf,

  0xbc, 0xbc, 0x8c, 0xa6, 0x38, 0x99, 0x2d, 0xa0, 0x83, 0xa7, 0x35, 0xcf,
  0xb3, 0xb4, 0x81, 0xbe, 0x41, 0x72, 0xbe, 0x3f, 0x79, 0xda, 0xe9, 0xee,
  0x91, 0x67, 0xbc, 0x55, 0xbc, 0xf0, 0xeb, 0x53, 0xe2, 0x54, 0x00, 0x22,
  0x60, 0x1a, 0x20, 0x44, 0x4f, 0xfc, 0xcc, 0x7a, 0xbb, 0xe6, 0xa9, 0x21,
  0x8a, 0x3b, 0x09, 0x2d, 0x2f, 0x50, 0x4f, 0xc0, 0x1c, 0x24, 0x5b, 0x06,
  0x3c, 0x6c, 0xa1, 0xa9, 0xb9, 0x9c, 0xc1, 0x4e, 0xbd, 0x44, 0x38, 0xd9,
  0x99, 0xf6, 0x99, 0xe5, 0x81, 0x4b, 0x7a, 0x4f, 0xb4, 0xa1, 0x86, 0xcb,

  0x65, 0xef, 0x7a, 0x45, 0xfc, 0xcc, 0x76, 0x51, 0x55, 0xd4, 0x06, 0x44,
  0x72, 0xbe, 0x30, 0x0c, 0xcf, 0x57, 0x99, 0xf8, 0xc5, 0x8c, 0x5d, 0x1f,
  0x25, 0x4c, 0x08, 0xc3, 0x8d, 0xf6, 0x70, 0x49, 0xb8, 0xa2, 0x60, 0x4a,
  0x30, 0x36, 0x60, 0x32, 0x65, 0x42, 0x4d, 0xda, 0x0e, 0x8f, 0x3e, 0xff,
  0x7c, 0x14, 0xc5, 0x39, 0xe5, 0xf2, 0x6c, 0x43, 0x84, 0xb4, 0x53, 0x0e,
  0x13, 0x73, 0x60, 0xd1, 0x8d, 0xe9, 0xfb, 0x44, 0x61, 0x28, 0x1f, 0x2b,
  0x97, 0x04, 0x5d, 0x44, 0xcc, 0x71, 0xbd, 0x08, 0xcd, 0x7b, 0x84, 0x1e,
  0x97, 0xa4, 0x56, 0x08, 0x17, 0x83, 0x7a, 0x45, 0x5c, 0x63, 0x99, 0xf7,
  0xa8, 0x74, 0x99, 0xa4, 0xe7, 0x71, 0x2a, 0xa7, 0x40, 0x03, 0x4a, 0x3e,
  0x29, 0xa7, 0xfd, 0x1a, 0xad, 0x01, 0x39, 0xee, 0x9c, 0xf5, 0xc1, 0xdb,
  0xb1, 0xdd, 0x53, 0x0e, 0xba, 0x9d, 0x68, 0xf4, 0x73, 0x92, 0x59, 0x7c,
  0x05, 0xee, 0xbc, 0xd5, 0x41, 0xc0, 0xe1, 0x92, 0xf1, 0x82, 0x6a, 0xc2,
  0xa8, 0xd3, 0x85, 0xf9, 0x40, 0x67, 0x38, 0x54, 0x48, 0x5f, 0x66, 0x4d,
  0x58, 0xc7, 0xe4, 0x65, 0xf7, 0x6e, 0x18, 0x3c, 0x66, 0x13, 0x49, 0x19,
  0x56, 0xf2, 0x62, 0x24, 0x91, 0x84, 0x59, 0x3e, 0xd7, 0x4b, 0x6a, 0xbb,
  0x43, 0x7c, 0x89, 0xd3, 0x78, 0x21, 0x5b, 0x2f, 0x65, 0x89, 0x5f, 0x46,
  0x31, 0xce, 0x24, 0xc5, 0x18, 0x80, 0x5b, 0x4d, 0x63, 0xd4, 0x6a, 0xc7,

  0xbb, 0x91, 0x45, 0xce, 0xbd, 0x08, 0xb8, 0x76, 0x87, 0x37, 0x98, 0xf3,
  0x36, 0x17, 0x31, 0x90, 0x8d, 0x17, 0x76, 0x50, 0x69, 0x75, 0x42, 0x89,
  0xfc, 0x34, 0x95, 0xd8, 0x4e, 0x28, 0x4e, 0x39, 0xf1, 0x07, 0xf3, 0x74,
  0x60, 0xf5, 0xd0, 0xbb, 0xde, 0x3e, 0x85, 0x67, 0xef, 0x47, 0xd6, 0x04,
  0x51, 0x83, 0xb7, 0xd8, 0x25, 0x80, 0xfb, 0xd1, 0x19, 0x59, 0xa9, 0xd1,
  0x84, 0xe3, 0xdd, 0xb9, 0x69, 0xa9, 0xae, 0x92, 0x1b, 0x94, 0x75, 0x59,
  0x66, 0x3c, 0x4b, 0xc0, 0x6a, 0xe8, 0xae, 0x92, 0xaf, 0xb2, 0xa9, 0xd6,

  0x53, 0x52, 0x2c, 0x61, 0x94, 0xe3, 0x53, 0xb1, 0x6e, 0x5c, 0xea, 0x5e,
  0xb5, 0x2b, 0x46, 0xcf, 0x3c, 0x9c, 0x17, 0x76, 0x59, 0x00, 0x01, 0xd9,
  0xc2, 0x13, 0xbc, 0x48, 0xce, 0x50, 0x1d, 0x46, 0xfb, 0xb8, 0x66, 0x70,
  0xb7, 0xd4, 0xf9, 0x3f, 0x58, 0x29, 0x93, 0xd4, 0x5e, 0x85, 0x47, 0x83,
  0x83, 0x23, 0x23, 0xc0, 0xfe, 0xe4, 0x35, 0x75, 0x19, 0x65, 0x51, 0x4e,
  0xf4, 0x16, 0xf0, 0x69, 0x3f, 0xb1, 0x9d, 0x25, 0x12, 0xa9, 0x71, 0x55,
  0x76, 0xb9, 0x26, 0x29, 0x87, 0x7d, 0xda, 0x51, 0x38, 0x54, 0x7d, 0x62,


  0x95, 0xaf, 0xd0, 0xc9, 0xc4, 0xd8, 0x73, 0x41, 0xae, 0xbc, 0x79, 0x8b,
  0xfb, 0x87, 0xae, 0x0b, 0xb3, 0x5d, 0xcd, 0x9a, 0x62, 0x90, 0x82, 0x07,
  0x63, 0xf8, 0xd7, 0xdf, 0xe0, 0xfa, 0x2b, 0x65, 0xe9, 0xdc, 0x7b, 0x63,
  0x66, 0x4d, 0xef, 0x6c, 0x1e, 0xd8, 0x2e, 0x19, 0x32, 0x5f, 0x00, 0x64,
  0x46, 0xa9, 0x24, 0x8d, 0x32, 0x00, 0x6e, 0x34, 0x47, 0x8e, 0x98, 0x3f,
  0x52, 0x9c, 0x72, 0x9a, 0x39, 0x18, 0x57, 0x6c, 0x0a, 0xaa, 0xaa, 0x83,
  0x5b, 0x0d, 0x44, 0x44, 0xd5, 0x9d, 0x7c, 0x9c, 0x4c, 0x69, 0x76, 0x32,

  0x60, 0xe4, 0x57, 0x2e, 0x6f, 0x12, 0xd0, 0x9f, 0xb4, 0xe6, 0xf2, 0x89,
  0x3a, 0x6c, 0xc0, 0x0a, 0x21, 0xc0, 0x5a, 0xf5, 0xdf, 0xac, 0xc1, 0x4b,
  0x9c, 0x2f, 0x02, 0x9f, 0x04, 0xdc, 0xd8, 0xe7, 0x9c, 0xa7, 0x81, 0x76,
  0x76, 0xc2, 0xd0, 0x6c, 0x5c, 0x42, 0xca, 0xa3, 0x58, 0x45, 0xdc, 0x36,
  0xac, 0x93, 0xf6, 0x7e, 0x5b, 0x2e, 0x6e, 0x0c, 0xb3, 0xc7, 0xd9, 0xf9,
  0x60, 0xd5, 0x7c, 0x4d, 0x2c, 0xd2, 0xa5, 0xe5, 0x21, 0xa4, 0x52, 0x55,
  0xa9, 0xe1, 0x98, 0x7f, 0x5b, 0x5d, 0xf6, 0x80, 0x2a, 0x72, 0xcf, 0x1c,
  0x63, 0x2b, 0x84, 0x4d, 0xba, 0x40, 0x87, 0xc3, 0x37, 0x89, 0xcc, 0xe7,
  0x8b, 0x2f, 0x5b, 0xc3, 0x69, 0xe3, 0x0a, 0x1f, 0x97, 0x5d, 0x30, 0x3e,
  0xa6, 0x97, 0xf9, 0x3d, 0x9b, 0xc0, 0x4d, 0x0d, 0x6c, 0x3a, 0x71, 0x7d,

  0x55, 0x66, 0x72, 0x76, 0x05, 0x4c, 0x60, 0xdb, 0x83, 0xc9, 0xac, 0xab,
  0x8e, 0x76, 0xd4, 0x50, 0x8d, 0xb7, 0x7f, 0xda, 0x90, 0xeb, 0xff, 0x51,
  0x5e, 0x15, 0xf4, 0x0f, 0xfa, 0x02, 0x7d, 0xe0, 0x8b, 0x83, 0x83, 0xe8,
  0xcc, 0x7b, 0xe7, 0xcb, 0x13, 0xd6, 0x19, 0x93, 0x30, 0x92, 0x14, 0x51,
  0x8f, 0xb7, 0xb5, 0x4c, 0xff, 0x11, 0xaa, 0xe6, 0x42, 0x37, 0x1b, 0xee,
  0x10, 0xf0, 0xc8, 0xbc, 0x57, 0x39, 0xfd, 0x2e, 0xca, 0x12, 0x73, 0x2b,
  0x1f, 0x16, 0x21, 0xb8, 0x85, 0xd1, 0xd5, 0xe8, 0x48, 0xfa, 0x17, 0xbf,
  0x45, 0xb1, 0xa0, 0xbb, 0x2f, 0x5e, 0x5c, 0xad, 0x2f, 0x33, 0xf0, 0xcd,
  0xe6, 0xb6, 0xd9, 0x7a, 0xd0, 0xca, 0xc9, 0x4b, 0xc1, 0x6e, 0x0a, 0x4e,
  0xb1, 0x6e, 0xbc, 0x64, 0x23, 0xd4, 0x2c, 0xb4, 0x54, 0x08, 0x4e, 0xc5,
  0x24, 0x4b, 0x49, 0x43, 0x5d, 0xdd, 0xba, 0x22, 0x56, 0x46, 0x07, 0xbc,
  0x69, 0x82, 0x7b, 0xe1, 0x2a, 0xed, 0x37, 0xac, 0xe0, 0x26, 0x9b, 0x7c,
  0xf1, 0x25, 0xf9, 0xb6, 0x6e, 0xd1, 0x3f, 0x80, 0xb5, 0x5a, 0xda, 0xba,
  0x3d, 0xb4, 0x13, 0x48, 0xbc, 0x45, 0x74, 0x07, 0x29, 0xab, 0xfe, 0x61,
  0xbd, 0x3a, 0x27, 0x6f, 0xc8, 0x79, 0x59, 0x6e, 0x1c, 0x51, 0x7d, 0x37,
  0xd8, 0x13, 0x2f, 0x99, 0x91, 0x53, 0xfc, 0x5c, 0x0d, 0x27, 0x13, 0x04,
  0xe4, 0x4c, 0x4b, 0x5c, 0xc6, 0x6a, 0xea, 0xc9, 0x43, 0x26, 0xfd, 0xcc,
  0x55, 0xe2, 0x7c, 0x31, 0x40, 0x99, 0x4f, 0xbc, 0x63, 0x8c, 0x5b, 0x03,
  0x5f, 0x47, 0x40, 0x20, 0xd1, 0x5f, 0xff, 0x68, 0x5f, 0xa7, 0xff, 0x98,
  0xdb, 0x0c, 0x44, 0xee, 0x0d, 0xab, 0xa1, 0x50, 0xa0, 0xbe, 0xb3, 0x87,
  0xf0, 0x93, 0x6d, 0x04, 0xb5, 0x3d, 0x60, 0x45, 0xfb, 0x8f, 0xdb, 0x70,
  0xe3, 0x6a, 0x90, 0x1a, 0xed, 0x99, 0xc0, 0xe3, 0x66, 0x65, 0xa0, 0xd6,
  0x52, 0x36, 0x26, 0xf7, 0x6f, 0xc2, 0xec, 0x7b, 0x26, 0x4e, 0x33, 0xd7,
  0xa9, 0xff, 0xb0, 0x65, 0x27, 0xff, 0xc3, 0x96, 0x9b, 0xfe, 0x0f, 0x5b,

  0x6e, 0x01, 0x3f, 0x6c, 0x11, 0x0c, 0x25, 0x2d, 0x22, 0x34, 0x88, 0x7f,
  0xea, 0xa1, 0x6f, 0xf3, 0x57, 0xdd, 0x47, 0xbd, 0x6f, 0x7a, 0x9f, 0xdc,

  0xda, 0xde, 0xb4, 0x69, 0x7e, 0x6c, 0x08, 0x75, 0x31, 0xdd, 0x3d, 0x34,
  0xec, 0xba, 0xb5, 0x4d, 0x6e, 0x5b, 0xc8, 0x38, 0x0b, 0x3a, 0x78, 0x7b,
  0x0f, 0xd0, 0x8e, 0xbb, 0xe6, 0x54, 0x5e, 0xd3, 0x05, 0x8b, 0x62, 0xa9,
  0xe7, 0xa0, 0xbd, 0x9f, 0x03, 0x79, 0x64, 0x5f, 0x0f, 0xe4, 0xcf, 0x7f,
  0x33, 0x5f, 0x80, 0xfe, 0x8f, 0x31, 0xe4, 0x56, 0x03, 0xc0, 0x46, 0xf2,
  0xf2, 0x90, 0x30, 0x5d, 0x70, 0xd4, 0x92, 0xc5, 0xdf, 0x9c, 0x2b, 0x8d,
  0x98, 0x24, 0x82, 0x5c, 0xfa, 0x65, 0x8e, 0x56, 0x65, 0x66, 0x55, 0x0b,
  0xb6, 0x50, 0xf7, 0x48, 0x2a, 0x20, 0xf7, 0x15, 0x1d, 0xc4, 0x6a, 0x98,
  0xe8, 0x62, 0xbc, 0x4a, 0x1f, 0x36, 0xde, 0x87, 0x7e, 0x92, 0x26, 0x45,
  0x7c, 0x51, 0x56, 0xf5, 0x17, 0x5b, 0x15, 0x75, 0x7e, 0x4d, 0x2e, 0x2b,
  0xa3, 0xc1, 0xfe, 0x91, 0x48, 0x6b, 0x6d, 0x0e, 0xcb, 0xdd, 0xd3, 0xdb,
  0xe1, 0xf2, 0xce, 0xcc, 0x7b, 0xfb, 0x27, 0x51, 0x86, 0xc7, 0xd2, 0x66,

  0x88, 0xd2, 0x1b, 0xe6, 0xb8, 0x4c, 0xba, 0x79, 0x0a, 0x7c, 0x75, 0xbd,
  0x4b, 0x29, 0xbf, 0xff, 0x22, 0x06, 0x73, 0x17, 0x2c, 0xc4, 0xe3, 0xbc,
  0x30, 0xd5, 0xbe, 0x38, 0xfb, 0xe6, 0x8f, 0x3a, 0xc0, 0x0f, 0x5b, 0xdf,
  0x0f, 0xf9, 0xa7, 0xa8, 0x17, 0x7e, 0x9e, 0x9c, 0x7d, 0x43, 0xd4, 0xfd,
  0xd3, 0x18, 0xd8, 0xa6, 0x0f, 0x7c, 0xc9, 0x7f, 0x01, 0x65, 0x6f, 0x1a,
  0xf6, 0xc2, 0xe5, 0x49, 0x7c, 0x41, 0x0d, 0x8c, 0x51, 0x67, 0x04, 0x2b,
  0x7c, 0xb5, 0xa2, 0xca, 0x21, 0xad, 0x8f, 0x6d, 0xb8, 0x3e, 0x16, 0x51,
  0xa3, 0x74, 0x52, 0x72, 0x8a, 0x74, 0x13, 0x62, 0x63, 0x03, 0x9b, 0x17,
  0x67, 0x2b, 0xbe, 0xab, 0x15, 0x1c, 0x17, 0x50, 0x87, 0xdb, 0x69, 0x06,
  0xed, 0x5a, 0xc6, 0x41, 0x72, 0x1c, 0x69, 0x82, 0xe0, 0xc0, 0x8d, 0xf8,
  0x6f, 0xd0, 0xcb, 0x6c, 0x6f, 0x6e, 0x6a, 0xa8, 0x96, 0x56, 0x99, 0x76,
  0xc8, 0x91, 0x9e, 0x7e, 0x08, 0x30, 0x19, 0x82, 0x89, 0x84, 0x02, 0x24,
  0x3a, 0x29, 0x89, 0xe8, 0xf3, 0x72, 0x21, 0x5d, 0xdc, 0x6b, 0x43, 0xf5,
  0x7c, 0xc0, 0xb6, 0x8d, 0x9e, 0xd1, 0x38, 0x68, 0x2b, 0x24, 0x52, 0x21,
  0x9f, 0x8d, 0xa8, 0x1c, 0x12, 0x4d, 0x64, 0x6f, 0x9c, 0x34, 0x6d, 0x03,


  0x60, 0x18, 0x13, 0xfe, 0x1f, 0xc9, 0xe8, 0x9f, 0x64, 0x70, 0x3e, 0xd9,
  0xaa, 0xcc, 0xa1, 0x38, 0x87, 0x23, 0x1e, 0x9c, 0xc4, 0xde, 0x1b, 0xbd,
  0x38, 0x9c, 0x06, 0xa1, 0xa5, 0x9a, 0x94, 0x27, 0xf6, 0x35, 0xa9, 0x84,
  0x92, 0xc8, 0xae, 0x9d, 0x6d, 0x48, 0xbc, 0xc4, 0x17, 0x8b, 0x3b, 0xac,
  0x6a, 0x44, 0x78, 0xdb, 0x92, 0xdf, 0x89, 0x2f, 0x59, 0x1f, 0x4b, 0x45,
  0xdf, 0x92, 0xc3, 0x1a, 0x05, 0x2f, 0x7c, 0x2f, 0x49, 0x41, 0xc3, 0x83,
  0xe7, 0x5e, 0x97, 0x22, 0xfe, 0x59, 0x7c, 0x78, 0x1f, 0x04, 0x46, 0x03,
  0xc4, 0xb5, 0x6c, 0xff, 0x86, 0xf1, 0x0f, 0xed, 0xf8, 0x9f, 0x45, 0x70,
  0x57, 0x18, 0x19, 0x25, 0xfe, 0xd9, 0x0b, 0x97, 0x04, 0xa8, 0x5e, 0x54,
  0xeb, 0xc9, 0x68, 0xf9, 0x10, 0x14, 0xf2, 0x99, 0x31, 0x59, 0x38, 0xdc,
  0x10, 0x36, 0x79, 0x60, 0xb8, 0x4a, 0x98, 0x81, 0x58, 0x87, 0xd9, 0xc6,
  0xae, 0x89, 0xc8, 0xa2, 0x5e, 0x08, 0xab, 0x5c, 0x12, 0x04, 0xeb, 0xec,
  0xb9, 0xeb, 0x79, 0xc9, 0x20, 0x12, 0xb9, 0x9f, 0x5f, 0xef, 0xea, 0x68,
  0x83, 0xb2, 0xc6, 0x16, 0xc0, 0x71, 0xf0, 0x29, 0xc3, 0x8a, 0x19, 0x7a,
  0xc9, 0x6b, 0xc8, 0xb8, 0xbd, 0xb3, 0x2d, 0x4e, 0x15, 0xfa, 0x10, 0xb5,
  0x8a, 0x44, 0x22, 0x14, 0x8a, 0xb1, 0x53, 0x60, 0x66, 0x88, 0x2f, 0x67,

  0x18, 0xd1, 0x3a, 0x9e, 0x83, 0xb5, 0xdb, 0x3b, 0xc1, 0x40, 0x41, 0xc0,

  0x09, 0x52, 0xbb, 0x99, 0x41, 0xbd, 0x5a, 0xe0, 0x40, 0xa1, 0x91, 0xec,
  0x6d, 0xb1, 0x0c, 0xc6, 0xb6, 0xa9, 0xcb, 0x56, 0x4c, 0x93, 0xed, 0x2f,
  0x76, 0xb7, 0xed, 0xd2, 0xfa, 0xcd, 0xa2, 0xa0, 0xe3, 0xa3, 0x06, 0x21,
  0x6d, 0x1f, 0x58, 0x78, 0x96, 0x96, 0x94, 0xfb, 0x90, 0x0d, 0x71, 0xa0,
  0x51, 0x04, 0xbd, 0xba, 0x11, 0x6f, 0x27, 0x12, 0xcb, 0x71, 0x3b, 0x19,
  0xeb, 0x85, 0x49, 0x3c, 0x5d, 0x34, 0x94, 0xaa, 0x8f, 0x62, 0x0a, 0x46,
  0xfb, 0xab, 0x9f, 0x7b, 0xfa, 0x78, 0xe4, 0x7a, 0x52, 0x20, 0x07, 0x4d,




  0x14, 0xc4, 0x25, 0xe2, 0x79, 0x34, 0x36, 0xa9, 0xde, 0xdb, 0x5f, 0xec,
  0xb0, 0xc0, 0x72, 0xfe, 0x34, 0xef, 0xdb, 0xdb, 0xc9, 0x0f, 0xf1, 0xba,
  0xd6, 0x84, 0xdf, 0xf5, 0x2c, 0x04, 0x21, 0xdb, 0xfb, 0xde, 0x48, 0x5e,
  0x4c, 0xca, 0xd9, 0xdd, 0x9f, 0x10, 0x76, 0x92, 0x57, 0x5e, 0xec, 0xe1,
  0x47, 0x1d, 0x95, 0xb9, 0x6f, 0x20, 0x8c, 0x62, 0x8e, 0x0a, 0x7f, 0x7e,
  0x49, 0x8f, 0xab, 0xc5, 0xb0, 0x9d, 0x8c, 0x46, 0x86, 0x09, 0xd5, 0x4b,
  0xb4, 0xe3, 0xda, 0x20, 0x58, 0x18, 0xef, 0x0e, 0x22, 0x96, 0x94, 0x14,
  0x81, 0x2c, 0x81, 0x67, 0x47, 0xad, 0x6c, 0x76, 0x42, 0xf2, 0xaf, 0xaa,
  0x2f, 0x46, 0xc9, 0x4b, 0x9b, 0x25, 0x93, 0x45, 0x30, 0xb2, 0xe9, 0x1a,
  0xb3, 0xec, 0xf0, 0x4a, 0xc2, 0x3f, 0x9f, 0xe4, 0xe2, 0x66, 0x9f, 0x95,
  0x2d, 0xdc, 0x4d, 0xc6, 0x74, 0x30, 0xc2, 0x3d, 0x8e, 0x94, 0x36, 0x2d,
  0x2b, 0x8e, 0x11, 0xb1, 0x3b, 0xdd, 0xda, 0x2f, 0x32, 0xb5, 0xe1, 0xb1,
  0x00, 0x73, 0x29, 0x1b, 0x1d, 0x24, 0x4f, 0xed, 0x97, 0x22, 0x58, 0xf5,
  0x6c, 0xf1, 0xd7, 0xc9, 0xe7, 0x43, 0x7a, 0xca, 0xeb, 0x16, 0x2b, 0x74,
  0xdf, 0xce, 0xe0, 0x18, 0x88, 0x52, 0x38, 0x44, 0x62, 0x52, 0xa4, 0x20,
  0x07, 0x92, 0x60, 0x92, 0xd6, 0xd9, 0x93, 0x47, 0xaa, 0x5e, 0xf2, 0x2e,

  0xd5, 0xea, 0xbf, 0x6d, 0x39, 0x61, 0x59, 0x0e, 0x79, 0x0b, 0xea, 0x5e,
  0x04, 0x14, 0x16, 0x93, 0x72, 0x46, 0xcd, 0xbf, 0x38, 0x07, 0x97, 0xa4,
  0xa9, 0x51, 0x24, 0x2f, 0x1b, 0x54, 0x14, 0x3d, 0x7d, 0xe2, 0x4d, 0xfa,
  0x1e, 0x77, 0x45, 0x87, 0x93, 0xca, 0x0a, 0xbb, 0x2b, 0x52, 0x7b, 0xdd,
  0x7c, 0x37, 0xb8, 0x97, 0xe4, 0xeb, 0x60, 0xe0, 0x31, 0x59, 0xa3, 0x75,
  0x30, 0xde, 0x77, 0x8d, 0xfc, 0x4b, 0xf0, 0x47, 0x25, 0x9c, 0xee, 0xa7,
  0x37, 0x12, 0xb5, 0x67, 0x22, 0xe9, 0xfb, 0x3c, 0x09, 0x26, 0xec, 0xfb,
  0xe9, 0x9a, 0x82, 0x08, 0xf3, 0x75, 0x05, 0xe9, 0x23, 0x8f, 0xb1, 0x92,

  0xa0, 0x75, 0x4a, 0xa2, 0xa7, 0xbf, 0x7d, 0xf9, 0xee, 0xc3, 0xcb, 0xd3,
  0x87, 0x77, 0x05, 0x6a, 0x35, 0x9a, 0xbb, 0x27, 0x07, 0xd6, 0x07, 0x33,
  0xe8, 0x40, 0xfd, 0xc4, 0xa1, 0x0c, 0x82, 0xa8, 0x03, 0x41, 0x1b, 0x74,
  0xb3, 0xf5, 0xa8, 0x68, 0x8c, 0xe8, 0x8a, 0x92, 0x44, 0xe2, 0x10, 0x40,
  0x9c, 0xe7, 0x2b, 0x21, 0x72, 0x2f, 0x73, 0x33, 0xad, 0xa5, 0x27, 0xe3,
  0x96, 0xbe, 0x4f, 0xaf, 0x6f, 0x49, 0xf2, 0xb8, 0xad, 0x13, 0x8f, 0x51,

  0xb9, 0xad, 0x6d, 0xb7, 0xa9, 0x57, 0xda, 0xd4, 0x5a, 0x04, 0x5a, 0xcb,

  0xfb, 0x56, 0xce, 0xe7, 0x2e, 0x7b, 0xb6, 0x1b, 0xe1, 0x7b, 0xf5, 0xaa,
  0xbf, 0xe4, 0xf6, 0xd7, 0x44, 0x4b, 0xed, 0x64, 0xa4, 0x63, 0x1b, 0x1d,
  0x77, 0x1f, 0x36, 0x25, 0x57, 0xa3, 0xbf, 0x90, 0xb9, 0xc5, 0x77, 0xd5,
  0x4c, 0xd0, 0x47, 0x0e, 0x50, 0x15, 0x17, 0xed, 0x66, 0xc7, 0xc7, 0xef,
  0xb1, 0x59, 0xe7, 0x2f, 0xc7, 0x63, 0x2b, 0x0b, 0x6b, 0x49, 0x4b, 0x18,
  0x04, 0xc6, 0x18, 0xd4, 0x48, 0xbf, 0xed, 0xc9, 0x28, 0xb1, 0x9d, 0x62,
  0x25, 0x9d, 0x13, 0xb1, 0x1f, 0x63, 0xf3, 0x5d, 0xac, 0x97, 0xe6, 0xc2,
  0x18, 0x8d, 0x77, 0xb6, 0x5d, 0x4b, 0x28, 0xb6, 0x4b, 0x78, 0xc4, 0xb9,
  0x44, 0x93, 0xc2, 0x59, 0x13, 0xed, 0xd1, 0xd9, 0x8f, 0x35, 0x86, 0x44,
  0x5c, 0x9e, 0x83, 0xd7, 0x3e, 0xc4, 0xed, 0x20, 0xee, 0x4c, 0xdf, 0x1a,
  0x9f, 0x5c, 0x1c, 0x9b, 0xed, 0xfb, 0x70, 0xf1, 0xf5, 0x96, 0xa4, 0x2e,
  0x74, 0x51, 0x30, 0xe0, 0xb4, 0xa7, 0x16, 0xaf, 0xd7, 0xb6, 0x5a, 0xb6,
  0x62, 0x47, 0x8a, 0xb1, 0x16, 0x62, 0x1a, 0xb8, 0xfb, 0xe8, 0x68, 0xc3,
  0x29, 0x3d, 0x1e, 0x3d, 0xee, 0x9e, 0x52, 0x3f, 0x5c, 0x35, 0x03, 0x18,
  0x07, 0xe4, 0x2e, 0xa8, 0xc8, 0x94, 0x3d, 0xb5, 0xe7, 0x9a, 0xa7, 0x20,
  0xc8, 0x06, 0x74, 0x9d, 0x94, 0x4b, 0xe1, 0x03, 0xf4, 0x3c, 0x85, 0x12,
  0xf4, 0xe2, 0xe2, 0xc0, 0x6e, 0xb6, 0x70, 0x43, 0xe2, 0xed, 0xe5, 0x70,
  0xa8, 0x39, 0xb1, 0xb4, 0x9a, 0xd9, 0xb2, 0xd0, 0x50, 0x3f, 0xd4, 0x5c,
  0x3f, 0x6a, 0xc9, 0x64, 0x48, 0x40, 0x5b, 0xb2, 0xb4, 0xaa, 0x75, 0xc3,
  0xde, 0x0a, 0x2e, 0x9f, 0x2f, 0x0e, 0xa6, 0x0d, 0x2f, 0x3a, 0xba, 0xb4,
  0x58, 0x54, 0xe8, 0x8d, 0xd9, 0x8f, 0x71, 0xfc, 0x67, 0xda, 0x57, 0xc9,
  0x17, 0x79, 0xc1, 0x7f, 0xc6, 0xe9, 0x1d, 0x22, 0xb7, 0x2a, 0x17, 0xec,
  0x40, 0x94, 0x37, 0x38, 0x89, 0x93, 0x8b, 0x5d, 0xa4, 0x0e, 0xa3, 0x42,
  0xc2, 0xa1, 0x84, 0x68, 0xd0, 0xd4, 0x3c, 0x6c, 0xbb, 0xb5, 0x33, 0xde,
  0xb5, 0x9e, 0xd6, 0x0b, 0x44, 0x14, 0x31, 0x5a, 0xa4, 0x8a, 0xc9, 0x43,
  0x56, 0x14, 0xf5, 0x32, 0x86, 0xee, 0xe3, 0xdd, 0xde, 0xd0, 0x62, 0x02,
  0xa3, 0x9e, 0xde, 0xcc, 0x7a, 0xb0, 0xea, 0xe0, 0xd6, 0x42, 0x12, 0x19,
  0x6c, 0x40, 0xae, 0x99, 0x7a, 0xf5, 0xdd, 0x6b, 0xaf, 0xd9, 0x8e, 0xe6,

  0xa9, 0x31, 0xbd, 0x88, 0x42, 0xda, 0x87, 0x06, 0x97, 0xb9, 0x64, 0xcb,
  0x11, 0x82, 0xaa, 0xb3, 0x2c, 0x5b, 0x59, 0x68, 0xf3, 0x1c, 0x35, 0x36,
  0x79, 0x8d, 0x20, 0xaa, 0xc0, 0xca, 0xa3, 0x9d, 0x5c, 0xcf, 0xec, 0x84,

  0x75, 0x68, 0x8b, 0x48, 0xd8, 0x3b, 0xd4, 0x3c, 0x8c, 0xc2, 0xb8, 0x07,
  0x4f, 0x8f, 0x3e, 0x37, 0xb2, 0xf9, 0x0e, 0x58, 0xe3, 0x6e, 0xcb, 0x18,
  0x0b, 0xb8, 0x1f, 0xe7, 0x4f, 0x8c, 0x1a, 0x4d, 0xef, 0x15, 0x38, 0x85,
  0xa4, 0x26, 0x33, 0x02, 0x0e, 0x2a, 0x29, 0x6e, 0x0e, 0xb1, 0x68, 0xcc,
  0x26, 0xca, 0x86, 0x49, 0xd2, 0x1d, 0xf6, 0x89, 0x13, 0xc4, 0x46, 0x1e,
  0x01, 0x53, 0x83, 0x12, 0xea, 0xa4, 0x66, 0x58, 0xca, 0xfb, 0xe3, 0x8b,
  0xf7, 0xe6, 0x8f, 0xf1, 0xc5, 0xd9, 0xfb, 0x1e, 0x64, 0xc6, 0x86, 0x61,
  0x3a, 0x68, 0xd3, 0x34, 0x5d, 0x05, 0xdb, 0xdc, 0x46, 0x6d, 0x43, 0x26,
  0x34, 0xb3, 0x9d, 0x3a, 0x0a, 0xf4, 0xe5, 0xe1, 0x7d, 0xd5, 0xa3, 0xd6,
  0x42, 0xe7, 0x46, 0x3e, 0x6c, 0x5c, 0x18, 0x9f, 0xf9, 0x66, 0x0a, 0xc1,
  0x82, 0x89, 0x18, 0x69, 0xc5, 0x96, 0xd1, 0x63, 0xb6, 0xc6, 0x68, 0x23,
  0xe7, 0xbf, 0x83, 0xb1, 0xd7, 0xf6, 0xd4, 0x3d, 0x68, 0x86, 0x9c, 0x9a,
  0xcb, 0xcd, 0x59, 0x5c, 0xb7, 0x76, 0xc3, 0x69, 0x15, 0x0a, 0x60, 0x2b,
  0xd9, 0x81, 0x03, 0x59, 0xf4, 0x92, 0x7b, 0xe8, 0xd7, 0xe8, 0x42, 0xbb,


  0x6e, 0xc1, 0x75, 0xb9, 0xcc, 0xd8, 0xc3, 0xcf, 0xc9, 0xb9, 0xca, 0x9c,
  0x58, 0xb6, 0x30, 0x2e, 0x6d, 0x12, 0xc3, 0xc3, 0xb0, 0x10, 0x62, 0x74,
  0xca, 0xdb, 0x16, 0x51, 0xa0, 0x14, 0xea, 0xe0, 0x73, 0xc9, 0x8c, 0xa5,
  0xda, 0x00, 0x9b, 0x6d, 0x5b, 0x67, 0xe5, 0x61, 0x8b, 0xb5, 0x99, 0xf7,
  0x41, 0x97, 0xc9, 0x10, 0x28, 0x43, 0x9c, 0xb3, 0xa0, 0x8f, 0x9e, 0x16,
  0xd7, 0x23, 0xd1, 0x4a, 0x73, 0x6c, 0xa0, 0x4b, 0xf8, 0xfd, 0x43, 0xcf,

  0xe5, 0xa9, 0x68, 0x58, 0x0d, 0xd5, 0x8b, 0x04, 0xe6, 0x61, 0x69, 0x5b,
  0x8e, 0x9c, 0x43, 0x34, 0xeb, 0x2e, 0xd3, 0x6d, 0xe9, 0x73, 0x21, 0x9b,
  0x55, 0xa5, 0x2d, 0x71, 0x1d, 0x99, 0x02, 0x34, 0x8a, 0xde, 0xb6, 0x5f,
  0x7d, 0x28, 0xd1, 0x5d, 0x0d, 0x06, 0xe9, 0x56, 0xce, 0xc9, 0x80, 0x1e,
  0xd9, 0x51, 0x04, 0x9d, 0xe4, 0x43, 0x21, 0xc8, 0x31, 0x85, 0xb1, 0x2d,
  0x90, 0xff, 0x30, 0xb3, 0x9b, 0x46, 0x80, 0x4a, 0x94, 0xb6, 0xc5, 0x42,
  0x6b, 0x56, 0xb2, 0x42, 0x0f, 0x4c, 0xe7, 0x10, 0x22, 0x0c, 0x3e, 0x64,

  0x64, 0x13, 0xa8, 0xa4, 0x91, 0xf1, 0x9c, 0x5d, 0x32, 0x6d, 0xba, 0x2b,

  0x05, 0xca, 0x43, 0xb0, 0xd0, 0x73, 0xff, 0xd0, 0x98, 0xa5, 0xc1, 0xfa,
  0x71, 0xbc, 0xa0, 0x61, 0xb0, 0x05, 0x46, 0x54, 0x50, 0xaf, 0x80, 0xc0,
  0x5a, 0x14, 0xd1, 0xd2, 0x2c, 0x86, 0xb4, 0x58, 0x17, 0x0b, 0xca, 0x11,



  0x6f, 0x43, 0x45, 0xa8, 0x1a, 0x38, 0xda, 0x50, 0xc5, 0xea, 0x23, 0x4b,
  0xb4, 0x48, 0xb2, 0x5d, 0xaf, 0xdf, 0x5e, 0x5d, 0x6f, 0xe5, 0x2f, 0x08,
  0xf4, 0x3d, 0x1d, 0x99, 0x22, 0x52, 0x2a, 0x6d, 0xe5, 0x45, 0x4e, 0x48,
  0x42, 0x65, 0xb5, 0x47, 0x55, 0x2a, 0x84, 0xd9, 0x67, 0xac, 0xca, 0x72,
  0x81, 0xd6, 0x3e, 0xaa, 0xba, 0xc5, 0x1a, 0x32, 0x43, 0x05, 0x63, 0x0c,
  0x1e, 0x33, 0x78, 0xbb, 0x72, 0xdf, 0x6b, 0x56, 0x47, 0xd2, 0xd4, 0x83,
  0x8d, 0x18, 0xc5, 0xda, 0xc1, 0x71, 0x46, 0x08, 0x32, 0x1e, 0xdb, 0xea,
  0x98, 0xb6, 0x26, 0xd5, 0xe6, 0x22, 0x38, 0x57, 0xa8, 0x7c, 0xc8, 0xbf,
  0xef, 0xa9, 0xe5, 0xd3, 0xc6, 0x2e, 0x00, 0x87, 0x32, 0xbb, 0x32, 0xe0,
  0xec, 0x90, 0xf6, 0xcd, 0x84, 0xe5, 0xd0, 0xfe, 0x5a, 0x9d, 0x35, 0xeb,

  0x55, 0x28, 0xe7, 0x5d, 0xf5, 0xa9, 0x1d, 0x51, 0x83, 0xa2, 0xde, 0x14,

  0x09, 0x55, 0xc1, 0x6d, 0xbf, 0x8f, 0xce, 0xdf, 0xbd, 0x8d, 0xd0, 0x04,
  0x02, 0xe9, 0xde, 0x87, 0x04, 0xa0, 0xe2, 0x85, 0x1a, 0x04, 0x27, 0x5b,
  0x46, 0xbf, 0xd8, 0xdf, 0x62, 0xa0, 0x05, 0x29, 0xdb, 0xe2, 0x28, 0xbb,
  0x7d, 0xdb, 0xec, 0x8b, 0x37, 0xdf, 0xf0, 0xce, 0x68, 0x3d, 0x8a, 0x94,
  0x2c, 0xd2, 0xe9, 0xec, 0x50, 0x2f, 0x7a, 0xdc, 0xdf, 0xdd, 0xcf, 0x7a,
  0x97, 0xbe, 0x61, 0x56, 0x5b, 0x07, 0xcf, 0x0e, 0x47, 0x07, 0x4f, 0x3e,
  0x1f, 0x1d, 0xa0, 0x93, 0xad, 0x37, 0x37, 0xd7, 0x71, 0xd5, 0x1b, 0x28,
  0xd2, 0xcf, 0x37, 0xe9, 0x47, 0xf4, 0xe5, 0x2f, 0x2c, 0xef, 0x46, 0xf4,

  0xdc, 0x88, 0xbb, 0xea, 0x04, 0xdf, 0x58, 0x1a, 0x9d, 0x26, 0x2f, 0x82,
  0x38, 0xc8, 0xd0, 0x65, 0x15, 0x31, 0x2d, 0xae, 0x72, 0x22, 0x23, 0x45,
  0xd9, 0xf4, 0xf6, 0x49, 0x1b, 0x02, 0xda, 0x06, 0x27, 0xb8, 0x9d, 0xf1,

  0x19, 0x29, 0x4b, 0x9f, 0x8a, 0x1a, 0xe9, 0xb8, 0xba, 0xfd, 0x7e, 0xc0,
  0x36, 0x7f, 0xb2, 0xd5, 0x47, 0x10, 0x2e, 0xf6, 0xd2, 0x75, 0x61, 0xba,
  0x00, 0xf1, 0xd4, 0x45, 0x09, 0x12, 0xd0, 0x17, 0x7e, 0x50, 0x35, 0x6e,
  0x1b, 0x10, 0xf7, 0x85, 0x0c, 0xc0, 0x8f, 0x5c, 0x25, 0x8e, 0x5f, 0x49,
  0x8c, 0x91, 0x6d, 0x9d, 0x68, 0x07, 0xce, 0xc9, 0xc2, 0x2c, 0x31, 0x93,
  0xd6, 0xe1, 0xe8, 0x9d, 0x3f, 0xfc, 0xc1, 0x71, 0x24, 0x6e, 0xab, 0x8e,
  0x5e, 0x1e, 0x8f, 0x01, 0xd5, 0xca, 0xb1, 0x6a, 0xee, 0x0a, 0xb0, 0xf5,


  0xfc, 0xaf, 0x70, 0x0e, 0xff, 0x38, 0xfc, 0xab, 0xf9, 0xe7, 0x8f, 0x5b,
  0x7a, 0xa9, 0x19, 0x96, 0xcb, 0x15, 0x8c, 0x38, 0xf8, 0x43, 0x1c, 0xd0,
  0x20, 0x69, 0xb7, 0xa5, 0x85, 0x66, 0x70, 0xf1, 0xea, 0x9c, 0x2f, 0x63,
  0xc5, 0x61, 0x6f, 0x50, 0x33, 0xf1, 0x21, 0xa8, 0xf5, 0xc4, 0xc2, 0xd1,
  0x51, 0x83, 0xe9, 0xc4, 0xee, 0xa5, 0xf7, 0xca, 0xc0, 0x25, 0x35, 0xdc,
  0x30, 0x07, 0x48, 0x8d, 0x7e, 0x7b, 0x49, 0xfe, 0x15, 0x2e, 0x49, 0x37,
  0x7c, 0x57, 0x15, 0x69, 0xe9, 0x18, 0x4c, 0xc0, 0x5e, 0x86, 0x0d, 0xd8,
  0xeb, 0x70, 0x63, 0xa6, 0x34, 0x48, 0x04, 0xfe, 0x96, 0x6b, 0x23, 0x1a,
  0xc1, 0x52, 0x34, 0xdb, 0x60, 0x36, 0x4a, 0xb9, 0x6d, 0x95, 0xd7, 0x9f,

  0x68, 0x7d, 0x52, 0xe6, 0xe3, 0xe5, 0x0a, 0xd1, 0x7c, 0x3e, 0xb3, 0x5a,
  0xdf, 0x9d, 0x42, 0xd6, 0xd8, 0xc2, 0x3d, 0x6f, 0x67, 0x9d, 0x74, 0xd0,
  0x63, 0x57, 0x20, 0xca, 0x28, 0xec, 0x96, 0x3c, 0x56, 0x65, 0x0f, 0x40,
  0x83, 0x93, 0x54, 0x98, 0x73, 0xa3, 0xe7, 0x5a, 0xd2, 0xf0, 0xa0, 0x99,
  0xa8, 0xa4, 0x9d, 0x88, 0x85, 0xa4, 0xdf, 0x6e, 0x57, 0x6a, 0x51, 0x87,
  0x1a, 0x72, 0x14, 0x33, 0x3c, 0x94, 0xc5, 0x37, 0x43, 0xcf, 0x2c, 0x2a,
  0x9f, 0xa8, 0xcc, 0x34, 0x66, 0x03, 0xad, 0xcd, 0xe7, 0x9b, 0x41, 0x41,
  0x5e, 0xd5, 0xe9, 0x3e, 0x8b, 0xda, 0x0a, 0xb8, 0x68, 0x4e, 0x19, 0x5d,
  0xb0, 0x4f, 0x9d, 0x36, 0x1f, 0xbb, 0x4e, 0x7f, 0x1a, 0x6e, 0xad, 0x1d,
  0xd5, 0x6e, 0x0a, 0xb4, 0x47, 0x4e, 0x42, 0x83, 0x06, 0xd3, 0x5f, 0xc6,
  0x20, 0x7a, 0x3d, 0xa1, 0x7a, 0xb8, 0x1f, 0xba, 0x52, 0xa8, 0xe9, 0x33,
  0x36, 0x79, 0x98, 0xaf, 0xee, 0xdf, 0x40, 0x85, 0xf9, 0xa2, 0x23, 0x6d,
  0x71, 0x16, 0x2b, 0x61, 0xea, 0xf5, 0xe5, 0x25, 0x30, 0x31, 0xc2, 0xcc,
  0x3c, 0x54, 0x2c, 0x4a, 0xe1, 0x80, 0xf4, 0x33, 0x30, 0x8c, 0x1c, 0x33,
  0xd7, 0xdd, 0x70, 0x65, 0x91, 0xc2, 0x70, 0x6a, 0xd7, 0x99, 0xa4, 0xb7,
  0x74, 0x96, 0x7a, 0xd9, 0xc9, 0xf5, 0x76, 0x9a, 0x4c, 0x95, 0x0d, 0x75,
  0xa2, 0x5d, 0x3e, 0x48, 0xa9, 0x41, 0x41, 0x06, 0x2c, 0x73, 0x44, 0xf8,
  0x1a, 0xfa, 0x79, 0xdf, 0x46, 0x77, 0x23, 0x79, 0xd8, 0xa8, 0x3f, 0x0e,
  0xc3, 0xf1, 0xe4, 0x73, 0x01, 0xf1, 0x63, 0x14, 0xb6, 0xca, 0xa2, 0x5a,
  0xb1, 0x5e, 0x29, 0xfc, 0xa8, 0x2b, 0x35, 0xe7, 0xd8, 0x8e, 0x4d, 0x7e,
  0x01, 0xc7, 0x0a, 0x7d, 0x6d, 0xe9, 0xd1, 0xe8, 0x30, 0x38, 0xd8, 0x7a,
  0x31, 0x9c, 0x4e, 0xa7, 0x43, 0xe8, 0x01, 0x2f, 0x58, 0x39, 0xd9, 0x13,
  0xe5, 0xa0, 0xc7, 0x67, 0x30, 0xce, 0x64, 0xbf, 0x5f, 0xbd, 0x7a, 0x25,
  0x7a, 0xcc, 0xc5, 0x55, 0x47, 0xa3, 0xb0, 0x80, 0x53, 0xa2, 0x51, 0xc5,
  0xda, 0x1c, 0xd6, 0x57, 0xeb, 0x66, 0x86, 0x6e, 0xc8, 0xc4, 0x32, 0x94,
  0xf5, 0xda, 0x1a, 0xd9, 0x0e, 0x2a, 0x28, 0x35, 0xa5, 0x1f, 0xb8, 0xcc,

  0x44, 0x33, 0x76, 0x70, 0x34, 0x2b, 0x6e, 0x80, 0x82, 0x17, 0x65, 0xec,
  0x6e, 0x8b, 0x55, 0x9e, 0xaa, 0x0f, 0xdd, 0xa5, 0x13, 0xac, 0x63, 0x99,
  0x6c, 0x3a, 0x0a, 0x3e, 0x9b, 0xe6, 0x92, 0x01, 0x96, 0xca, 0xb7, 0xba,
  0x63, 0xdf, 0x73, 0x1e, 0xb2, 0xd5, 0xed, 0x23, 0x79, 0xd2, 0x7b, 0x24,
  0xd1, 0xcd, 0x27, 0xab, 0x8a, 0xb6, 0x7d, 0xe7, 0x15, 0x10, 0x45, 0x5f,

  0xc9, 0x85, 0x78, 0x75, 0x45, 0xf9, 0x5b, 0x0b, 0x3a, 0x1c, 0x33, 0xe5,
  0x9a, 0x99, 0x80, 0xc8, 0x8f, 0xf1, 0xf8, 0x74, 0xef, 0xe2, 0x74, 0x1c,
  0x64, 0xbc, 0xdf, 0x91, 0xcb, 0x98, 0x9b, 0x68, 0xb7, 0x5c, 0x9e, 0xbc,

  0x45, 0x00, 0x87, 0x2e, 0xe7, 0x6d, 0x0a, 0xe7, 0xaf, 0x44, 0xf1, 0x4e,
  0xd6, 0x85, 0x16, 0xc3, 0x58, 0xd9, 0x5d, 0x64, 0x05, 0x8a, 0xc8, 0x49,

  0x84, 0xe3, 0x06, 0x20, 0x21, 0xb6, 0x4e, 0xde, 0xbd, 0xbc, 0xa0, 0xf2,

  0x96, 0x46, 0x52, 0x3c, 0xc8, 0x05, 0x14, 0x7a, 0xc6, 0x6f, 0x2c, 0x2e,
  0x01, 0xa2, 0x36, 0xe9, 0xd4, 0x35, 0x43, 0x51, 0x65, 0x9d, 0x8f, 0xaf,
  0x56, 0xc2, 0xdb, 0xb4, 0xfd, 0x66, 0x4b, 0x45, 0x3a, 0x74, 0x69, 0xbe,
  0x7b, 0x1a, 0x07, 0xd1, 0xd3, 0xe0, 0x0d, 0x88, 0x5f, 0x87, 0xf7, 0xc2,
  0xca, 0x75, 0xa3, 0xa5, 0x8a, 0x5f, 0xa7, 0xbf, 0x28, 0x2f, 0x73, 0xf2,
  0x04, 0xe2, 0xbc, 0xfc, 0xc0, 0x5b, 0xe0, 0x26, 0xe5, 0xdd, 0xa9, 0xb9,
  0x14, 0xa7, 0x0d, 0x60, 0xcb, 0x57, 0x84, 0xe4, 0x84, 0xdd, 0x53, 0xdb,
  0x87, 0x49, 0x4b, 0x20, 0xc3, 0x0a, 0x43, 0x60, 0xe7, 0xe5, 0x53, 0x63,
  0x22, 0x4c, 0x29, 0xfb, 0x03, 0xe5, 0x80, 0x75, 0x3b, 0xc5, 0x36, 0x6f,
  0xc1, 0xf2, 0xa9, 0x87, 0xb4, 0x0e, 0x63, 0x15, 0xd0, 0x14, 0x64, 0x85,
  0x1b, 0xfd, 0xf0, 0x4f, 0x5a, 0xc2, 0xe3, 0x2b, 0xb2, 0xc8, 0x2e, 0x03,
  0xa1, 0x6b, 0x51, 0x28, 0x22, 0xc8, 0x7f, 0x50, 0x51, 0x51, 0xde, 0x2f,
  0xbd, 0x8d, 0x7d, 0x48, 0xf7, 0x4d, 0xe8, 0xdd, 0x83, 0x6e, 0x3b, 0x33,
  0x46, 0x25, 0x6c, 0x83, 0x55, 0xb7, 0xa0, 0x81, 0x34, 0xd1, 0xb7, 0x33,
  0xdc, 0x57, 0xc7, 0xae, 0x7d, 0x42, 0x07, 0x3f, 0xa8, 0xd5, 0x5a, 0x81,
  0xe3, 0x90, 0x14, 0x83, 0xba, 0xa1, 0x2e, 0xac, 0x37, 0x3d, 0x46, 0x0e,
  0x2b, 0xb1, 0x17, 0x0e, 0x8d, 0x9d, 0xef, 0x07, 0x6b, 0x81, 0x99, 0xcd,


  0x52, 0x25, 0xe8, 0x19, 0x0d, 0xd0, 0xff, 0xfb, 0xb6, 0xeb, 0x0e, 0x34,


  0x8a, 0xf8, 0x21, 0x54, 0x3a, 0x84, 0x00, 0xc2, 0x2e, 0xf4, 0x34, 0x70,
  0x13, 0x76, 0xdf, 0x0d, 0xdb, 0x7b, 0xf0, 0xf2, 0x36, 0xcf, 0xe7, 0xeb,
  0xe3, 0x97, 0xaf, 0x2d, 0x8c, 0xc0, 0x6f, 0x81, 0x2c, 0xec, 0xbc, 0x9a,
  0x93, 0x8c, 0xbb, 0x40, 0xac, 0xd5, 0x51, 0x82, 0xd3, 0x51, 0x42, 0x05,
  0xad, 0x18, 0x75, 0xad, 0xce, 0xf8, 0x86, 0xf4, 0x36, 0x43, 0xe8, 0xf5,
  0x8c, 0xf8, 0xd9, 0x07, 0xe2, 0xb1, 0x26, 0x4d, 0x99, 0x6b, 0xab, 0x3c,
  0x42, 0xbe, 0x04, 0x21, 0x2f, 0xca, 0x49, 0x39, 0x9f, 0x6f, 0x90, 0xee,
  0x0c, 0x0f, 0x89, 0x1a, 0x28, 0x26, 0x98, 0x2d, 0xda, 0x46, 0x7a, 0x6f,
  0x42, 0xb3, 0x37, 0x47, 0x6a, 0xae, 0xda, 0x96, 0x14, 0x26, 0x40, 0x25,
  0x0f, 0xee, 0x46, 0xbb, 0x30, 0x5d, 0x6d, 0x06, 0x35, 0xf1, 0x50, 0x98,

  0xcf, 0xee, 0x18, 0x4d, 0x13, 0xb2, 0xc0, 0xfe, 0x75, 0xf2, 0x9f, 0xff,
  0xfc, 0xeb, 0x8f, 0x91, 0xee, 0x06, 0xe4, 0xf0, 0xbb, 0xe2, 0xca, 0x42,
  0xf3, 0xf4, 0x52, 0x50, 0x5b, 0x2c, 0x4e, 0x3c, 0x27, 0x9a, 0x70, 0x3c,
  0xa3, 0xa9, 0xb3, 0xc5, 0x7c, 0xe4, 0xe5, 0x54, 0x86, 0x62, 0x91, 0x4c,
  0x28, 0xfd, 0x20, 0xba, 0xd5, 0x51, 0x29, 0x38, 0x97, 0xef, 0x12, 0x72,
  0x37, 0x5a, 0x04, 0xb9, 0x94, 0x69, 0x8b, 0xec, 0xcb, 0x27, 0x11, 0xe0,
  0xc7, 0xb8, 0x36, 0x3e, 0xdd, 0x60, 0xfa, 0x87, 0xf7, 0x27, 0xd6, 0xd5,

  0xe9, 0x73, 0xe5, 0x2b, 0x43, 0xa9, 0x77, 0xc3, 0xec, 0x2e, 0x9b, 0x18,
  0x2e, 0x51, 0x2b, 0xf0, 0xc3, 0x70, 0x59, 0x27, 0x2f, 0x96, 0x86, 0xc6,
  0xf3, 0x1e, 0xc8, 0x8e, 0xaf, 0xe9, 0xb5, 0x44, 0x5f, 0xb3, 0xf8, 0xa5,
  0x97, 0x65, 0x65, 0x76, 0x68, 0x29, 0xd5, 0xb8, 0x52, 0x92, 0xdc, 0x76,

  0x66, 0x24, 0x28, 0x30, 0x09, 0xdc, 0x01, 0xd7, 0x8f, 0x44, 0xe3, 0x06,
  0x18, 0x9b, 0x07, 0x14, 0x06, 0x65, 0x7d, 0x6d, 0x94, 0x47, 0x33, 0x7b,
  0x63, 0x64, 0x93, 0xb5, 0x5e, 0x0f, 0x84, 0xa4, 0x2a, 0xc5, 0x91, 0x8b,
  0xc2, 0x08, 0xd8, 0x32, 0x44, 0xb6, 0xb0, 0x0c, 0xd3, 0xf1, 0x57, 0x64,
  0xbb, 0x98, 0xfa, 0xe8, 0x6f, 0xd2, 0xbb, 0x38, 0xdc, 0x57, 0x5d, 0x00,
  0xbb, 0x41, 0x13, 0x97, 0xbd, 0x4a, 0x05, 0x1b, 0xb9, 0xf6, 0x17, 0xf6,
  0x3d, 0xb1, 0xd6, 0x54, 0x0e, 0x2e, 0xe5, 0x32, 0x9d, 0xd9, 0x42, 0x7a,
  0x1f, 0x3a, 0x10, 0x65, 0x88, 0x29, 0xd5, 0x45, 0x66, 0x8b, 0x91, 0x74,
  0xd5, 0x46, 0x5a, 0x95, 0x1b, 0x13, 0x0c, 0xb7, 0x8b, 0xeb, 0x52, 0x53,
  0x8a, 0x00, 0x57, 0xc3, 0x8a, 0x43, 0x1f, 0x65, 0xe5, 0xe2, 0x79, 0x88,
  0xc6, 0x7a, 0x2f, 0x04, 0x2f, 0xe7, 0x12, 0x66, 0xbf, 0xd8, 0x0f, 0x00,
  0x4b, 0x46, 0xef, 0x30, 0x86, 0x21, 0xa1, 0xb7, 0x91, 0x5e, 0x41, 0x3c,
  0x84, 0x0f, 0xfc, 0x58, 0x0e, 0xbc, 0x33, 0x1c, 0xc5, 0x5a, 0x9e, 0x3c,
  0x7e, 0xfc, 0x98, 0x63, 0x2d, 0x5b, 0x27, 0xf8, 0xf0, 0xfb, 0xe3, 0x57,
  0x67, 0x6f, 0xdf, 0x1e, 0xbf, 0x7b, 0x7d, 0xfc, 0x5a, 0x33, 0x3e, 0xbc,
  0x95, 0x38, 0xea, 0x08, 0x57, 0x44, 0x59, 0x82, 0x66, 0x9f, 0x0f, 0x1e,
  0xef, 0x0f, 0x0f, 0x1f, 0xef, 0x27, 0x86, 0x16, 0x53, 0x5b, 0xa7, 0x96,

  0x2e, 0x52, 0xb2, 0x6f, 0xaf, 0xd6, 0x46, 0x55, 0x23, 0x68, 0xcf, 0x86,
  0x30, 0x37, 0xe0, 0x7a, 0x25, 0x6f, 0x4f, 0xd6, 0x90, 0x1d, 0x1d, 0xc9,
  0x0c, 0x18, 0x6d, 0x59, 0x90, 0x36, 0x17, 0xb0, 0x14, 0xdd, 0x07, 0x04,
  0x7a, 0xb8, 0x4f, 0x1f, 0x1a, 0x25, 0x6f, 0x8c, 0xf6, 0x31, 0x2f, 0x6f,
  0x99, 0x16, 0x5f, 0x5d, 0x19, 0xa5, 0x34, 0x0b, 0x43, 0x95, 0xed, 0xf7,
  0xe9, 0xf5, 0x23, 0x7e, 0xfd, 0x37, 0x8c, 0xd1, 0x3f, 0x7e, 0xd6, 0x36,

  0x2c, 0xcd, 0x45, 0x06, 0x2a, 0xbc, 0x96, 0x24, 0xf6, 0xe0, 0xfb, 0x8f,
  0xd9, 0x1c, 0xff, 0xfa, 0xe5, 0x39, 0x3d, 0x6d, 0xcc, 0xf2, 0xb3, 0xef,
  0xff, 0xe2, 0xca, 0x3c, 0xaf, 0x0f, 0x34, 0x9b, 0x51, 0x2a, 0x59, 0xd1,
  0x88, 0xaf, 0x08, 0x83, 0xde, 0x4e, 0x99, 0xb5, 0x06, 0xa1, 0x0a, 0x19,
  0xac, 0x90, 0x32, 0x50, 0xcd, 0xd6, 0x71, 0x8f, 0x2c, 0x39, 0xb4, 0xaa,
  0x96, 0x2b, 0x1e, 0xab, 0xeb, 0x37, 0xac, 0x9c, 0xa6, 0x71, 0x9b, 0x73,
  0xdf, 0x87, 0xbc, 0x98, 0x71, 0x63, 0xda, 0x96, 0x63, 0xb6, 0xa9, 0xd6,
  0x59, 0xcc, 0x6b, 0xba, 0x11, 0x63, 0x87, 0x94, 0xda, 0x2a, 0x5f, 0xa6,
  0x55, 0xce, 0xed, 0xe7, 0x89, 0xc0, 0x6f, 0xb8, 0x57, 0x26, 0xa7, 0x4a,
  0x21, 0xf6, 0xe5, 0xc0, 0x64, 0xcb, 0x20, 0xed, 0xd4, 0xf6, 0x72, 0x20,
  0x22, 0x66, 0x58, 0x23, 0x89, 0x51, 0xf2, 0x66, 0x6d, 0x84, 0xa1, 0x6b,
  0xdb, 0xff, 0x56, 0xa1, 0xe8, 0x03, 0x9d, 0x4b, 0xde, 0x9c, 0x9c, 0x1e,
  0xef, 0x26, 0x6f, 0xb2, 0x46, 0x4a, 0x9c, 0x34, 0xc3, 0x98, 0x44, 0xfe,
  0xbf, 0x41, 0xc1, 0xb2, 0xa0, 0x84, 0x52, 0x23, 0x1c, 0xcd, 0x05, 0x13,

  0x1f, 0x1c, 0x94, 0x0d, 0xad, 0x97, 0xe2, 0xc3, 0xc1, 0x12, 0x29, 0x1e,
  0xa7, 0xb9, 0x65, 0x1a, 0xdf, 0x94, 0x93, 0x8f, 0xe4, 0xdd, 0x2a, 0xce,
  0xc3, 0xc8, 0x43, 0x3c, 0x2b, 0xfd, 0x14, 0x02, 0x9a, 0xb4, 0xe4, 0x3c,
  0x6b, 0xbc, 0x38, 0xaf, 0x57, 0x0b, 0xe2, 0x06, 0x51, 0x94, 0x97, 0x45,
  0xe6, 0x2a, 0xfb, 0x40, 0xf9, 0xdc, 0x29, 0x5e, 0x8c, 0x1e, 0x30, 0x54,
  0x5a, 0xaf, 0xb7, 0x71, 0x5f, 0xeb, 0xc6, 0x51, 0xda, 0x09, 0xff, 0xb9,
  0xf7, 0x65, 0x14, 0x7c, 0x4c, 0x1b, 0x59, 0xa0, 0x67, 0xae, 0xbc, 0x01,
  0x8a, 0xe2, 0x1e, 0xea, 0x22, 0xe4, 0x55, 0xed, 0x6c, 0x51, 0x42, 0x44,
  0x7d, 0x85, 0xef, 0x4e, 0xcd, 0xdd, 0xbf, 0x48, 0x9f, 0x26, 0xd5, 0x1f,
  0xa8, 0x04, 0xdc, 0x49, 0x17, 0xee, 0xd2, 0x6b, 0xb3, 0x8c, 0x93, 0x58,
  0x4b, 0x34, 0xe6, 0xca, 0xd2, 0x92, 0x97, 0xb5, 0x29, 0xca, 0xd6, 0x4f,
  0x35, 0x5d, 0x5f, 0xe7, 0x4b, 0x8f, 0x5d, 0x09, 0x78, 0x35, 0x7c, 0x29,
  0x5c, 0x45, 0x56, 0x47, 0x5d, 0xfe, 0x52, 0xde, 0x26, 0xa1, 0x3d, 0xb4,
  0x54, 0x65, 0xa7, 0x0c, 0xeb, 0xd0, 0x6b, 0x52, 0xe8, 0xb8, 0xb2, 0x0b,

  0x7d, 0x08, 0x2a, 0xc6, 0xcb, 0x8c, 0x68, 0x4b, 0xf2, 0x75, 0x9f, 0x05,
  0x75, 0x75, 0x76, 0xff, 0x33, 0x6d, 0x4b, 0x34, 0x54, 0x17, 0xcd, 0xde,
  0x41, 0xa7, 0xa4, 0xbe, 0x1f, 0x54, 0xf5, 0x3e, 0xfd, 0x94, 0xa3, 0x10,


  0x71, 0x0d, 0x75, 0x2e, 0x2d, 0xb4, 0xde, 0x8a, 0xa7, 0x69, 0x71, 0xde,
  0x0d, 0xb9, 0x8d, 0x50, 0xce, 0x10, 0xd7, 0x3e, 0x19, 0xb2, 0x8c, 0x9c,
  0x06, 0x84, 0xc2, 0xaa, 0xf3, 0x59, 0xa0, 0xa2, 0xc1, 0xde, 0x16, 0x55,
  0xd4, 0xa8, 0x1e, 0x12, 0xba, 0x62, 0x04, 0x17, 0x3a, 0x43, 0xc3, 0x65,
  0xb8, 0xfc, 0x6e, 0x04, 0x62, 0x6c, 0xbb, 0xca, 0x18, 0x9a, 0x7e, 0x64,
  0x2c, 0xd1, 0x25, 0x95, 0x04, 0x28, 0x7e, 0x33, 0x2d, 0x59, 0xb6, 0xc7,
  0xf0, 0xb6, 0xcb, 0xfc, 0x3a, 0x96, 0x65, 0x41, 0xf9, 0x11, 0x32, 0x31,
  0x64, 0x69, 0xb8, 0x76, 0xb1, 0x9a, 0x76, 0x6c, 0x43, 0xda, 0xec, 0x97,
  0x26, 0x1c, 0x40, 0xd9, 0xd9, 0xe0, 0x06, 0x2f, 0x48, 0x63, 0x25, 0x40,
  0xaf, 0x82, 0x1b, 0xf4, 0x7e, 0x6d, 0x34, 0x9f, 0xe7, 0x5b, 0x16, 0x51,
  0x1d, 0x7e, 0x55, 0x70, 0xc7, 0x16, 0xe5, 0x48, 0xcb, 0xe8, 0x61, 0xb4,
  0xef, 0x98, 0x68, 0xee, 0x8d, 0x32, 0x2e, 0x5b, 0x70, 0x13, 0xa6, 0x35,
  0xdb, 0x02, 0x18, 0xae, 0x18, 0x0d, 0x11, 0xe3, 0x69, 0x4a, 0xdf, 0x0f,
  0x5f, 0xe1, 0xe3, 0xc3, 0xaf, 0x31, 0xdc, 0x1f, 0xb7, 0xac, 0xc3, 0xb7,
  0xfb, 0xab, 0xe7, 0x61, 0xa3, 0x60, 0xe7, 0x37, 0x64, 0xc3, 0x63, 0xad,
  0x55, 0x19, 0x48, 0x24, 0x91, 0x09, 0x72, 0x0f, 0x2e, 0x73, 0x45, 0xf6,
  0xf4, 0xc0, 0x11, 0x4d, 0xa9, 0xc3, 0x2e, 0x9b, 0x36, 0xe5, 0xc0, 0x48,
  0x91, 0x15, 0xc0, 0x74, 0x66, 0xc3, 0x72, 0x3e, 0x44, 0x86, 0xb4, 0x61,
  0xfe, 0x9f, 0x28, 0x19, 0xc9, 0xbb, 0x75, 0x00, 0x08, 0x01, 0xf6, 0xf6,
  0x6c, 0x16, 0x53, 0xcd, 0xb9, 0x90, 0x91, 0xb4, 0x0e, 0x21, 0x7c, 0x2d,
  0xb4, 0xe0, 0x83, 0x7c, 0x2e, 0x5e, 0x79, 0xbc, 0x6e, 0xbb, 0x50, 0x11,
  0x32, 0x97, 0x14, 0x44, 0x04, 0xfe, 0x34, 0x94, 0x47, 0x0c, 0x58, 0x7b,
  0xc7, 0xaa, 0x61, 0xc3, 0x2d, 0xd9, 0x95, 0x0b, 0xff, 0xf3, 0x7a, 0x05,
  0x95, 0x95, 0x10, 0x3b, 0x03, 0xef, 0x8b, 0x16, 0x89, 0x00, 0x8b, 0xd3,
  0x08, 0xff, 0xc7, 0xa3, 0xfd, 0x41, 0x10, 0xa8, 0x6f, 0x60, 0xec, 0x17,
  0x2e, 0x4b, 0xc8, 0x3c, 0x0c, 0x1e, 0x39, 0x8c, 0x55, 0xd7, 0xd6, 0xcd,
  0x1d, 0xf1, 0x6b, 0x5b, 0x4c, 0x8b, 0xd4, 0x62, 0x57, 0xf7, 0xe0, 0x72,
  0x7a, 0xb0, 0x85, 0xc2, 0x36, 0xb9, 0x8a, 0x36, 0x06, 0x71, 0x2a, 0x19,
  0x5b, 0x5f, 0x0e, 0xbb, 0x6d, 0x32, 0x6d, 0xb7, 0x33, 0xbf, 0x7a, 0xc3,
  0xeb, 0x5b, 0xd6, 0xeb, 0x69, 0x02, 0x9a, 0xe8, 0x4b, 0x6d, 0x7d, 0x33,
  0x34, 0x9b, 0x2a, 0x1d, 0x5d, 0x87, 0x19, 0xfd, 0x90, 0x01, 0x3b, 0x14,
  0x38, 0xb4, 0xee, 0xdf, 0x33, 0x06, 0xd9, 0x7d, 0x4a, 0x3b, 0x66, 0x5b,
  0x0b, 0x68, 0x0f, 0x1d, 0x27, 0x1f, 0x40, 0xb6, 0xde, 0x5d, 0xea, 0xee,
  0x19, 0x71, 0x15, 0xe2, 0x04, 0x85, 0xe6, 0x7c, 0xa3, 0x21, 0xfb, 0xed,

  0x5d, 0x6f, 0x6a, 0x71, 0x4f, 0xce, 0x2f, 0xae, 0xcd, 0x1b, 0x52, 0xec,
  0x87, 0xef, 0xcc, 0x31, 0x3c, 0x4f, 0xfe, 0xa3, 0xcc, 0xb8, 0x66, 0xf5,
  0x9e, 0x92, 0xd5, 0xef, 0x5e, 0xbe, 0x7f, 0x77, 0xf2, 0xee, 0xab, 0xe7,
  0x96, 0xc7, 0x11, 0xbf, 0xeb, 0xf6, 0xb4, 0xb0, 0xbc, 0x1b, 0xbf, 0x65,

  0xe4, 0x56, 0xf2, 0xfe, 0xf4, 0x61, 0x6c, 0x53, 0x2c, 0x13, 0xec, 0x99,
  0x9d, 0x97, 0x55, 0xc6, 0x71, 0x11, 0xb6, 0x45, 0xb5, 0x72, 0x42, 0xca,
  0x35, 0x21, 0x2a, 0xd1, 0xb8, 0x2d, 0x02, 0xd8, 0x30, 0x3c, 0xa5, 0x33,
  0x59, 0x94, 0xad, 0x1e, 0x51, 0x44, 0x94, 0x0b, 0x1c, 0x7f, 0xe9, 0x53,
  0x00, 0x5b, 0xcc, 0xda, 0x51, 0x9d, 0x9d, 0x3e, 0x91, 0xe0, 0x2d, 0x63,
  0x64, 0xab, 0xe7, 0xd5, 0xf6, 0xc7, 0x91, 0x26, 0x17, 0x35, 0x8e, 0xac,
  0xce, 0xe1, 0x6c, 0xb0, 0x5b, 0xa2, 0x39, 0x5e, 0x11, 0x3f, 0x88, 0xc0,
  0x4b, 0xa7, 0x6b, 0xbe, 0x2f, 0x8c, 0x4e, 0x26, 0x3f, 0x75, 0x75, 0x19,
  0x76, 0x07, 0x1e, 0x9c, 0xe6, 0xec, 0xf2, 0x9c, 0x59, 0x9f, 0x67, 0x03,
  0xd1, 0x63, 0x59, 0xe6, 0x4f, 0x12, 0x25, 0x51, 0x1c, 0x92, 0x45, 0xe6,

  0xaa, 0x92, 0xac, 0xae, 0x73, 0xc5, 0xba, 0xce, 0x62, 0x15, 0x80, 0xed,


  0x51, 0x9a, 0x79, 0x42, 0xbf, 0x51, 0xa7, 0x0e, 0x05, 0xaf, 0x20, 0x81,
  0xd5, 0x2c, 0x69, 0x81, 0xdb, 0xd9, 0xd6, 0x90, 0xcc, 0xd4, 0x43, 0x79,
  0x4a, 0x78, 0x4f, 0x19, 0xe3, 0x8d, 0xf9, 0x15, 0x30, 0xe6, 0xeb, 0x66,
  0x8f, 0x57, 0xeb, 0xc9, 0x72, 0xf6, 0x38, 0x79, 0x61, 0xfe, 0x13, 0x28,
  0x59, 0xc8, 0x19, 0x1d, 0xbf, 0x32, 0x8a, 0x16, 0x25, 0xb8, 0x90, 0xbc,
  0x60, 0xc8, 0x1b, 0xaf, 0x8b, 0xc4, 0xd1, 0xa1, 0x99, 0xe9, 0x6d, 0xaa,
  0xd0, 0x96, 0x46, 0x23, 0xbc, 0xcc, 0x1b, 0xce, 0xd3, 0xeb, 0xc1, 0x0d,
  0xf2, 0x52, 0x1b, 0x70, 0xe6, 0x07, 0x87, 0x9f, 0x27, 0x54, 0x7c, 0xf0,
  0xf6, 0xf5, 0xe3, 0x64, 0x7a, 0x95, 0x4d, 0x3f, 0xd5, 0xeb, 0xa5, 0xb2,
  0x63, 0xda, 0x53, 0x63, 0x1e, 0xd0, 0x3c, 0x03, 0xc4, 0x07, 0x33, 0xf1,
  0x45, 0x3e, 0xa5, 0xd2, 0xbf, 0x41, 0x2b, 0x3a, 0x35, 0xd7, 0xe8, 0x94,

  0x67, 0x87, 0x5a, 0xb1, 0x81, 0x74, 0x01, 0xce, 0xa9, 0x89, 0x04, 0x2f,
  0xcc, 0x1e, 0x98, 0x8f, 0xd7, 0xdc, 0xcd, 0x7a, 0xa3, 0xcb, 0xf6, 0x69,
  0xdb, 0xeb, 0x4d, 0x17, 0x7b, 0x7f, 0xf4, 0xac, 0xa7, 0x3f, 0x47, 0xab,
  0x35, 0x07, 0xd5, 0x2a, 0xd9, 0x6a, 0x3b, 0xd8, 0x03, 0xa4, 0xe5, 0xd3,
  0x24, 0x09, 0x10, 0x4a, 0xc3, 0x78, 0xc1, 0xc7, 0xe9, 0xc9, 0x3d, 0x7a,
  0x42, 0x7a, 0xcb, 0x21, 0x8b, 0x2d, 0x03, 0x26, 0x05, 0x93, 0x16, 0xd2,
  0x84, 0x6c, 0x14, 0xd0, 0x22, 0x9c, 0x21, 0x04, 0x1b, 0x2a, 0x6d, 0xb6,
  0xfe, 0x5b, 0x5d, 0x36, 0x8e, 0xc5, 0x48, 0x09, 0xad, 0x87, 0xe6, 0xa0,
  0xb5, 0x84, 0xc0, 0x6b, 0x23, 0x9b, 0x22, 0x20, 0x32, 0xfb, 0x5d, 0x8e,
  0x4b, 0xbb, 0xe3, 0xa8, 0x19, 0x8d, 0x10, 0xce, 0x73, 0xea, 0x12, 0xcb,
  0x16, 0x75, 0x79, 0x53, 0x5c, 0x56, 0xe4, 0x1f, 0x41, 0x51, 0x58, 0x1a,
  0x8b, 0x65, 0xc4, 0x10, 0x4c, 0xdd, 0xd8, 0xc6, 0xe2, 0x7a, 0x42, 0x9c,

  0xde, 0xee, 0x0a, 0xe5, 0xdb, 0x73, 0x10, 0x9b, 0x2b, 0x96, 0xd9, 0x66,
  0xf7, 0x8e, 0x68, 0x7f, 0x20, 0xc7, 0x74, 0x30, 0xda, 0x7f, 0xc8, 0x31,
  0x11, 0x11, 0xb5, 0x4e, 0xc7, 0xbc, 0xe7, 0x6b, 0xc9, 0x9a, 0x44, 0x6e,
  0x88, 0xbd, 0x27, 0xfb, 0xce, 0x2c, 0x54, 0xfc, 0x57, 0xd9, 0xac, 0x35,
  0xd4, 0x46, 0x9e, 0xe3, 0x37, 0x6f, 0xe3, 0xe9, 0x1e, 0x48, 0x18, 0x86,
  0xfe, 0x75, 0xd8, 0x25, 0x3a, 0xf3, 0xeb, 0x9f, 0xb9, 0x9a, 0x83, 0x9f,
  0x50, 0xaa, 0xb1, 0x3f, 0x70, 0xdf, 0xdb, 0xb7, 0x2d, 0x11, 0x78, 0x42,
  0xee, 0x5e, 0x74, 0x86, 0x0b, 0x21, 0xef, 0xf1, 0x02, 0x95, 0xbb, 0x94,
  0xd5, 0x90, 0x54, 0x76, 0x73, 0x58, 0x81, 0x0a, 0x15, 0x9d, 0xbe, 0x39,
  0xde, 0x9a, 0x14, 0x5b, 0xd2, 0x69, 0x41, 0x9c, 0x88, 0x19, 0x31, 0xaa,
  0x99, 0x35, 0xe9, 0xa3, 0x69, 0xfb, 0x20, 0x90, 0x43, 0x4f, 0x45, 0xc7,
  0x0f, 0x68, 0x53, 0x93, 0x0f, 0x2b, 0xd0, 0x20, 0xc5, 0xb8, 0x1b, 0x07,
  0xfc, 0x8f, 0xd9, 0x25, 0x7d, 0xb3, 0x73, 0xd8, 0x5f, 0x1a, 0x93, 0x47,
  0xb1, 0x66, 0xad, 0xdf, 0xa9, 0xa9, 0x0a, 0x96, 0x54, 0x7e, 0x69, 0x11,
  0xc7, 0x80, 0xf8, 0x6e, 0x92, 0x31, 0x58, 0x5f, 0xbd, 0x58, 0x46, 0xd5,
  0x94, 0x51, 0x5a, 0xd9, 0xf4, 0x04, 0x8f, 0xce, 0xea, 0xbe, 0xf6, 0xec,
  0x73, 0xf0, 0xf4, 0x11, 0xff, 0x4a, 0xee, 0xba, 0x84, 0x77, 0x80, 0xfd,
  0x82, 0x00, 0x50, 0xf4, 0x38, 0x1e, 0xdc, 0x02, 0x21, 0xc0, 0xef, 0xea,
  0x34, 0xb1, 0xe0, 0xb5, 0x8c, 0x1e, 0x46, 0xdc, 0xfb, 0x83, 0xe8, 0xec,

  0x88, 0xda, 0x7c, 0xe2, 0x6f, 0x81, 0xe1, 0x3d, 0x8b, 0x10, 0xd7, 0xcf,
  0xba, 0x0b, 0x87, 0x9b, 0xc2, 0xa0, 0xe1, 0x1d, 0x3c, 0x1a, 0xe9, 0xd7,
  0xfa, 0xf6, 0x2a, 0x60, 0x67, 0xbd, 0xed, 0x23, 0x1e, 0xb6, 0x5b, 0x3d,
  0x7b, 0x63, 0xf7, 0xae, 0xb3, 0x5b, 0x7d, 0x47, 0xab, 0x57, 0x35, 0xe0,
  0x57, 0x3d, 0x57, 0xf5, 0x28, 0xbe, 0x9b, 0x56, 0x43, 0xed, 0xf8, 0x3c,
  0xc9, 0x65, 0x56, 0xe5, 0x30, 0x89, 0xd3, 0xc5, 0x28, 0x79, 0xed, 0x72,

  0x5a, 0x00, 0xbc, 0x17, 0x18, 0xab, 0xb3, 0x75, 0x4f, 0xe6, 0xc7, 0xe6,
  0xd3, 0x3a, 0x92, 0xa4, 0x1e, 0x97, 0xb8, 0x00, 0x99, 0x2e, 0x45, 0x59,
  0x65, 0x00, 0x88, 0x29, 0x9e, 0x1b, 0x0d, 0x5f, 0x4a, 0x98, 0x8e, 0x52,
  0xb3, 0x24, 0x00, 0x83, 0xad, 0x3f, 0xf2, 0x63, 0xe6, 0x56, 0xbd, 0xa6,
  0x12, 0x82, 0x98, 0xa7, 0x08, 0x5f, 0xd4, 0xf4, 0x76, 0x48, 0x44, 0x55,
  0x28, 0xcd, 0x47, 0xae, 0xf3, 0x34, 0x79, 0xb9, 0x68, 0x86, 0xe3, 0x6f,
  0xa7, 0x1c, 0x61, 0x6b, 0x85, 0xa7, 0x82, 0x26, 0xaf, 0xf0, 0xaa, 0xa0,
  0x3f, 0x57, 0x2d, 0x49, 0xab, 0x79, 0x35, 0x5d, 0x2f, 0x81, 0x81, 0x0a,
  0xb2, 0xb2, 0x7d, 0x22, 0xe8, 0x20, 0x1d, 0xa5, 0x71, 0xba, 0x7d, 0x08,
  0x7e, 0x98, 0x7e, 0xaa, 0x75, 0x49, 0x52, 0xa4, 0xc3, 0x75, 0x18, 0x76,
  0xce, 0xed, 0xf6, 0x6a, 0x11, 0x11, 0xd4, 0xb1, 0xec, 0x18, 0xa6, 0x97,
  0x50, 0x60, 0xfe, 0xdb, 0x87, 0x93, 0x57, 0x2d, 0xef, 0x3e, 0xc7, 0x51,
  0x92, 0x8d, 0xd1, 0x0a, 0x86, 0x95, 0x95, 0x27, 0xe7, 0xa4, 0xc3, 0x6a,
  0x36, 0xae, 0x26, 0xce, 0xb5, 0x8e, 0xb7, 0x2c, 0x22, 0x22, 0xd5, 0xe8,
  0x0b, 0x3f, 0xed, 0x8e, 0x1e, 0xea, 0x1d, 0x3d, 0xfa, 0xa5, 0xef, 0xe8,
  0xd1, 0x2f, 0x73, 0x47, 0x95, 0x83, 0x78, 0x7f, 0xf7, 0xaf, 0x6b, 0x60,
  0x96, 0xe2, 0xfa, 0xfa, 0x0e, 0xe7, 0x76, 0xce, 0xc0, 0x90, 0xc1, 0x23,
  0x86, 0xe2, 0xb7, 0x18, 0x72, 0x81, 0x6c, 0xac, 0x36, 0x2c, 0x11, 0xc7,
  0xa9, 0x82, 0x3f, 0x0e, 0x92, 0x13, 0x06, 0x36, 0x47, 0x76, 0x92, 0xbc,
  0x7e, 0xca, 0xf5, 0xb5, 0xe2, 0xf7, 0x56, 0x9f, 0x7f, 0xa4, 0x02, 0x3f,
  0x9f, 0x12, 0xbc, 0x9a, 0xf3, 0xb8, 0x93, 0xc5, 0xac, 0x3a, 0x63, 0xb5,
  0x46, 0x48, 0x21, 0x79, 0xb9, 0xa2, 0x12, 0x59, 0xa3, 0x71, 0xdc, 0xba,
  0xfe, 0xc8, 0x44, 0x62, 0x61, 0x2e, 0x12, 0x6d, 0x32, 0x79, 0x70, 0x25,
  0xf3, 0xbe, 0x3b, 0x1d, 0x8c, 0xce, 0xf0, 0x87, 0x0b, 0x22, 0xfe, 0x8a,
  0x0d, 0xc7, 0x43, 0x43, 0xe0, 0x97, 0x41, 0x5b, 0x85, 0xc9, 0x5d, 0x13,
  0x29, 0x03, 0xa3, 0x55, 0xd3, 0x2e, 0xec, 0xd4, 0x92, 0x65, 0xfa, 0xc8,
  0xec, 0xe3, 0xee, 0x80, 0x1a, 0xd0, 0xaf, 0xb0, 0x03, 0x54, 0xa7, 0x63,
  0x8d, 0x2b, 0x2a, 0x53, 0xcb, 0x2f, 0xc9, 0x63, 0x55, 0xf2, 0x35, 0x0e,
  0x2c, 0x1a, 0xf2, 0x6e, 0x4b, 0x9a, 0xa3, 0xe6, 0x10, 0x0a, 0xdc, 0x6c,
  0xbb, 0x44, 0x35, 0x1f, 0xa0, 0xf3, 0x1c, 0x7c, 0xd3, 0xdd, 0xe0, 0x91,
  0x78, 0xac, 0xd9, 0xfe, 0x55, 0x9d, 0x46, 0x61, 0xfd, 0xc5, 0xe2, 0x15,
  0xc6, 0x25, 0x2d, 0x3a, 0x10, 0xd8, 0xc3, 0x93, 0x91, 0x5e, 0x3f, 0xed,
  0x17, 0xa7, 0xf0, 0x6c, 0xf2, 0x17, 0xc4, 0x01, 0xc5, 0x66, 0xbe, 0x85,
  0x88, 0x26, 0x2f, 0x11, 0xf9, 0xf3, 0xb9, 0xd3, 0xca, 0x20, 0x84, 0xd5,
  0xb3, 0xbe, 0x67, 0x07, 0x14, 0xdd, 0xba, 0xb1, 0x0a, 0xee, 0x3c, 0x1a,
  0x8d, 0x22, 0x70, 0x16, 0xd7, 0x79, 0x76, 0xd3, 0x72, 0xc5, 0xcb, 0xcc,
  0x06, 0xb6, 0x41, 0x0a, 0x7b, 0x80, 0xae, 0x69, 0x87, 0xcc, 0x90, 0x13,
  0x42, 0xd2, 0xec, 0x29, 0x27, 0x71, 0x57, 0xde, 0x7f, 0xda, 0xdb, 0xe6,
  0x4f, 0xbc, 0xcd, 0x75, 0xac, 0x1e, 0x94, 0x81, 0x91, 0x5d, 0x3f, 0x87,
  0x01, 0x79, 0x44, 0xaa, 0xbb, 0x04, 0x8d, 0x3b, 0x1c, 0x4f, 0xc3, 0xf5,
  0xe7, 0xfa, 0x83, 0xbc, 0x66, 0x5c, 0x62, 0xc6, 0x15, 0x0a, 0xa3, 0xc5,

  0xfc, 0x99, 0x36, 0x3f, 0x10, 0x7e, 0xae, 0xd2, 0xcb, 0x88, 0xbd, 0x29,
  0x39, 0xa2, 0x20, 0x9c, 0xb4, 0x19, 0x01, 0x5c, 0x31, 0x91, 0xd4, 0x23,
  0x39, 0x11, 0xaf, 0x73, 0x89, 0x97, 0x29, 0xe3, 0xda, 0xc9, 0x24, 0xba,
  0xc0, 0x78, 0xbc, 0x57, 0xcf, 0xd5, 0xe7, 0xd3, 0xfe, 0x4a, 0x8c, 0x75,
  0x24, 0xad, 0xd9, 0xc4, 0x17, 0xeb, 0xf0, 0x96, 0xbb, 0x36, 0xa2, 0xab,
  0x4f, 0x75, 0x98, 0x5a, 0xce, 0xab, 0xcd, 0xe0, 0x7d, 0x58, 0x99, 0x0c,
  0x5e, 0xfb, 0x40, 0xd9, 0x01, 0xd4, 0x80, 0x6b, 0x1e, 0x44, 0x03, 0x73,
  0x83, 0x9f, 0xe8, 0x11, 0xb3, 0x5e, 0xc1, 0xa8, 0x17, 0xd4, 0x82, 0x6a,
  0x4d, 0x89, 0x27, 0xb8, 0xfb, 0x52, 0xbd, 0x2e, 0x05, 0xeb, 0x5d, 0x30,
  0x13, 0x0b, 0x09, 0x47, 0xbb, 0x3f, 0xba, 0x4a, 0x6f, 0x6f, 0x47, 0x75,
  0xb6, 0x67, 0xa8, 0xb6, 0xde, 0xab, 0xeb, 0x05, 0x7d, 0xb4, 0x06, 0xfa,
  0xda, 0xc6, 0xee, 0x96, 0xb7, 0x77, 0x96, 0x80, 0x84, 0x39, 0x4f, 0x53,
  0x7a, 0xb5, 0xc5, 0x6c, 0x5d, 0x7b, 0x4b, 0x6e, 0x10, 0xd3, 0x4d, 0x19,
  0x66, 0xe0, 0x69, 0x40, 0xa8, 0xfb, 0xd5, 0xb6, 0xcc, 0x1a, 0x5c, 0x72,
  0x96, 0x1d, 0xc7, 0xe1, 0xe9, 0x13, 0xd4, 0x74, 0xd5, 0x57, 0xda, 0x21,
  0x77, 0xd5, 0x0b, 0x8d, 0x9a, 0x4d, 0xb1, 0x05, 0x10, 0x46, 0x3e, 0x38,
  0x58, 0x1d, 0xee, 0xf8, 0x44, 0x96, 0x74, 0xf9, 0x29, 0x02, 0xf9, 0xd4,
  0xe7, 0xb6, 0xf4, 0x96, 0x46, 0xa5, 0x22, 0xcf, 0x1d, 0xc0, 0xe0, 0xcd,

  0xcd, 0xcd, 0x68, 0x93, 0xdf, 0xf2, 0x5f, 0x8e, 0x81, 0xb7, 0x87, 0x3b,
  0x33, 0x54, 0x7b, 0x9a, 0x17, 0xeb, 0xdb, 0xc4, 0xc3, 0x78, 0xb1, 0xcd,
  0x80, 0x34, 0x30, 0x97, 0x7c, 0xfb, 0xfe, 0x8d, 0x6d, 0x84, 0xad, 0xe8,
  0x1a, 0xe4, 0xf9, 0xad, 0x43, 0xad, 0x2d, 0xcb, 0x19, 0x77, 0x87, 0x40,
  0xa3, 0x5f, 0xbd, 0x3c, 0xff, 0xf8, 0xee, 0xf8, 0xe2, 0xe3, 0xfb, 0x97,
  0xdf, 0xd1, 0x16, 0xb2, 0x57, 0xc6, 0xc8, 0x2b, 0x8a, 0x07, 0x54, 0x65,
  0x49, 0x4d, 0xed, 0xde, 0xa2, 0x6c, 0x30, 0x2f, 0x00, 0xaf, 0x12, 0x6d,
  0xb3, 0x6e, 0x31, 0xa3, 0x64, 0x9e, 0x66, 0x2e, 0xcf, 0x93, 0xd6, 0x7e,
  0x7d, 0xca, 0xaa, 0x22, 0x5b, 0x8c, 0xca, 0xea, 0x92, 0xa8, 0x70, 0xef,
  0xb5, 0xf0, 0xcf, 0xe8, 0x70, 0x7b, 0x92, 0xd5, 0x40, 0x10, 0x64, 0xd7,
  0xd5, 0x9c, 0x10, 0x4b, 0x1e, 0xda, 0xa3, 0xd0, 0x23, 0xcd, 0x47, 0x60,
  0x80, 0xab, 0xeb, 0x47, 0x1b, 0xd4, 0xbb, 0x76, 0xa7, 0x58, 0xe9, 0xf1,
  0x06, 0x0a, 0x82, 0xef, 0xc7, 0xcf, 0x55, 0xe1, 0xea, 0xcc, 0xc5, 0xdd,
  0x20, 0x02, 0x80, 0x00, 0x75, 0xae, 0xb4, 0x50, 0x12, 0x28, 0x70, 0xa3,
  0x24, 0x9b, 0x8d, 0x2d, 0xee, 0xad, 0x56, 0xd4, 0xf5, 0x21, 0xf4, 0xf9,
  0x1e, 0x86, 0x4f, 0x42, 0xcb, 0x90, 0x9a, 0x2e, 0x7a, 0x6b, 0x7e, 0x22,
  0x6b, 0x7e, 0xf2, 0x2f, 0xad, 0xf9, 0xc9, 0xbf, 0xb0, 0xe6, 0x47, 0xbf,
  0xf0, 0x9a, 0x1f, 0x45, 0xd7, 0xec, 0x7d, 0x65, 0xf8, 0x37, 0x5a, 0xf3,
  0xdf, 0xd6, 0xc5, 0xa7, 0xa1, 0x99, 0x2f, 0x49, 0x61, 0xe9, 0xb1, 0x56,
  0xf7, 0x98, 0x6c, 0x7e, 0xa3, 0x1d, 0xf8, 0xf6, 0x1d, 0xc0, 0xb0, 0xd7,
  0x33, 0x2e, 0x15, 0x53, 0x81, 0x43, 0xfc, 0x4d, 0xd8, 0xd4, 0x22, 0x30,
  0x10, 0x72, 0xaa, 0xf7, 0xad, 0xa7, 0xe4, 0xa7, 0x20, 0xcd, 0x7e, 0x4b,
  0x66, 0xa3, 0xc3, 0x6e, 0x69, 0xdf, 0x15, 0xdc, 0xf4, 0x34, 0xc4, 0x39,
  0x9a, 0xc2, 0x4d, 0x86, 0x3b, 0x69, 0x63, 0xe0, 0xae, 0x2f, 0x3b, 0x8c,
  0x0e, 0xc6, 0x80, 0xd2, 0x81, 0x39, 0x2e, 0x48, 0x31, 0x9f, 0x90, 0x67,
  0x5c, 0xdc, 0xad, 0x68, 0x40, 0x23, 0x9b, 0x2b, 0x23, 0x83, 0x39, 0x11,
  0x05, 0xcd, 0xc4, 0x13, 0x3b, 0xc9, 0xa4, 0x33, 0x41, 0x89, 0x76, 0x5c,
  0x65, 0x77, 0xdb, 0x81, 0xc2, 0x30, 0x5d, 0x94, 0xc4, 0x6f, 0x66, 0x9b,
  0x8d, 0x8f, 0x89, 0x6b, 0x70, 0xc7, 0xf2, 0xa2, 0xd3, 0xf1, 0xce, 0x97,
  0x1b, 0x9f, 0xb2, 0x6c, 0x95, 0x2e, 0x00, 0xad, 0x41, 0xb9, 0x0f, 0x7d,
  0x8d, 0xb2, 0x5a, 0xc9, 0x91, 0x5a, 0x38, 0x80, 0x37, 0x5a, 0x99, 0x67,
  0xe0, 0x73, 0x7c, 0x90, 0x54, 0x29, 0x93, 0xe4, 0x33, 0xd4, 0xba, 0xc6,
  0xfb, 0xa6, 0xb8, 0xa6, 0x0c, 0x76, 0x12, 0xd4, 0x7a, 0xa3, 0x9c, 0x08,
  0x06, 0x8c, 0xfd, 0x84, 0xe2, 0xc8, 0x51, 0x6a, 0xce, 0x75, 0x4e, 0x29,
  0x79, 0x5d, 0xec, 0x61, 0xfb, 0x3e, 0xbf, 0x0e, 0x54, 0xa9, 0x56, 0xe7,
  0x04, 0x3e, 0x40, 0x7a, 0xa2, 0xb4, 0xf2, 0x8f, 0xd4, 0x0d, 0xf4, 0x11,
  0x0d, 0x48, 0x4a, 0x01, 0x94, 0x59, 0xff, 0xbd, 0x78, 0x75, 0xfe, 0xf1,
  0x9b, 0xe3, 0xe3, 0xf3, 0x93, 0xd7, 0xa7, 0xc7, 0x72, 0x61, 0xec, 0x8f,
  0xde, 0x5d, 0x7c, 0x7b, 0xaa, 0x7d, 0xe2, 0x94, 0x16, 0x03, 0x82, 0x17,
  0xd8, 0x7f, 0x66, 0xca, 0x03, 0xb4, 0xc3, 0x32, 0x86, 0xf4, 0xcb, 0x93,

  0xef, 0x8d, 0xd6, 0x7a, 0x3e, 0xfc, 0xf0, 0x7d, 0xd0, 0x8b, 0xc4, 0xab,
  0x31, 0x09, 0x9b, 0x09, 0xb8, 0x92, 0x13, 0xf4, 0x74, 0x77, 0x6b, 0xef,
  0x4b, 0xb9, 0xfb, 0x85, 0xc5, 0x20, 0x35, 0x38, 0x2f, 0xac, 0xc2, 0xc0,
  0x2f, 0x6a, 0xbf, 0x1f, 0x2f, 0xad, 0xed, 0xc9, 0xbe, 0xb6, 0x51, 0xdb,
  0x18, 0xb4, 0xf8, 0xbc, 0x6d, 0x33, 0x7e, 0xca, 0xee, 0x80, 0xe1, 0x98,
  0xbc, 0xa0, 0xff, 0xc6, 0xdb, 0xdc, 0x9d, 0x57, 0xf9, 0x35, 0xe9, 0x7f,
  0xe6, 0x59, 0x0e, 0xe9, 0xd2, 0xa3, 0x23, 0xdb, 0xf4, 0x4f, 0xc2, 0xca,
  0x34, 0x08, 0x32, 0x4f, 0x30, 0x68, 0x12, 0xf3, 0xf6, 0x00, 0x19, 0x87,
  0x7e, 0xc3, 0xe3, 0x61, 0x40, 0xb3, 0x3d, 0xa3, 0xe4, 0xf5, 0xf1, 0xfb,

  0x41, 0x72, 0x7e, 0xfc, 0x96, 0x0b, 0x55, 0x8e, 0xdf, 0x7d, 0xc5, 0x7d,
  0x10, 0xb5, 0xbd, 0x1d, 0x32, 0x21, 0xc2, 0x64, 0x4d, 0x6f, 0x4f, 0xcc,
  0xbb, 0xc8, 0x4c, 0xad, 0x6b, 0x23, 0x5d, 0x7f, 0x45, 0x00, 0x1d, 0x5e,
  0xdb, 0x0b, 0xf3, 0x9f, 0xd8, 0x56, 0x19, 0x3b, 0xe2, 0xeb, 0xc8, 0x76,
  0x89, 0x62, 0x66, 0x73, 0x67, 0xc4, 0x28, 0xa0, 0xdd, 0xe0, 0x1d, 0x33,
  0x1b, 0x12, 0x66, 0x71, 0xe8, 0x06, 0xc1, 0xec, 0x03, 0x84, 0x10, 0x37,
  0xcf, 0x95, 0x18, 0x3c, 0x59, 0xb1, 0xe6, 0x73, 0x03, 0xa2, 0x4b, 0x00,
  0x92, 0xbb, 0xcd, 0x88, 0x55, 0x47, 0x57, 0x39, 0x37, 0x22, 0xee, 0x20,

  0xd3, 0x99, 0xed, 0xce, 0x67, 0x8c, 0xc0, 0x40, 0x01, 0xe4, 0xb2, 0xa2,
  0x04, 0x0e, 0x82, 0x3e, 0xf8, 0x9f, 0x7b, 0xa3, 0xba, 0xbe, 0xda, 0xcb,
  0x67, 0x1f, 0xab, 0x3a, 0xdd, 0xee, 0xca, 0x22, 0xef, 0xd7, 0x33, 0xfa,
  0x75, 0xb2, 0x3d, 0xb2, 0x8f, 0xca, 0xdf, 0xe9, 0xe7, 0x51, 0x2c, 0x00,
  0x15, 0x41, 0xec, 0x5a, 0xd1, 0x7c, 0x4e, 0x6d, 0x9f, 0xb8, 0xc8, 0x27,
  0x95, 0x51, 0xe0, 0x5c, 0xf7, 0x0f, 0xe9, 0x86, 0xb8, 0xfa, 0x34, 0xad,
  0x0f, 0x0e, 0x42, 0x34, 0x7a, 0x5b, 0xe2, 0x38, 0xd0, 0xbc, 0xdc, 0xf3,
  0x6f, 0x5e, 0x8d, 0x7f, 0x77, 0x70, 0x80, 0x34, 0xe8, 0x1d, 0x4a, 0x57,
  0x7d, 0xfa, 0xf8, 0xe0, 0x70, 0x37, 0xa6, 0x3e, 0x06, 0x79, 0x3d, 0xd4,
  0xc1, 0x32, 0x75, 0xf4, 0x49, 0xbb, 0x8f, 0x30, 0xb7, 0x14, 0x3d, 0xd8,
  0xa1, 0x67, 0x19, 0x25, 0x09, 0xa2, 0xb2, 0x93, 0xc3, 0x99, 0xc8, 0x9d,
  0x0c, 0x52, 0x2f, 0x2c, 0x0e, 0xd2, 0x16, 0xcf, 0xfe, 0xf9, 0x96, 0xa5,
  0x2a, 0x3f, 0x87, 0x1c, 0xf9, 0x27, 0xde, 0xac, 0x47, 0xbc, 0x4f, 0xdd,
  0xf0, 0x9a, 0xbf, 0x2e, 0x24, 0x3a, 0x3a, 0xa0, 0x29, 0x16, 0x5f, 0xae,
  0x75, 0x64, 0x27, 0x41, 0x80, 0xf2, 0x03, 0x02, 0x5f, 0xbd, 0xcc, 0x69,
  0x8b, 0xe9, 0x87, 0x08, 0x3e, 0x75, 0x83, 0xda, 0xdd, 0xf7, 0x18, 0x84,

  0x3f, 0x68, 0xe8, 0xec, 0xe3, 0x6f, 0x24, 0x5b, 0xe6, 0xee, 0xc6, 0x87,
  0xfc, 0x55, 0xef, 0x64, 0x35, 0x49, 0x5e, 0x2c, 0xcc, 0x8b, 0x8b, 0x9e,
  0xd2, 0xbb, 0x63, 0x6e, 0xb7, 0xf5, 0x4d, 0x56, 0x4d, 0xb2, 0xaa, 0xac,
  0x3b, 0x55, 0x42, 0x58, 0xad, 0xd4, 0xfd, 0x52, 0x4d, 0x80, 0x19, 0x47,
  0xd3, 0xa5, 0x82, 0xc6, 0x9a, 0x0d, 0xac, 0x6f, 0xc1, 0x78, 0x6f, 0xe3,

  0xf2, 0x6c, 0xa3, 0x56, 0x89, 0x2e, 0x00, 0xf5, 0x97, 0xa2, 0x3f, 0x0d,
  0x37, 0x9e, 0xa3, 0x19, 0x4c, 0x9e, 0x2e, 0xb6, 0xa9, 0xeb, 0x4f, 0xf7,
  0x1a, 0x09, 0xa5, 0x6d, 0x8f, 0xa8, 0x00, 0x8d, 0x8d, 0x35, 0x64, 0x41,
  0xa1, 0xdc, 0x3a, 0x4d, 0x64, 0x2e, 0x9a, 0xdf, 0x4d, 0xd7, 0xdc, 0xa5,
  0x01, 0xd6, 0x41, 0x27, 0x24, 0x3b, 0x5c, 0x1b, 0x3a, 0xa9, 0x2f, 0xc3,
  0xf8, 0x17, 0x16, 0x53, 0x7c, 0x0c, 0x3f, 0xb9, 0x79, 0xb6, 0xed, 0x97,
  0xdd, 0x19, 0x4e, 0xcf, 0xca, 0x3f, 0x67, 0x7d, 0x3f, 0xda, 0x8a, 0xf6,
  0x25, 0x57, 0x87, 0x77, 0xb0, 0x46, 0xd0, 0x95, 0x80, 0x4a, 0x9a, 0x66,
  0x6c, 0x18, 0x4a, 0xf5, 0xab, 0x4b, 0x9c, 0x60, 0x4e, 0x13, 0x06, 0xc7,
  0xb1, 0x54, 0xf4, 0x0f, 0xd1, 0x69, 0x0f, 0xd9, 0x78, 0x7f, 0x95, 0x88,
  0x37, 0x02, 0x75, 0x51, 0x37, 0x15, 0xa1, 0xa5, 0x16, 0x0e, 0x73, 0x79,
  0x91, 0xf5, 0x82, 0x68, 0x29, 0xa2, 0xaa, 0x39, 0xa4, 0x85, 0xf4, 0x36,


  0xd4, 0x6c, 0xc4, 0x4a, 0xe7, 0x34, 0x94, 0x64, 0x0e, 0x75, 0x18, 0xd0,
  0x7b, 0xff, 0x76, 0x2f, 0xa4, 0xca, 0x7d, 0x67, 0xe7, 0x54, 0xfa, 0x18,
  0x4c, 0xc2, 0x83, 0xb1, 0xe2, 0x3a, 0x65, 0x7e, 0xa8, 0x18, 0x18, 0x42,
  0x26, 0xbd, 0x30, 0xfc, 0x34, 0x0b, 0xc0, 0xb2, 0xc6, 0x2d, 0x7c, 0x05,
  0x69, 0xf9, 0xaa, 0x25, 0x74, 0x78, 0xcf, 0xb6, 0xbe, 0xb6, 0x4d, 0xca,
  0x98, 0xf6, 0x87, 0x50, 0x59, 0xbb, 0xee, 0x36, 0x6a, 0x57, 0xe2, 0xca,

  0xb4, 0x71, 0x6b, 0x01, 0x46, 0xaf, 0x20, 0x47, 0x9a, 0x25, 0xcd, 0xdb,

  0x41, 0xbe, 0x68, 0xc9, 0xbf, 0x85, 0x71, 0x91, 0x06, 0x3e, 0x10, 0x14,
  0x3c, 0x70, 0x07, 0x10, 0x21, 0x82, 0xed, 0x19, 0x7b, 0x46, 0x71, 0x24,
  0x76, 0xaa, 0x74, 0xf1, 0x24, 0x0c, 0xc5, 0x5d, 0x13, 0xcc, 0x8d, 0x0e,
  0x4c, 0x85, 0x89, 0x19, 0xe2, 0x26, 0x9f, 0x35, 0x57, 0xe8, 0xc9, 0xa3,
  0x96, 0x51, 0x2d, 0xb8, 0x00, 0xe4, 0xa4, 0xce, 0xc3, 0xaa, 0xb7, 0x49,
  0x8f, 0x03, 0x8f, 0x0f, 0x0c, 0x9b, 0x9a, 0x30, 0x40, 0x16, 0x39, 0xea,

  0x70, 0x0e, 0x70, 0x6a, 0xef, 0xb1, 0xaa, 0x67, 0xa1, 0x61, 0x52, 0x73,
  0x8b, 0xe6, 0xd4, 0x6e, 0x27, 0x30, 0xd7, 0xb4, 0x3c, 0x6d, 0xa4, 0x37,
  0x84, 0x68, 0x78, 0xfb, 0x13, 0x83, 0xe2, 0x7f, 0xb3, 0xad, 0x5d, 0x65,
  0xd7, 0x45, 0xe3, 0x57, 0xd0, 0x10, 0x2f, 0x4f, 0x3e, 0xe5, 0x61, 0xa7,
  0x06, 0x7c, 0x7d, 0x60, 0x78, 0xcd, 0x92, 0x47, 0x78, 0xbb, 0xad, 0x8e,
  0x52, 0x02, 0x4c, 0xb8, 0x4c, 0xe5, 0xf7, 0x0c, 0x96, 0xb2, 0x7d, 0xc9,
  0x0f, 0x7d, 0xe5, 0x1e, 0xea, 0x0c, 0x47, 0x5e, 0x7b, 0xf6, 0xd2, 0x6b,
  0x32, 0x5d, 0xfd, 0x9c, 0x0a, 0x34, 0xbe, 0x19, 0x24, 0x47, 0x4b, 0x1c,
  0xca, 0xc1, 0x57, 0x31, 0xc6, 0xc5, 0x3d, 0x82, 0xeb, 0xd2, 0x96, 0xcb,
  0x0f, 0xff, 0x42, 0x26, 0x17, 0x36, 0x8c, 0xe9, 0xd2, 0x56, 0x82, 0x71,
  0x3d, 0x8a, 0xf2, 0x83, 0x48, 0xd0, 0x01, 0xb9, 0x94, 0x2b, 0x32, 0x12,
  0x66, 0x99, 0xa2, 0x84, 0x2f, 0xe1, 0xdd, 0xa4, 0x6c, 0xa9, 0x95, 0xc0,
  0x61, 0x10, 0xb9, 0x0e, 0x2d, 0x04, 0x69, 0xbd, 0xa0, 0x07, 0xd0, 0x26,
  0xab, 0x0c, 0x32, 0xab, 0x17, 0x2b, 0x18, 0x48, 0xb6, 0x93, 0x9d, 0x37,
  0x29, 0xaa, 0x6a, 0x9d, 0x26, 0xe2, 0xe3, 0xf9, 0x15, 0x45, 0xe2, 0x02,


  0x29, 0x7a, 0x79, 0xdd, 0x0c, 0x23, 0x78, 0xaf, 0x88, 0x01, 0x9d, 0x9f,
  0x9d, 0x1f, 0xed, 0xfa, 0xa0, 0x98, 0x02, 0x8e, 0xc0, 0x3d, 0x1f, 0x11,


  0x25, 0xb2, 0xc0, 0x09, 0x03, 0x65, 0x37, 0x5c, 0xa6, 0x17, 0xda, 0x96,
  0x53, 0x41, 0x8c, 0x23, 0xe6, 0x82, 0x2f, 0xc2, 0xe5, 0xef, 0x0a, 0x45,

  0xbc, 0x6e, 0x88, 0xee, 0x62, 0x2a, 0x3c, 0xe2, 0x67, 0x21, 0xac, 0x4c,
  0xcd, 0x09, 0xe5, 0x40, 0x64, 0x19, 0xa2, 0xf8, 0xaf, 0xdd, 0x4f, 0x84,

  0x0a, 0x17, 0x82, 0x59, 0x26, 0x9c, 0x78, 0x14, 0x49, 0xe9, 0x92, 0x20,
  0xaf, 0x7b, 0x12, 0x01, 0x09, 0x2d, 0x86, 0x04, 0xba, 0x90, 0xcb, 0xb5,
  0x20, 0x6f, 0x29, 0x51, 0x2d, 0x63, 0x2a, 0x8f, 0x7a, 0xfb, 0xc0, 0xdb,
  0xbe, 0x16, 0x2d, 0x8b, 0x4c, 0xba, 0x96, 0xa5, 0xc9, 0xbb, 0xd3, 0xf1,
  0x85, 0x1f, 0x44, 0x82, 0x1e, 0x16, 0xa4, 0x32, 0xb7, 0x81, 0xdd, 0xbc,
  0xd4, 0xa2, 0xd3, 0x93, 0xf1, 0xc5, 0x28, 0xd6, 0xb1, 0xc1, 0x68, 0xe7,
  0x63, 0x2a, 0xb7, 0x69, 0x01, 0x65, 0x24, 0xdc, 0x1d, 0x9c, 0x13, 0x8d,

  0x39, 0x3a, 0xc6, 0xd1, 0xa2, 0xbc, 0xf2, 0x41, 0x21, 0xba, 0xc3, 0x99,
  0x29, 0xfe, 0x91, 0xd3, 0x94, 0x25, 0xc5, 0x59, 0xa3, 0x44, 0xf5, 0x7a,
  0x32, 0xf4, 0x90, 0x14, 0x59, 0xdf, 0x41, 0x8b, 0x2e, 0x43, 0xbd, 0x46,
  0x42, 0x7d, 0x0a, 0x6d, 0xcc, 0x1d, 0x26, 0x28, 0xec, 0x8f, 0x20, 0x60,
  0xb6, 0x5c, 0xdd, 0xd3, 0x24, 0x03, 0xe2, 0x2e, 0x9c, 0x4c, 0xf4, 0xec,
  0x83, 0x89, 0x8a, 0xb6, 0xa2, 0xb3, 0x93, 0xd2, 0xd5, 0xb1, 0x5d, 0xb3,
  0x40, 0x61, 0xbb, 0x9f, 0x12, 0xa7, 0xf4, 0x48, 0xd0, 0x11, 0x5d, 0x9d,
  0x65, 0xec, 0x72, 0xb2, 0xd3, 0xee, 0x05, 0x01, 0xce, 0x67, 0x8c, 0x83,
  0x59, 0xb7, 0x81, 0x30, 0x19, 0xf4, 0x80, 0x98, 0x0e, 0x37, 0x00, 0x22,
  0xd5, 0xad, 0xef, 0x24, 0xd9, 0x27, 0xd7, 0xca, 0x4f, 0x1d, 0x7e, 0xcf,
  0x19, 0xcf, 0x08, 0x94, 0x0d, 0xfa, 0x10, 0xda, 0x42, 0x32, 0xd2, 0x66,

  0x4c, 0x1f, 0x4e, 0x5e, 0x9f, 0xda, 0xdd, 0x92, 0xdd, 0x41, 0x0a, 0xad,

  0x5d, 0x2b, 0x95, 0xb5, 0x28, 0xdb, 0xc4, 0x99, 0x04, 0x41, 0x9f, 0x75,
  0x91, 0xff, 0x1d, 0xa9, 0x56, 0xd0, 0x5d, 0xe7, 0x39, 0xe0, 0xbc, 0x52,
  0xb8, 0xce, 0x55, 0x92, 0x6d, 0xd7, 0xb6, 0x93, 0x5d, 0x3e, 0xb3, 0xe5,
  0x1f, 0x1c, 0xe3, 0x8b, 0xe6, 0x1f, 0x6f, 0x44, 0x4e, 0x39, 0x68, 0xc3,
  0x9b, 0x02, 0xe5, 0x58, 0xc0, 0xc8, 0x8c, 0x40, 0xda, 0x43, 0xf9, 0x62,
  0xa0, 0x5c, 0x40, 0x37, 0x73, 0xd9, 0x75, 0x6d, 0x90, 0x9d, 0xb2, 0x92,
  0xa2, 0xc7, 0x9d, 0x37, 0xef, 0xcf, 0xde, 0x0e, 0x2f, 0xce, 0xd0, 0xea,
  0x1e, 0xe6, 0xdc, 0x62, 0x43, 0x8a, 0x48, 0x6d, 0xfb, 0xa4, 0x3a, 0x94,
  0x12, 0xf1, 0xb5, 0xed, 0xd4, 0xbb, 0x52, 0xe8, 0xc3, 0x22, 0x05, 0xd3,

  0xd3, 0xb7, 0x82, 0xf6, 0x25, 0x05, 0x6b, 0x22, 0x29, 0x5a, 0xa4, 0x92,
  0xdf, 0x71, 0xea, 0xc5, 0xb1, 0x38, 0xa5, 0x43, 0x38, 0xf7, 0x64, 0x5d,
  0xdf, 0x25, 0x52, 0x5b, 0x4a, 0x98, 0x85, 0xb0, 0xa5, 0xc2, 0xe8, 0x80,
  0xed, 0xbd, 0x6d, 0x91, 0x8a, 0xa8, 0xea, 0x8e, 0xcb, 0xba, 0x9a, 0xd2,
  0x5c, 0xdf, 0xb4, 0xaa, 0xca, 0x1b, 0x15, 0x5c, 0x52, 0xfb, 0x6d, 0xa6,

  0x4e, 0x87, 0x54, 0xdd, 0xf5, 0xa2, 0xbb, 0x08, 0x60, 0x99, 0x76, 0x0e,
  0xdf, 0xa8, 0xfe, 0x3d, 0x6e, 0x63, 0x6e, 0x68, 0x06, 0xf8, 0xb0, 0xa9,
  0xd6, 0x54, 0x52, 0x1a, 0x77, 0x3b, 0x9f, 0x12, 0x9b, 0x6c, 0xa7, 0x8c,
  0x0f, 0x04, 0x51, 0x91, 0x00, 0x78, 0xd0, 0xeb, 0xcd, 0xfa, 0x25, 0xe1,
  0x9f, 0xe0, 0x98, 0xe2, 0x1f, 0x82, 0x1b, 0x2c, 0x50, 0xcb, 0xa4, 0xd1,
  0x53, 0x1b, 0x57, 0xa4, 0x8d, 0xbb, 0x5c, 0xbc, 0xbc, 0xe1, 0xfe, 0x9b,
  0x9a, 0x84, 0x03, 0x30, 0x35, 0x30, 0x03, 0xfa, 0x69, 0xa0, 0x4b, 0x2a,
  0x4a, 0x52, 0x4e, 0x08, 0x15, 0xb3, 0xf5, 0x14, 0xc7, 0x44, 0x11, 0x3f,
  0x6a, 0xef, 0x39, 0x61, 0xdc, 0x56, 0x05, 0x79, 0xa0, 0xa1, 0x5d, 0xba,
  0x3c, 0x3b, 0x70, 0xba, 0x5a, 0x56, 0xc2, 0x8f, 0xb9, 0x9e, 0x65, 0xa4,
  0x4c, 0x52, 0xee, 0x6b, 0xc6, 0x8a, 0x65, 0xd5, 0xb5, 0x39, 0x29, 0xaa,
  0xa4, 0x3d, 0x93, 0x43, 0x76, 0x45, 0xa0, 0xf9, 0x80, 0x0b, 0x97, 0xa0,
  0x3f, 0x21, 0x5b, 0x12, 0x01, 0x23, 0xe8, 0xfe, 0xe7, 0xb4, 0x36, 0x7c,
  0xa9, 0x3d, 0xde, 0xee, 0x06, 0xf7, 0xf4, 0x5a, 0x0b, 0x2b, 0xbc, 0xd3,
  0x6b, 0x1d, 0x48, 0xfc, 0xe4, 0x4e, 0x5a, 0x18, 0x17, 0x9c, 0x9a, 0xe1,
  0xed, 0xb8, 0xb0, 0x28, 0x00, 0x2f, 0x22, 0x57, 0x3d, 0x45, 0xb7, 0xeb,

  0xeb, 0x18, 0x73, 0x4a, 0x6d, 0x3f, 0xc7, 0x26, 0xd1, 0x8f, 0x26, 0x3b,
  0x5a, 0xf9, 0x69, 0x2b, 0x91, 0x4e, 0xe5, 0x57, 0xcf, 0x6d, 0x69, 0x2a,
  0xf1, 0xb4, 0xce, 0x70, 0x47, 0xdf, 0x7f, 0xdf, 0xee, 0xbf, 0xbc, 0xdb,
  0x07, 0x86, 0x21, 0x35, 0x29, 0x33, 0xe6, 0x7d, 0x3a, 0xe1, 0xa0, 0xae,
  0x4e, 0xc9, 0x8e, 0x42, 0x0c, 0xc8, 0xe2, 0x67, 0x07, 0x8c, 0x78, 0x8a,
  0x8c, 0x09, 0x78, 0xa5, 0xc5, 0x56, 0xad, 0x14, 0x0e, 0xc0, 0x64, 0x9c,
  0x44, 0x72, 0x16, 0xc1, 0x70, 0x35, 0xf7, 0x82, 0x63, 0x2a, 0xc8, 0x49,
  0xf7, 0xb7, 0xab, 0x76, 0xce, 0x99, 0x2b, 0x8a, 0x2d, 0x08, 0x50, 0xf3,
  0xe6, 0x26, 0xd1, 0x16, 0x38, 0xd3, 0x96, 0x5e, 0x42, 0xde, 0x73, 0x5b,
  0x09, 0x4a, 0x8b, 0x9d, 0x56, 0x99, 0x78, 0x1b, 0xb4, 0x09, 0x50, 0x10,
  0x45, 0x26, 0xd0, 0x1e, 0xbe, 0x3c, 0x70, 0xaa, 0xa6, 0xde, 0x7d, 0x71,
  0x78, 0x8b, 0x9d, 0x13, 0x93, 0x32, 0x8c, 0x50, 0x7b, 0xbf, 0x29, 0x01,
  0xb1, 0x89, 0xde, 0x4b, 0x80, 0x8d, 0x2b, 0xd9, 0xb1, 0x25, 0xed, 0x83,
  0x59, 0xde, 0xfc, 0x41, 0x6f, 0xee, 0xc8, 0x0f, 0x5e, 0x12, 0x15, 0xc4,
  0x42, 0xa0, 0xca, 0x4c, 0xe8, 0x5c, 0x08, 0xdb, 0x97, 0x72, 0xe1, 0xb4,
  0x25, 0x19, 0x79, 0x8a, 0x35, 0x46, 0xce, 0xea, 0x34, 0x90, 0x28, 0x96,
  0x30, 0x5e, 0x42, 0xa0, 0x69, 0x77, 0x65, 0x29, 0x87, 0x07, 0x4e, 0x4f,
  0x87, 0x4b, 0xc7, 0xce, 0x2d, 0x63, 0x94, 0x0e, 0xf1, 0x58, 0xdd, 0x97,
  0x6e, 0x22, 0xc8, 0xe3, 0xc8, 0x81, 0xe3, 0xf6, 0x29, 0xfe, 0x9e, 0xa9,


  0x9b, 0xcc, 0xa2, 0x9e, 0x48, 0xa1, 0x99, 0xf4, 0xe1, 0xf8, 0xea, 0xf8,

  0xa2, 0x7b, 0xb5, 0xfc, 0xc8, 0x21, 0x30, 0x46, 0xcc, 0xbf, 0xcf, 0x3f,
  0x5c, 0xec, 0xa2, 0x39, 0x99, 0x02, 0x06, 0x37, 0xad, 0xa6, 0x33, 0xb6,
  0x7e, 0x35, 0x2c, 0xc5, 0x61, 0x54, 0x0f, 0xe1, 0x53, 0x92, 0x0c, 0x24,
  0x37, 0x83, 0x7c, 0x2c, 0x47, 0xfb, 0x07, 0xc6, 0x8e, 0xda, 0x3f, 0x44,
  0xc3, 0xe9, 0xa3, 0xfd, 0x23, 0x0b, 0x84, 0xa0, 0x4f, 0x85, 0x6d, 0x2a,
  0xf8, 0x45, 0xb8, 0x4c, 0x40, 0xf7, 0x47, 0xb7, 0xb7, 0xf8, 0x71, 0xbb,
  0xbc, 0x62, 0x68, 0x4b, 0x12, 0xfd, 0x69, 0x46, 0xe5, 0xbe, 0xb7, 0xdf,
  0x88, 0xec, 0xad, 0x0b, 0x2e, 0x00, 0x46, 0x43, 0x6f, 0xc2, 0x0d, 0x19,
  0xf5, 0x77, 0xb7, 0xf2, 0x5a, 0xf5, 0x09, 0x3a, 0x9a, 0xdf, 0x9e, 0xce,
  0x10, 0x8b, 0x8f, 0x38, 0x23, 0x28, 0x24, 0x01, 0x6b, 0xa6, 0x67, 0x04,
  0xaf, 0xc9, 0xec, 0xc1, 0xad, 0xdb, 0x21, 0xdb, 0x32, 0x55, 0x18, 0x80,
  0x11, 0x74, 0xc2, 0x8e, 0x6c, 0x31, 0x4d, 0xc4, 0x09, 0x41, 0xfc, 0xef,
  0x39, 0xa5, 0x89, 0x98, 0x3b, 0x81, 0xfd, 0xd5, 0xbf, 0x6a, 0x1e, 0x1f,
  0xff, 0xeb, 0xa8, 0x2d, 0x29, 0xc9, 0x3d, 0xac, 0x83, 0xbe, 0x90, 0xbf,
  0x04, 0xbe, 0x4a, 0xf4, 0x19, 0x86, 0x6e, 0x8c, 0x0e, 0x31, 0xbb, 0x2d,



  0xff, 0x09, 0xc6, 0xb0, 0x13, 0x13, 0x2d, 0x45, 0x3a, 0xb8, 0x33, 0x8b,
  0xee, 0xd2, 0x46, 0x4b, 0x3e, 0x8c, 0xfa, 0x1a, 0x00, 0xaa, 0x26, 0x18,
  0x8c, 0xaf, 0x09, 0x16, 0x16, 0x31, 0xc0, 0x53, 0x89, 0xcb, 0x55, 0xec,
  0xee, 0xd6, 0x0a, 0xfe, 0x40, 0xc2, 0xd5, 0x3a, 0xdb, 0x65, 0x8e, 0x9d,
  0xe9, 0x24, 0x2f, 0x1b, 0xf4, 0x83, 0x86, 0x1f, 0x2c, 0x34, 0x51, 0x69,
  0x2b, 0x06, 0xbc, 0x15, 0xe8, 0xb3, 0x4e, 0x0d, 0x73, 0x34, 0x05, 0xb3,
  0x35, 0x53, 0x0e, 0x84, 0x2c, 0xfd, 0x44, 0x8d, 0x58, 0x86, 0xed, 0x44,
  0x93, 0xf7, 0x92, 0xce, 0x42, 0xcd, 0x3d, 0x24, 0xd1, 0x4a, 0x6a, 0xbf,
  0x74, 0x83, 0x7e, 0x34, 0xc0, 0xdf, 0x1e, 0xef, 0x3f, 0xe3, 0x13, 0x3d,
  0x39, 0xbe, 0x78, 0xd3, 0x75, 0xe6, 0x55, 0x86, 0xa0, 0xf8, 0xbf, 0xc3,
  0x2c, 0xad, 0xae, 0x8c, 0x71, 0x41, 0x50, 0x49, 0x43, 0xea, 0xbf, 0x31,
  0xdc, 0xdf, 0x8f, 0xe5, 0x6d, 0xfc, 0x8a, 0xf0, 0x10, 0x47, 0x8f, 0xda,
  0x21, 0x3d, 0x52, 0xe9, 0x87, 0xb4, 0xdd, 0xfd, 0x48, 0xbe, 0x6d, 0xf2,
  0x4a, 0x55, 0x77, 0x96, 0xc7, 0x5b, 0x01, 0xfb, 0x2c, 0xb1, 0x90, 0xd0,
  0x49, 0x17, 0x08, 0xd3, 0x33, 0xb1, 0xbb, 0xea, 0x8d, 0xcd, 0x4e, 0x32,
  0x62, 0x1e, 0x32, 0xa9, 0xb9, 0xdb, 0x4d, 0xb8, 0x8f, 0x24, 0xb7, 0x7b,

  0x6b, 0xc0, 0x00, 0x60, 0x41, 0x44, 0x0b, 0xe7, 0x6b, 0xa9, 0x1d, 0xac,
  0x32, 0x82, 0x5c, 0x63, 0xb5, 0x4f, 0xda, 0x66, 0xdd, 0x0f, 0x1b, 0x87,
  0x2d, 0xa8, 0xa6, 0x2b, 0x29, 0x22, 0xe5, 0x7f, 0x93, 0x28, 0x6e, 0xe5,

  0xcf, 0x1e, 0x3e, 0x8e, 0x6c, 0x1c, 0x04, 0xf6, 0xcf, 0xdc, 0x38, 0xa7,


  0x1c, 0xb1, 0xff, 0x0e, 0x06, 0xaf, 0x2d, 0x75, 0x8b, 0x64, 0x6a, 0x6b,
  0x5b, 0xe7, 0x9f, 0xbc, 0x16, 0xda, 0xed, 0xd1, 0x26, 0xf0, 0x49, 0xf7,
  0xd6, 0xcf, 0x5c, 0xcb, 0xc0, 0x75, 0x3e, 0x21, 0xe9, 0xb1, 0x94, 0xc6,
  0x6e, 0xf0, 0x33, 0x20, 0xa0, 0xd9, 0x05, 0x86, 0xc9, 0x56, 0x19, 0x16,
  0xef, 0xe7, 0x2d, 0x78, 0xc4, 0x6d, 0x6d, 0x54, 0xb2, 0x15, 0xb5, 0x20,
  0xd2, 0x08, 0xd1, 0x7c, 0x45, 0x88, 0x1f, 0x75, 0xd4, 0xcf, 0x22, 0x66,
  0x3e, 0xfb, 0x11, 0xb0, 0x99, 0xea, 0x92, 0x1d, 0x88, 0x18, 0x93, 0xd7,
  0x75, 0x8f, 0x95, 0x67, 0x05, 0x4a, 0xe3, 0x75, 0xba, 0x20, 0x73, 0x1d,
  0x63, 0xd8, 0xc3, 0x2a, 0x5d, 0x65, 0x3d, 0x0f, 0x5e, 0xf6, 0x88, 0x7f,
  0x7f, 0x1e, 0x85, 0x7d, 0x9f, 0x13, 0x1e, 0x55, 0x99, 0xfd, 0xf6, 0xfd,
  0x9b, 0xbf, 0xa8, 0xdd, 0xbd, 0x3b, 0xe8, 0xb1, 0x84, 0x3b, 0xd3, 0x9d,
  0x64, 0x5e, 0x22, 0xa0, 0x40, 0x40, 0xb4, 0x76, 0x9d, 0xff, 0xe5, 0xb2,
  0x2c, 0x83, 0xa0, 0x02, 0x92, 0x3e, 0x76, 0x28, 0xcc, 0x66, 0x9e, 0x1b,
  0x8b, 0x49, 0x77, 0x34, 0x7a, 0x0c, 0x7f, 0xc8, 0x9b, 0x57, 0x8f, 0x8f,
  0x0e, 0x0f, 0x8c, 0xd5, 0xba, 0xd3, 0xe1, 0x16, 0xbb, 0x9f, 0x3d, 0x68,
  0xb7, 0xed, 0x79, 0x67, 0xb7, 0x2b, 0xa2, 0xbd, 0x9d, 0xe3, 0xef, 0xcf,
  0xdf, 0x05, 0x6b, 0x34, 0x6b, 0x0a, 0x02, 0xa9, 0x7d, 0x6b, 0x74, 0xba,
  0x40, 0x6b, 0x7c, 0xcd, 0x3f, 0x46, 0xc3, 0xea, 0x48, 0xa8, 0xf2, 0x4d,

  0x95, 0x93, 0x8e, 0xbb, 0x45, 0x5b, 0xb2, 0x75, 0x5a, 0x16, 0x33, 0x23,
  0xfa, 0xcf, 0x08, 0xa2, 0x2f, 0xdb, 0x32, 0xba, 0xfa, 0xbd, 0xab, 0xeb,
  0xbf, 0x26, 0x6f, 0x07, 0xb8, 0x2a, 0x45, 0x98, 0xe1, 0xf2, 0x16, 0x3f,
  0x04, 0x22, 0x32, 0x81, 0x9b, 0x70, 0x8d, 0xc9, 0xfa, 0x32, 0x63, 0xf7,
  0x2e, 0x99, 0x66, 0xed, 0xdb, 0x76, 0x8b, 0x86, 0x44, 0xf0, 0xf8, 0xbc,
  0x80, 0x43, 0xbb, 0x2f, 0x16, 0xc2, 0xdc, 0x52, 0xa3, 0x21, 0xec, 0x23,
  0xda, 0x51, 0xb7, 0xfe, 0xae, 0xd7, 0xd1, 0x1d, 0xe0, 0x9d, 0x1c, 0xeb,
  0x20, 0xbd, 0x2d, 0xc2, 0x73, 0xf1, 0x98, 0xb3, 0x2b, 0xf2, 0x76, 0x4a,
  0x3c, 0x6e, 0x22, 0xc0, 0x20, 0x06, 0x6d, 0xec, 0xc2, 0x98, 0x0f, 0x1c,
  0x19, 0x04, 0xe8, 0xb8, 0x97, 0x16, 0x6d, 0x9c, 0x57, 0x02, 0x33, 0x60,
  0xeb, 0x27, 0xbb, 0x45, 0x13, 0x55, 0xa3, 0x22, 0x3e, 0x39, 0x0a, 0xe5,
  0x91, 0x2c, 0x45, 0xe0, 0x5d, 0xc4, 0xcd, 0x64, 0xa1, 0xa8, 0xdf, 0x38,
  0xb5, 0x77, 0x10, 0x8d, 0x43, 0xc4, 0x42, 0x52, 0x1c, 0x95, 0x10, 0xeb,
  0xac, 0x13, 0x97, 0xf0, 0xe3, 0x10, 0xb8, 0x29, 0x14, 0x89, 0x90, 0x28,
  0x43, 0x68, 0xa8, 0x78, 0x91, 0x89, 0xfe, 0xd0, 0xc4, 0x86, 0x60, 0x44,
  0xd7, 0x04, 0xb5, 0xa1, 0x89, 0x16, 0xf1, 0x3d, 0xfe, 0x3c, 0x42, 0x7c,
  0xef, 0xce, 0x2e, 0x8e, 0x9f, 0x0b, 0xc4, 0x97, 0x62, 0xe1, 0xa8, 0x99,
  0xc0, 0x89, 0x69, 0xdc, 0xc8, 0x9d, 0x6b, 0x0e, 0x49, 0xc8, 0xea, 0xa9,
  0x0f, 0x62, 0x57, 0x1e, 0x39, 0xe2, 0x74, 0x4d, 0xd8, 0xcb, 0xdb, 0xf4,
  0x22, 0xe4, 0xa2, 0xd4, 0x5f, 0x2c, 0x03, 0xa6, 0x27, 0x3a, 0xff, 0x10,


  0x19, 0x05, 0xf0, 0x19, 0x40, 0xa4, 0x60, 0x79, 0x1b, 0x90, 0x10, 0x8b,
  0x32, 0x36, 0xb8, 0x6c, 0xc2, 0xe2, 0x94, 0xfa, 0xa9, 0x86, 0x4d, 0x40,
  0x11, 0xa1, 0x7b, 0x23, 0x8d, 0xe4, 0x61, 0x8f, 0x58, 0x98, 0xcd, 0x4d,


  0x22, 0xce, 0x05, 0x12, 0xbb, 0x97, 0x4a, 0x8c, 0x33, 0xf2, 0x02, 0xfe,
  0xa9, 0x17, 0xe6, 0xaa, 0xf1, 0xee, 0x93, 0xd2, 0x89, 0xb9, 0x47, 0x6a,
  0xa5, 0x91, 0x55, 0x69, 0xcd, 0x14, 0xc1, 0xb0, 0x09, 0xc3, 0xd7, 0x60,
  0x81, 0x6d, 0xb7, 0x88, 0x6a, 0x69, 0x03, 0xab, 0xae, 0x21, 0x71, 0x27,
  0x43, 0x59, 0x16, 0x1b, 0xe0, 0xd0, 0x16, 0x7a, 0x90, 0x58, 0x7d, 0x8c,
  0x01, 0x51, 0xaa, 0x49, 0xf4, 0x4d, 0x8d, 0xe0, 0xf6, 0x2b, 0x10, 0xa0,

  0xf3, 0xc1, 0x9a, 0xcd, 0x19, 0xe8, 0xc1, 0x7c, 0xe4, 0xf1, 0x7e, 0x8f,


  0x2d, 0xcb, 0x2a, 0xef, 0x38, 0x6b, 0x0b, 0x5a, 0xf3, 0xc6, 0xf0, 0xc0,
  0x3a, 0x61, 0x73, 0x14, 0xb7, 0x0b, 0x9a, 0xdb, 0xaf, 0x17, 0x62, 0x5a,
  0x0e, 0xe4, 0x8c, 0x36, 0xe6, 0x31, 0xbe, 0xd5, 0xb0, 0x2f, 0x3d, 0x94,
  0x17, 0x9a, 0xa2, 0xc6, 0x9a, 0x12, 0x47, 0xf1, 0x14, 0xb4, 0xd6, 0xdc,
  0xcc, 0x92, 0xa2, 0xe7, 0x2e, 0xf8, 0x1d, 0x1a, 0x73, 0xe4, 0xa4, 0x18,

  0x25, 0x89, 0x8f, 0x40, 0xa6, 0x25, 0x47, 0x72, 0x30, 0xb4, 0xeb, 0xf0,
  0xb7, 0x4d, 0xa8, 0x7e, 0x3f, 0xf9, 0x5b, 0x39, 0x11, 0x27, 0x0c, 0x59,
  0x8e, 0x31, 0x24, 0x9f, 0x39, 0xf2, 0xe7, 0xd7, 0x86, 0xca, 0x66, 0x6b,
  0xf6, 0xab, 0xd2, 0x84, 0x24, 0x13, 0x9b, 0x5b, 0x3f, 0x53, 0xc0, 0x23,
  0xb9, 0x04, 0x8e, 0x26, 0xa7, 0x82, 0x6a, 0x21, 0x7a, 0x58, 0xed, 0x7c,
  0xd8, 0x45, 0x6b, 0x49, 0xa7, 0xe4, 0x0d, 0x31, 0x83, 0x0b, 0x38, 0x02,
  0x03, 0xee, 0xb9, 0x84, 0xf5, 0x74, 0xda, 0xac, 0x65, 0xe3, 0xbb, 0xb3,
  0x2b, 0xd5, 0x4b, 0x6a, 0xde, 0x05, 0x0c, 0x3c, 0xb2, 0x90, 0xa6, 0x86,
  0xf2, 0xd2, 0xe9, 0x9d, 0xea, 0x0b, 0x4e, 0xb8, 0x0a, 0xa0, 0xa3, 0x03,
  0x8d, 0x0f, 0x6b, 0x3c, 0x75, 0x12, 0x14, 0xed, 0xcc, 0xeb, 0x9e, 0x6e,
  0x2d, 0xbf, 0xa8, 0x9d, 0xe2, 0xf7, 0xdc, 0x62, 0xa7, 0xb3, 0x02, 0x4f,
  0xb6, 0xae, 0x7a, 0xd6, 0xa4, 0xb4, 0xcb, 0x1b, 0x8b, 0xd1, 0x9d, 0x4b,
  0xc0, 0x56, 0xd6, 0x20, 0x32, 0x88, 0x7a, 0x46, 0xaa, 0xb1, 0x41, 0x1c,
  0x5c, 0x1b, 0x4e, 0x9d, 0x84, 0x7a, 0xc4, 0x5b, 0xf9, 0x0a, 0xf3, 0xc3,
  0x1d, 0x30, 0x2b, 0x57, 0x51, 0x4a, 0xc3, 0x3c, 0xe2, 0x8c, 0xb1, 0xe4,
  0xf1, 0xe7, 0x8f, 0x1f, 0xed, 0x6a, 0xf3, 0x62, 0xcd, 0x42, 0xdc, 0x8d,


  0x75, 0x00, 0xc4, 0x8d, 0x93, 0x9e, 0x0a, 0xd0, 0x6b, 0x72, 0xea, 0x91,
  0xc9, 0x68, 0x1d, 0xe2, 0xd8, 0xcc, 0xb9, 0x69, 0x16, 0xb9, 0xd8, 0xd1,
  0x7e, 0x8e, 0x99, 0x72, 0x90, 0x3f, 0x40, 0x1f, 0xcb, 0xf8, 0xe5, 0x1d,
  0x70, 0xf8, 0xb4, 0x76, 0xcc, 0xdb, 0x55, 0x06, 0x31, 0xb4, 0x3f, 0x94,
  0x34, 0x4d, 0x7d, 0xdb, 0x45, 0xf9, 0x7a, 0xb4, 0xac, 0x9c, 0xd3, 0xcf,
  0xa1, 0xa9, 0x8a, 0xea, 0x71, 0x45, 0x1d, 0xd9, 0x4b, 0x4f, 0x2e, 0xb0,
  0x6f, 0x84, 0x6b, 0xbb, 0x58, 0xf0, 0xc4, 0x80, 0xaa, 0x81, 0x33, 0x51,
  0x73, 0x86, 0x54, 0x7b, 0x1f, 0x19, 0xfa, 0x14, 0xe0, 0x0b, 0xf2, 0xbe,

  0x24, 0x48, 0xc9, 0x99, 0x30, 0xe2, 0x6e, 0x20, 0x90, 0x97, 0xda, 0x1d,
  0x8a, 0x55, 0x8f, 0xb2, 0x72, 0xa5, 0xb9, 0x1c, 0xa4, 0x61, 0x71, 0x89,

  0x7c, 0xe1, 0x3e, 0xe0, 0x1d, 0x75, 0x83, 0xa4, 0x8a, 0x11, 0xd2, 0x9a,
  0x59, 0x6f, 0x7d, 0x8b, 0x52, 0x9b, 0x42, 0xf1, 0x74, 0xcb, 0x5a, 0xf4,
  0xef, 0x96, 0x2a, 0xc3, 0x8a, 0x36, 0xfe, 0x6a, 0x67, 0x23, 0x7a, 0x66,
  0x0f, 0x4b, 0x8a, 0x71, 0xf3, 0xe0, 0x4b, 0x09, 0x9b, 0xc3, 0x2e, 0x92,
  0x1d, 0x4c, 0x78, 0x6f, 0x6f, 0xf7, 0xfe, 0x49, 0xcb, 0x93, 0xf7, 0x4d,
  0xf2, 0x9c, 0x1d, 0x1b, 0x5e, 0x3b, 0x89, 0xb9, 0x37, 0x07, 0xfa, 0xa6,
  0x07, 0x97, 0x31, 0x60, 0x8a, 0x84, 0x83, 0xb9, 0x20, 0xcc, 0xd3, 0xf4,
  0x2e, 0x74, 0xe2, 0x6b, 0x56, 0x1a, 0x2f, 0xb0, 0xbd, 0x76, 0xad, 0x47,
  0x06, 0x9c, 0x9f, 0xb0, 0x10, 0x4a, 0x8d, 0x02, 0xbe, 0xda, 0x4b, 0x43,
  0x84, 0xa1, 0xbe, 0xe9, 0xa6, 0xe5, 0x2d, 0x0e, 0x26, 0x6e, 0x3e, 0x48,
  0x3c, 0x37, 0x3b, 0xdf, 0x42, 0xf5, 0x41, 0xb0, 0x3b, 0x3e, 0x52, 0x1b,
  0xa1, 0x4f, 0xdb, 0x0c, 0x4b, 0xee, 0xa4, 0x3e, 0x0a, 0x10, 0x91, 0xf9,
  0x49, 0xd7, 0xcd, 0x3b, 0xd2, 0x4b, 0xc1, 0x77, 0x91, 0xca, 0x80, 0x86,
  0xa3, 0x7e, 0x72, 0x6b, 0x66, 0x3c, 0x62, 0xee, 0xd8, 0x2e, 0x0d, 0xf9,
  0x74, 0x30, 0x9a, 0x6e, 0xc0, 0x78, 0x31, 0x37, 0x4b, 0xdf, 0xd8, 0x31,
  0x06, 0xe3, 0x99, 0xf0, 0x4f, 0x5b, 0x9b, 0x39, 0xe0, 0x3b, 0x0a, 0x18,
  0x9c, 0x98, 0xae, 0x8e, 0xae, 0x89, 0x21, 0x92, 0x83, 0xdd, 0xc3, 0x8d,
  0x29, 0x78, 0x36, 0x07, 0x0f, 0x7e, 0x5e, 0xc9, 0xc2, 0x0b, 0xe5, 0xac,
  0xfa, 0xda, 0x74, 0xd0, 0xb6, 0xaf, 0xe1, 0x69, 0xdb, 0xd7, 0x60, 0x41,
  0x29, 0xe2, 0x1a, 0x1a, 0x27, 0x5f, 0xd6, 0xc9, 0x3b, 0x7d, 0x2c, 0xd9,
  0x19, 0x9f, 0xbf, 0x3b, 0xfe, 0xea, 0x6c, 0xf7, 0x3e, 0x1f, 0x65, 0x9b,
  0xff, 0xdb, 0x75, 0xa5, 0x9a, 0x25, 0x2c, 0xd3, 0x87, 0x75, 0xf2, 0xd5,


  0x78, 0x3c, 0x7c, 0x79, 0x7e, 0x82, 0x2e, 0x97, 0x63, 0xf3, 0x67, 0x0f,
  0x16, 0xfb, 0x08, 0xad, 0x00, 0x86, 0xdf, 0x4a, 0xed, 0x68, 0xad, 0x49,
  0x82, 0xf0, 0x00, 0xd2, 0x61, 0x0a, 0x7a, 0x22, 0xef, 0x91, 0x85, 0xf6,
  0xc0, 0xf0, 0x5d, 0x93, 0xe7, 0xfc, 0x64, 0x0f, 0x9f, 0xa2, 0x4f, 0x62,
  0x41, 0x3d, 0xee, 0x83, 0x75, 0xd8, 0xe0, 0x92, 0x34, 0x1f, 0xa4, 0x98,
  0x82, 0x41, 0x6b, 0x32, 0xb8, 0xb1, 0xfc, 0x48, 0x9c, 0xb8, 0x80, 0x5d,
  0xbc, 0xf4, 0x86, 0x5c, 0x61, 0x54, 0x5b, 0xa1, 0xa0, 0xa9, 0x1d, 0xd7,
  0x1b, 0x4c, 0x34, 0x86, 0xc6, 0x5b, 0x10, 0xfc, 0xc8, 0x58, 0xa3, 0xab,
  0x5d, 0xa7, 0xc8, 0xf6, 0x70, 0x9d, 0x24, 0xcf, 0xb7, 0xa5, 0x71, 0x7c,
  0x51, 0xae, 0x2f, 0xaf, 0xd8, 0xc0, 0x6a, 0xfb, 0x21, 0xc0, 0xcb, 0x35,
  0xfa, 0x6a, 0x7b, 0x37, 0x98, 0x49, 0x06, 0x24, 0x88, 0x77, 0x54, 0xef,
  0xa9, 0x32, 0x0a, 0x0e, 0xb1, 0x7a, 0xc3, 0x49, 0x17, 0xb3, 0xdf, 0x04,
  0x03, 0x7d, 0x83, 0x06, 0x32, 0xe1, 0xc0, 0x29, 0xdc, 0x68, 0x45, 0xb3,
  0x58, 0xca, 0x5f, 0xd3, 0xe2, 0x0e, 0xee, 0x52, 0xf1, 0xdf, 0xa3, 0xfe,
  0xd3, 0xd2, 0x74, 0x9b, 0xd0, 0x9b, 0x6a, 0x0a, 0x43, 0x9f, 0x53, 0x50,
  0xb9, 0xf0, 0x73, 0x13, 0xcd, 0xa2, 0xa7, 0xfd, 0xd2, 0x88, 0x69, 0x98,
  0x76, 0xc3, 0x62, 0xa0, 0xa3, 0x0c, 0x8c, 0x39, 0x2c, 0x61, 0x32, 0x51,
  0x84, 0x85, 0x08, 0x22, 0xac, 0x08, 0x2d, 0x20, 0x77, 0xd2, 0x49, 0x5d,
  0x2e, 0xd6, 0x0d, 0x74, 0x01, 0x72, 0x8a, 0x52, 0x71, 0xcd, 0x2e, 0x48,
  0x57, 0xc2, 0x97, 0x66, 0xd4, 0xc4, 0x4b, 0x40, 0x4d, 0x62, 0x75, 0x00,
  0xae, 0x3d, 0xe9, 0xc8, 0x85, 0x00, 0x38, 0x8a, 0x28, 0xfe, 0x09, 0xda,
  0x59, 0x1e, 0x0b, 0x43, 0xad, 0x90, 0x96, 0x74, 0xad, 0x60, 0x6f, 0xe1,
  0xf9, 0xe9, 0x59, 0xb5, 0x76, 0x47, 0xbd, 0xeb, 0xc4, 0xba, 0x5b, 0x89,
  0xea, 0x4e, 0x6b, 0x8c, 0x71, 0xb6, 0xde, 0x4c, 0x65, 0xcd, 0x16, 0x98,
  0xd0, 0x2d, 0x99, 0xdc, 0xd9, 0x8f, 0xf1, 0x77, 0x52, 0xe4, 0xf2, 0x58,
  0x45, 0xf8, 0xa1, 0xd0, 0x4a, 0xee, 0x30, 0x46, 0x9b, 0x92, 0x51, 0xda,
  0x5f, 0xea, 0x0c, 0xfd, 0x6d, 0xc6, 0x79, 0x67, 0x7c, 0xc4, 0x38, 0x8d,
  0xd6, 0x21, 0xb3, 0x96, 0xdf, 0x6d, 0x6a, 0x47, 0x1b, 0x31, 0xc2, 0x13,



  0x01, 0x01, 0x53, 0x28, 0xdd, 0xae, 0x4a, 0xd5, 0x23, 0xf2, 0xb7, 0xa5,
  0xdc, 0x4e, 0x93, 0x5f, 0xf6, 0xbe, 0x61, 0x4b, 0x81, 0xca, 0xcd, 0x1d,
  0x6f, 0xdd, 0xe9, 0x8c, 0x1e, 0xb0, 0x21, 0x6e, 0xfd, 0xee, 0x87, 0x81,
  0x65, 0x67, 0xe3, 0xc5, 0x35, 0x20, 0x29, 0xed, 0xa2, 0x0c, 0xe7, 0xff,
  0x28, 0x7f, 0xa1, 0x3b, 0xf0, 0x5d, 0x5e, 0x18, 0xcd, 0xb0, 0xde, 0x55,
  0xe2, 0xcc, 0x8b, 0x18, 0x8c, 0x02, 0xf1, 0x8e, 0xed, 0xda, 0x58, 0x62,

  0x86, 0xe3, 0xb8, 0x44, 0x3d, 0x52, 0x9c, 0x39, 0x60, 0x13, 0xb0, 0x22,
  0xaf, 0xb1, 0xe9, 0xdd, 0x2a, 0xa8, 0x9f, 0x99, 0x5a, 0xa6, 0x83, 0x31,
  0x00, 0x5e, 0x6c, 0xcc, 0x82, 0x22, 0xbf, 0x1d, 0xd9, 0xe0, 0xbe, 0x45,
  0x5f, 0xf3, 0x83, 0x9b, 0x86, 0x11, 0x46, 0x7a, 0xda, 0x83, 0xb3, 0x75,
  0x43, 0x58, 0xb4, 0xbb, 0x58, 0xe7, 0xce, 0xe3, 0xdd, 0x64, 0xde, 0xac,
  0x76, 0x0e, 0x76, 0x19, 0xc3, 0x5e, 0x7a, 0xa9, 0x97, 0x4e, 0xdc, 0x87,
  0x5e, 0x1c, 0xca, 0x2d, 0x4c, 0x5e, 0xd9, 0xcf, 0x22, 0xb8, 0x49, 0x70,
  0x6e, 0xa8, 0xe2, 0x9b, 0xcb, 0x0d, 0xe6, 0x0d, 0xb3, 0x0d, 0x98, 0x91,
  0xc6, 0x1c, 0xd9, 0x3b, 0xae, 0xc5, 0x5f, 0x11, 0xb2, 0x2b, 0x2a, 0x1b,

  0x8d, 0x05, 0xe1, 0xba, 0xe0, 0x4a, 0x2f, 0x30, 0x29, 0x7d, 0x36, 0x3b,
  0xb7, 0x98, 0x0d, 0x89, 0x87, 0x5c, 0x56, 0xa5, 0x11, 0x91, 0x55, 0x04,
  0xff, 0x52, 0x6c, 0x8a, 0x0b, 0x54, 0xdf, 0x5c, 0xe7, 0x55, 0x59, 0x00,

  0x62, 0xf4, 0x3a, 0xad, 0x72, 0x84, 0xf9, 0xb7, 0xbe, 0x3e, 0x7b, 0x7b,
  0xbc, 0xe5, 0x3b, 0x45, 0xe6, 0xb9, 0xf8, 0xd1, 0x71, 0x7e, 0x5d, 0x2f,
  0xb5, 0x9e, 0x66, 0xcc, 0x69, 0x68, 0x44, 0xfa, 0x94, 0xd5, 0x3e, 0x00,
  0x31, 0x00, 0x2a, 0x2e, 0xb3, 0x11, 0x72, 0xa3, 0x4a, 0x4a, 0x12, 0x80,
  0xf4, 0x55, 0x54, 0x0a, 0x43, 0x12, 0x50, 0xac, 0xfb, 0x8d, 0x9a, 0x86,
  0xe8, 0x80, 0x53, 0xfa, 0x9d, 0xfd, 0x12, 0xaf, 0xfb, 0x1f, 0xa9, 0xf9,
  0xda, 0x16, 0xc5, 0xb9, 0xd8, 0xbb, 0xe2, 0x71, 0x79, 0x47, 0x96, 0xcd,

  0x76, 0x5b, 0x00, 0x6e, 0xd7, 0x64, 0x8c, 0x37, 0xdb, 0xba, 0xbd, 0x48,
  0x17, 0x75, 0x3c, 0x3e, 0xec, 0xb8, 0xdc, 0xf3, 0x75, 0xa6, 0x6a, 0xfe,
  0x84, 0x1b, 0x9d, 0x07, 0x77, 0xb7, 0xef, 0x39, 0xdf, 0xbe, 0xdb, 0xe6,
  0x5e, 0x7c, 0xa4, 0xd4, 0x15, 0x88, 0xb5, 0x9b, 0x35, 0xb7, 0xa3, 0xf4,
  0xd4, 0x63, 0x22, 0xf4, 0x2a, 0x9a, 0xcf, 0x97, 0x53, 0x86, 0x15, 0xb3,
  0x71, 0xd5, 0x0e, 0xe0, 0xb3, 0x6a, 0x49, 0x85, 0xd7, 0xb6, 0x15, 0xa3,
  0xf5, 0x02, 0x8e, 0x1a, 0xc1, 0x8d, 0x34, 0x2a, 0xc5, 0x5d, 0xcc, 0x2b,
  0xc2, 0xf0, 0x71, 0x51, 0x64, 0xf9, 0xd2, 0xc0, 0xaf, 0xa6, 0xee, 0x83,
  0x20, 0x76, 0xc9, 0x28, 0x56, 0x2f, 0x61, 0x0c, 0x5e, 0x46, 0x71, 0xb5,
  0xf8, 0x6f, 0x8a, 0x64, 0x1b, 0xea, 0xc7, 0x76, 0x27, 0xd5, 0xb1, 0x8d,

  0x8a, 0x25, 0xf3, 0x37, 0x36, 0x67, 0x6c, 0xc4, 0x9f, 0x51, 0x3a, 0xa0,
  0x70, 0x50, 0xfb, 0x91, 0x14, 0x59, 0x36, 0x59, 0x1c, 0xb4, 0xcd, 0xde,
  0x47, 0xb3, 0x34, 0x69, 0xa4, 0x50, 0xaf, 0xab, 0x6b, 0x54, 0xbd, 0x4a,
  0xff, 0x2d, 0x4e, 0x0d, 0x76, 0xe7, 0x21, 0xe7, 0x10, 0x91, 0xf2, 0xde,
  0x0c, 0x29, 0x6d, 0xb3, 0x12, 0x64, 0xac, 0xe4, 0x2b, 0x9e, 0x85, 0x9d,
  0xa0, 0xb5, 0x74, 0x08, 0x00, 0x85, 0xb5, 0xd8, 0x20, 0x49, 0xbf, 0xac,
  0x81, 0x9b, 0xdb, 0x54, 0xe9, 0xd4, 0xfd, 0x65, 0x98, 0xd6, 0xd3, 0x3c,
  0xd7, 0x7e, 0x4e, 0x14, 0x1f, 0xcc, 0x28, 0x1d, 0x36, 0x8a, 0x8f, 0xe3,
  0xce, 0xc3, 0x76, 0x52, 0x99, 0x95, 0xec, 0xde, 0xe5, 0x9c, 0x93, 0x94,
  0x5b, 0xfd, 0x51, 0x06, 0x0b, 0x4a, 0xe3, 0x24, 0x78, 0x18, 0x6b, 0x71,
  0xa5, 0x95, 0x36, 0x3d, 0xa6, 0xad, 0xb1, 0xbe, 0x0f, 0x7c, 0xf3, 0x5b,
  0x37, 0x61, 0x48, 0x28, 0x55, 0x75, 0xc3, 0xa6, 0xe4, 0xcd, 0xcd, 0xa1,
  0xff, 0xcc, 0xa6, 0x68, 0x78, 0x07, 0x14, 0xa9, 0x28, 0x87, 0xe9, 0x62,

  0x15, 0x4d, 0x71, 0x1b, 0xef, 0xb6, 0x1a, 0x5e, 0xbe, 0x3c, 0x3d, 0x7f,
  0x07, 0xbc, 0x3c, 0x42, 0x4e, 0x2f, 0x6a, 0xce, 0x52, 0xa0, 0x9f, 0x51,
  0x02, 0x7b, 0xc1, 0xb0, 0x92, 0x48, 0x1a, 0x99, 0x85, 0xe5, 0xd5, 0x68,
  0x0e, 0x01, 0xf3, 0x21, 0x66, 0x5f, 0x71, 0x7a, 0x5b, 0x91, 0x78, 0x05,

  0x8e, 0xcc, 0xe0, 0xd5, 0xbe, 0xe8, 0x2e, 0xc7, 0x7c, 0xd5, 0x7d, 0x5b,
  0xbb, 0x2c, 0xd8, 0x42, 0xa4, 0xf6, 0xbb, 0x16, 0x30, 0xb0, 0x4c, 0x04,
  0x1e, 0x30, 0xe0, 0xe7, 0x4d, 0x66, 0xb1, 0x09, 0xc5, 0xae, 0xb3, 0x58,
  0xa8, 0xda, 0xc1, 0x8a, 0x93, 0x34, 0x00, 0x5c, 0xa1, 0xf5, 0xf1, 0xf5,
  0x66, 0x44, 0x03, 0xb3, 0xb1, 0xc5, 0xaa, 0xe8, 0xe2, 0x6d, 0xc9, 0x76,
  0x47, 0x8d, 0xd0, 0x00, 0xfc, 0x6d, 0x63, 0x5d, 0x98, 0x4e, 0x95, 0x1a,

  0x67, 0x6d, 0x38, 0xe0, 0x77, 0x03, 0xfe, 0xea, 0x64, 0x4d, 0x1c, 0xa2,
  0xf3, 0x05, 0x39, 0x5e, 0x56, 0x9a, 0xf8, 0x09, 0xfa, 0x9e, 0xb8, 0xbf,
  0x18, 0x49, 0x89, 0x6a, 0x38, 0xb3, 0x74, 0x69, 0xd4, 0x82, 0x42, 0x0b,
  0x05, 0xc8, 0xf3, 0x4b, 0xf9, 0x9c, 0xdd, 0x09, 0xaf, 0x53, 0xe1, 0x58,
  0x0a, 0x67, 0x0f, 0x2e, 0xd0, 0xa9, 0x1f, 0xe0, 0xcf, 0x10, 0x27, 0xf5,

  0x87, 0x8f, 0xd5, 0x84, 0xe1, 0x75, 0x8b, 0x7b, 0x20, 0x71, 0x1b, 0x6d,
  0xfd, 0xc9, 0xc0, 0xe1, 0x3c, 0x84, 0xed, 0xfe, 0x4d, 0x9d, 0xab, 0xae,
  0xd6, 0xc5, 0x27, 0x33, 0x85, 0xb0, 0x1c, 0x5a, 0x93, 0x7d, 0xa9, 0xf9,
  0x05, 0xb7, 0xcc, 0xa5, 0xbf, 0x70, 0xff, 0x65, 0x3b, 0x02, 0x61, 0x96,
  0x5f, 0x93, 0x23, 0x4f, 0x40, 0xbc, 0x3d, 0xe5, 0x34, 0x36, 0xbb, 0x99,



  0xbd, 0x1f, 0x66, 0x56, 0x76, 0x03, 0xa3, 0xe9, 0xec, 0x7a, 0xd2, 0xae,

  0xd9, 0xbc, 0xa1, 0x46, 0x4f, 0xa4, 0x48, 0x14, 0x5b, 0x01, 0xa4, 0x50,

  0x91, 0xa4, 0xa9, 0x5e, 0x01, 0x3b, 0x5c, 0x83, 0xec, 0xc9, 0x64, 0xc3,
  0x37, 0x81, 0xdd, 0xe2, 0x75, 0x9f, 0x8a, 0xcc, 0xa4, 0x5d, 0x9b, 0xdf,
  0x47, 0x07, 0xac, 0xa4, 0xc0, 0x91, 0x65, 0x88, 0xc0, 0x95, 0xf2, 0x4b,
  0x26, 0x8a, 0xd5, 0xd9, 0xa8, 0x2f, 0xac, 0xdf, 0x98, 0x32, 0xc2, 0xb7,
  0x5c, 0x29, 0x57, 0x56, 0x58, 0x22, 0x5b, 0x46, 0x81, 0x67, 0x7f, 0xf5,
  0x5d, 0x72, 0x0b, 0xf1, 0x36, 0xca, 0xfe, 0xb0, 0xb3, 0x49, 0xc5, 0x83,



  0xb8, 0xe1, 0xbb, 0x90, 0x19, 0xbe, 0x6b, 0xf3, 0x42, 0xb7, 0xd2, 0xa0,
  0x8e, 0x3a, 0x72, 0xa3, 0xef, 0xe5, 0x81, 0x34, 0x3c, 0x25, 0xd8, 0x9f,
  0xbf, 0x0b, 0xab, 0xbc, 0xc5, 0xfd, 0x37, 0x41, 0x7d, 0xf6, 0x7d, 0x5c,

  0xd0, 0x9a, 0xee, 0xf2, 0xb3, 0x1e, 0xd7, 0xd6, 0xcf, 0x67, 0x81, 0x6a,
  0x51, 0x09, 0xab, 0x0b, 0x39, 0x60, 0x11, 0x30, 0x40, 0xa1, 0xbb, 0x5f,
  0x87, 0x05, 0xd2, 0x27, 0x8d, 0x95, 0x7d, 0x49, 0x59, 0x29, 0xe4, 0x06,
  0x0c, 0xd8, 0xe0, 0x99, 0xf5, 0x1b, 0x71, 0xad, 0x8d, 0xed, 0xb2, 0xa6,


  0x6f, 0x25, 0x78, 0x4b, 0xd9, 0x8d, 0xe2, 0xe4, 0x2e, 0xd7, 0x88, 0xa6,
  0x05, 0x29, 0x90, 0x8e, 0xf2, 0x53, 0x46, 0xf9, 0xa0, 0x3a, 0xf7, 0xb4,
  0x2a, 0x38, 0x3f, 0x66, 0xe6, 0xe7, 0xe1, 0x19, 0x66, 0x6a, 0xaf, 0x16,
  0x43, 0xce, 0x0d, 0xeb, 0xd0, 0x6f, 0x54, 0xe7, 0xa8, 0x87, 0x8d, 0x9a,
  0xb0, 0xae, 0xa3, 0x9a, 0xd6, 0x0b, 0x6d, 0xb8, 0x37, 0xfe, 0xb5, 0x11,
  0xef, 0x46, 0xff, 0xa5, 0x69, 0x6f, 0x19, 0xdf, 0x1c, 0x4b, 0xfe, 0x9d,
  0x9d, 0x01, 0x4c, 0xc1, 0x03, 0xb1, 0xe8, 0x98, 0x20, 0xea, 0x81, 0x5d,
  0x58, 0x1b, 0xb4, 0xf1, 0x69, 0x70, 0x76, 0x42, 0x6c, 0xf9, 0x2c, 0x8a,
  0xbe, 0xa1, 0x97, 0x52, 0x1a, 0xfa, 0x4a, 0xac, 0x89, 0xae, 0x91, 0xc2,
  0xfe, 0x9c, 0xbc, 0x36, 0x0b, 0x25, 0x2b, 0x83, 0xda, 0xbb, 0xff, 0x19,
  0x0a, 0x4a, 0xec, 0x5a, 0xa2, 0x3b, 0x80, 0x8d, 0xc7, 0xc3, 0x37, 0x43,
  0xd8, 0xa6, 0x3e, 0x26, 0x1b, 0x81, 0x34, 0x8e, 0x3c, 0x3e, 0xc5, 0xb9,
  0x12, 0xd2, 0x3d, 0x28, 0xee, 0x4a, 0x22, 0x53, 0x00, 0x75, 0xd2, 0x57,
  0x6b, 0x43, 0xa9, 0xa4, 0xa6, 0x70, 0xb7, 0x2f, 0xce, 0xab, 0x2d, 0xc9,
  0x3c, 0x00, 0xbb, 0xa5, 0x09, 0x7b, 0x33, 0x0e, 0xa8, 0x80, 0x03, 0x10,
  0x75, 0x66, 0x58, 0x28, 0xd7, 0x78, 0x4d, 0xaa, 0xf2, 0x53, 0xc6, 0xfc,
  0x02, 0x46, 0x21, 0x50, 0xb3, 0x58, 0x07, 0x16, 0x3f, 0xba, 0x91, 0x50,

  0xdc, 0xd0, 0x83, 0x72, 0x4d, 0x82, 0x80, 0x39, 0x77, 0x17, 0x15, 0xb8,
  0x0d, 0x27, 0xc7, 0x72, 0xbc, 0x0e, 0xa0, 0x0b, 0xed, 0xc1, 0xc1, 0x57,
  0x6d, 0x4a, 0x20, 0x7d, 0xbf, 0x21, 0xcf, 0xb6, 0xa7, 0xee, 0xf3, 0xec,
  0xc8, 0x91, 0x3e, 0xbc, 0x69, 0xa8, 0xa1, 0x25, 0x38, 0x2f, 0x93, 0x17,
  0xcc, 0x10, 0x6e, 0xef, 0x50, 0x02, 0xda, 0xf5, 0x50, 0xa2, 0xf9, 0xed,
  0x50, 0xad, 0xc5, 0x99, 0xad, 0x1d, 0x9c, 0x4b, 0x4d, 0x0d, 0xd7, 0xa4,
  0xcc, 0x1c, 0x74, 0xaf, 0xb4, 0xbf, 0x00, 0xd4, 0x48, 0x08, 0x86, 0x4b,
  0x2e, 0x4e, 0xeb, 0x7a, 0xe3, 0xf2, 0x65, 0x98, 0x4f, 0x74, 0x3a, 0xc0,
  0x5b, 0xca, 0x6b, 0x67, 0x1f, 0xfc, 0x57, 0xca, 0xe0, 0x36, 0xc6, 0x48,
  0x43, 0x29, 0x7c, 0xfc, 0xa5, 0xc0, 0x5c, 0xe0, 0x46, 0x90, 0xb6, 0xc6,
  0x87, 0x0b, 0xf4, 0x2d, 0x9e, 0x10, 0x41, 0xc7, 0xfb, 0x5a, 0x1d, 0x77,
  0xe6, 0x48, 0x8e, 0xc9, 0xd2, 0x8c, 0x18, 0xf1, 0x8a, 0x9e, 0x82, 0x35,
  0xe6, 0x82, 0xea, 0xcf, 0xd9, 0x76, 0xe2, 0x11, 0x49, 0x35, 0x8d, 0x4e,
  0x71, 0x49, 0x2d, 0xcc, 0x61, 0xc4, 0xd3, 0x42, 0x33, 0x92, 0x64, 0x35,
  0x6d, 0x56, 0xab, 0x3f, 0xb2, 0x3d, 0x20, 0x5b, 0xb9, 0x4e, 0xb0, 0x2e,
  0x61, 0xd6, 0xdc, 0x44, 0xda, 0x38, 0x62, 0x36, 0x89, 0x7b, 0x68, 0xe0,
  0xfd, 0xfd, 0xf9, 0xe7, 0xfb, 0x03, 0x31, 0x47, 0x29, 0x40, 0xe9, 0x3f,
  0x03, 0x40, 0xe1, 0x88, 0x06, 0x48, 0xcf, 0x99, 0x9f, 0xda, 0x47, 0x7b,
  0xd0, 0xf3, 0x29, 0x55, 0xe9, 0x88, 0xf2, 0x14, 0xda, 0xce, 0x6a, 0xe7,
  0x09, 0x6c, 0x7a, 0x3c, 0x3f, 0x75, 0x2c, 0x53, 0x77, 0xe6, 0x29, 0x0d,
  0x72, 0x18, 0x27, 0x12, 0xe1, 0xde, 0x46, 0xaf, 0xc8, 0xa8, 0x0f, 0x89,
  0x5e, 0x8b, 0xf8, 0x9d, 0x38, 0xf9, 0x50, 0xc8, 0xcd, 0xf6, 0xf0, 0x44,
  0x07, 0x33, 0x26, 0x6d, 0x9c, 0xa3, 0xb9, 0x30, 0x5b, 0x68, 0x40, 0xa4,
  0x53, 0x36, 0x7b, 0xbf, 0xf1, 0x9e, 0x3c, 0x1b, 0x3d, 0x6a, 0xdd, 0x93,
  0x66, 0xb1, 0x1c, 0xde, 0x4c, 0xee, 0x09, 0x57, 0x5d, 0x9c, 0xbe, 0x45,
  0xba, 0x8e, 0xb2, 0x1b, 0x74, 0xd1, 0xd1, 0xc8, 0x01, 0xc9, 0x2a, 0x76,
  0xef, 0x12, 0xba, 0x3a, 0x26, 0x12, 0xb1, 0xe9, 0x3b, 0x91, 0x19, 0x5b,
  0xed, 0x2b, 0x8e, 0x1a, 0x01, 0x2b, 0x4c, 0x68, 0x44, 0x44, 0x20, 0xa8,
  0x5a, 0x7f, 0x91, 0x47, 0x8b, 0xb2, 0x34, 0x2b, 0x3a, 0xbb, 0xcd, 0xa6,
  0x6b, 0xa4, 0x16, 0x90, 0x62, 0x4f, 0xf8, 0x5f, 0x9b, 0x63, 0x1e, 0x5e,
  0x9c, 0x43, 0x22, 0x1b, 0xe6, 0x07, 0xdd, 0xcd, 0x70, 0xad, 0xd4, 0x64,
  0xf1, 0xbc, 0xfa, 0xc0, 0xe3, 0xc9, 0xe0, 0x04, 0xf8, 0x5d, 0xfb, 0x57,
  0x41, 0x78, 0x1f, 0xb5, 0x18, 0xa4, 0xcc, 0x18, 0x7a, 0xca, 0x2f, 0x0b,
  0x56, 0x17, 0xdf, 0xe6, 0xd3, 0xaa, 0xac, 0xcb, 0x39, 0x67, 0x19, 0x7a,
  0xa6, 0xed, 0xc9, 0xc9, 0x38, 0xb9, 0xc9, 0x26, 0x5a, 0xce, 0x3c, 0x0a,
  0xfd, 0xff, 0xcc, 0x45, 0x28, 0xaa, 0x55, 0xe5, 0x59, 0x43, 0xbb, 0xa6,
  0x71, 0x6c, 0xc2, 0xf7, 0x42, 0x53, 0x41, 0x41, 0xbf, 0x81, 0xed, 0x45,
  0x7d, 0x59, 0x17, 0x10, 0x4d, 0xab, 0xac, 0x8c, 0xe4, 0x32, 0xf0, 0x04,
  0x54, 0xac, 0x30, 0x9d, 0x40, 0xff, 0x9a, 0xa4, 0xd2, 0xf1, 0x8e, 0xbd,
  0x3a, 0x86, 0xed, 0x90, 0x76, 0x29, 0xde, 0xb0, 0x4f, 0xe4, 0xe6, 0x0c,
  0xea, 0x8c, 0x26, 0x19, 0xf5, 0x88, 0x25, 0x76, 0xe0, 0xb7, 0x2d, 0x43,
  0x87, 0xd6, 0x59, 0x59, 0x21, 0x7f, 0xcc, 0xeb, 0x46, 0x45, 0x6d, 0x5b,
  0xd7, 0x15, 0xb9, 0xf9, 0x01, 0x3d, 0x1b, 0xf2, 0xd3, 0x9b, 0xab, 0x92,
  0x7b, 0xf7, 0x61, 0x9b, 0x9d, 0xce, 0x86, 0xa2, 0x2c, 0xe9, 0x77, 0x02,
  0xae, 0xe0, 0xe4, 0x8d, 0x7f, 0x50, 0x51, 0x98, 0x4a, 0x39, 0x0f, 0x57,
  0x0e, 0x2c, 0xf9, 0x25, 0xaf, 0xf3, 0xcb, 0x9e, 0xd6, 0xc4, 0xec, 0xf2,
  0x03, 0x34, 0x87, 0x53, 0x8c, 0x30, 0x23, 0x11, 0x9a, 0x15, 0xdf, 0xd2,
  0xa0, 0xe1, 0x36, 0xfd, 0x2b, 0x74, 0x9e, 0xf7, 0x50, 0xdf, 0x6f, 0x1c,
  0x06, 0xb4, 0xbe, 0x0b, 0x6f, 0x2e, 0xf6, 0x0a, 0x38, 0x8d, 0xdd, 0x53,
  0xd9, 0x5d, 0xe4, 0x3c, 0x00, 0x0f, 0xb9, 0x4f, 0x5f, 0x8f, 0x07, 0x59,

  0x34, 0x0a, 0x19, 0xc9, 0x25, 0xf2, 0x02, 0xe9, 0xf2, 0xef, 0x19, 0x8e,
  0xa7, 0x1d, 0xa5, 0xf4, 0xaf, 0x6e, 0x49, 0x3f, 0x38, 0x1c, 0x4e, 0xb2,
  0x94, 0xba, 0x63, 0xbd, 0x68, 0x48, 0x61, 0xda, 0x54, 0x55, 0x14, 0x29,
  0x2b, 0xfa, 0x33, 0xbf, 0x7b, 0x01, 0x5d, 0x8b, 0x8e, 0xf6, 0xec, 0xe5,
  0x87, 0x8b, 0xaf, 0x93, 0xc3, 0xd1, 0xfe, 0x83, 0xaa, 0x8a, 0xc0, 0x10,
  0x5a, 0x63, 0xe8, 0xe1, 0xa1, 0xc9, 0x76, 0xf1, 0xb7, 0x75, 0xd1, 0x6e,
  0xbe, 0x13, 0x8b, 0xab, 0x88, 0xfe, 0xa4, 0xe2, 0x97, 0xd2, 0xbc, 0xba,

  0x99, 0xf1, 0x7e, 0x7b, 0xb6, 0xe1, 0x10, 0xe6, 0x77, 0x75, 0x5f, 0x08,
  0xba, 0x8e, 0x42, 0xab, 0xb4, 0x26, 0x2b, 0xc0, 0x4f, 0x1a, 0xe8, 0x46,
  0x23, 0x2c, 0xb2, 0x5c, 0xf8, 0x4e, 0xd9, 0xc6, 0xca, 0xd0, 0x63, 0xdf,
  0xbf, 0x79, 0xd5, 0x19, 0xee, 0xc9, 0xd3, 0xc7, 0xfb, 0xbf, 0x62, 0x82,
  0x65, 0x49, 0x16, 0x84, 0x98, 0x64, 0x51, 0xc4, 0xa3, 0xef, 0x2a, 0x2a,
  0x39, 0x56, 0x1f, 0x51, 0x29, 0x0f, 0xf9, 0x90, 0x08, 0x75, 0x33, 0xa3,
  0x4c, 0x3b, 0x8b, 0x98, 0x52, 0xa9, 0xb6, 0xff, 0x9f, 0xff, 0x0c, 0xcd,
  0xba, 0xbf, 0xfe, 0x88, 0x50, 0x0e, 0xda, 0x91, 0xda, 0x0a, 0x0d, 0x65,
  0x32, 0xb5, 0x13, 0xc7, 0x74, 0x9d, 0xb7, 0x7f, 0xb7, 0x9d, 0xd8, 0xa6,
  0x61, 0x62, 0x98, 0xc7, 0x7b, 0x2e, 0x68, 0xb8, 0x4f, 0x67, 0xa7, 0xc7,
  0x0a, 0x48, 0xf9, 0xd4, 0xd3, 0x08, 0x74, 0x17, 0xa4, 0x95, 0xd6, 0xac,
  0xaf, 0xe9, 0x9f, 0x76, 0xbf, 0x12, 0xe8, 0x35, 0x0d, 0x71, 0x50, 0x28,
  0x82, 0xf3, 0xe2, 0xb0, 0x02, 0xd2, 0x45, 0x51, 0x7a, 0x9e, 0x17, 0x3d,
  0x7e, 0x67, 0x49, 0xfe, 0xfa, 0x4f, 0x73, 0x02, 0x83, 0xe6, 0xa6, 0xfc,
  0x67, 0xdb, 0x07, 0x6d, 0x34, 0x0c, 0x9a, 0xef, 0xc7, 0xdf, 0x1d, 0x50,
  0x35, 0xd7, 0x56, 0x77, 0x88, 0x12, 0xcd, 0x24, 0xec, 0xa9, 0x5a, 0x05,
  0x69, 0x13, 0xb0, 0xb2, 0x7e, 0x90, 0x0a, 0xc5, 0x07, 0xa4, 0x35, 0xfe,
  0x73, 0x44, 0xff, 0xfd, 0xeb, 0xc1, 0xf0, 0xf1, 0x8f, 0xf6, 0xa3, 0xbf,
  0x3b, 0xf8, 0xf8, 0xbb, 0xc3, 0xad, 0x58, 0xb1, 0x9e, 0x83, 0x6d, 0xf0,
  0x92, 0x4b, 0x49, 0xa1, 0x2d, 0xee, 0xa4, 0xc2, 0x46, 0x82, 0xc3, 0xae,
  0x4d, 0x29, 0x9a, 0x9e, 0x47, 0xb0, 0xad, 0xc8, 0xe7, 0x38, 0xea, 0x3a,
  0xfa, 0xb5, 0x55, 0xa9, 0x32, 0x87, 0x9b, 0x92, 0xdf, 0x57, 0x70, 0x0b,
  0xba, 0x21, 0x52, 0xfb, 0x11, 0xf0, 0x42, 0x82, 0xd1, 0xf2, 0xc9, 0x83,
  0x90, 0x6e, 0x14, 0x1e, 0x25, 0xdc, 0x0d, 0x49, 0x69, 0x33, 0xf2, 0x2c,
  0x4d, 0x3a, 0x9b, 0x3e, 0x99, 0xd8, 0x9f, 0x14, 0x59, 0x50, 0x44, 0xa7,
  0xe5, 0xb6, 0x6c, 0xbd, 0x29, 0x3b, 0x28, 0x5d, 0xba, 0x01, 0xe3, 0x7f,
  0x65, 0x89, 0xac, 0xdc, 0x06, 0x4e, 0x71, 0xa5, 0x83, 0xac, 0xb1, 0xbf,
  0x51, 0x02, 0x8e, 0xef, 0x9f, 0x61, 0xa9, 0x62, 0x06, 0xcc, 0x6b, 0x17,


  0x3a, 0xc3, 0xcf, 0x24, 0x6c, 0x46, 0xf0, 0x0c, 0xe8, 0x93, 0x19, 0x2b,

  0xae, 0x4e, 0x27, 0xd4, 0x45, 0xb4, 0xd5, 0x94, 0xcd, 0x76, 0xd8, 0x9a,
  0x38, 0xa4, 0xb0, 0xb4, 0xee, 0xd9, 0x10, 0x7f, 0x2b, 0xbc, 0x4d, 0x90,
  0x8d, 0xc2, 0xe6, 0x6c, 0x6e, 0xa0, 0x38, 0xa4, 0xbc, 0xdf, 0x26, 0x1b,
  0x7a, 0xf5, 0xcc, 0xa8, 0x9f, 0xc6, 0x4f, 0xb5, 0xf8, 0x71, 0xca, 0x0d,
  0xda, 0x10, 0x92, 0x1d, 0x06, 0x71, 0x64, 0x92, 0x50, 0xb3, 0x3b, 0xc3,
  0x0d, 0x19, 0x95, 0x77, 0x64, 0xeb, 0x56, 0xd4, 0x45, 0x20, 0xdc, 0xc6,
  0x90, 0xda, 0xf6, 0x70, 0x3b, 0xd9, 0xb1, 0x86, 0xdd, 0x2c, 0xad, 0xaf,

  0x76, 0x63, 0x1e, 0x64, 0xe7, 0xb4, 0x75, 0x8c, 0x4a, 0xba, 0xaa, 0x40,
  0x64, 0x32, 0x87, 0xea, 0x57, 0x60, 0xcf, 0x18, 0x0e, 0x85, 0xd2, 0x3b,
  0x87, 0x36, 0x07, 0xa0, 0xf5, 0x93, 0x21, 0x99, 0x8a, 0x0c, 0xab, 0xfc,
  0x1f, 0x88, 0x88, 0x85, 0x01, 0x49, 0x3c, 0xcb, 0x19, 0x7a, 0x43, 0x2e,
  0x5e, 0x73, 0x42, 0x54, 0xfb, 0xb0, 0x53, 0x2e, 0x7b, 0x34, 0x7d, 0x2b,
  0xad, 0x3f, 0x71, 0x94, 0x7b, 0x56, 0xda, 0xa6, 0xed, 0xce, 0x8f, 0x32,
  0x10, 0x8e, 0x3a, 0xfc, 0xef, 0x03, 0x6f, 0xb0, 0x4d, 0xc8, 0xc9, 0x64,
  0x5f, 0x56, 0xe5, 0xa2, 0x6e, 0xc1, 0xa2, 0x49, 0x15, 0x3b, 0xd1, 0xb4,
  0xf5, 0xd0, 0xf0, 0x27, 0xeb, 0x9c, 0x98, 0x71, 0x5a, 0x44, 0xd2, 0xc3,
  0xeb, 0x48, 0xf4, 0x8e, 0x64, 0x9c, 0x76, 0x2b, 0x37, 0x64, 0x1c, 0x91,
  0x50, 0x6e, 0x6f, 0x5b, 0x53, 0xde, 0xd4, 0x5a, 0xa4, 0xf5, 0x60, 0x34,
  0x0f, 0x84, 0x49, 0x58, 0x4a, 0xc8, 0x00, 0x46, 0xe0, 0xd6, 0xe1, 0x35,
  0xbb, 0x27, 0xc2, 0xa1, 0x34, 0x87, 0xb4, 0xca, 0x66, 0x71, 0x88, 0x82,

  0x2a, 0xbb, 0x24, 0x98, 0x1e, 0xd2, 0x3e, 0x08, 0xa9, 0xc0, 0xdc, 0xa5,
  0xe2, 0x9e, 0xb6, 0xdb, 0x1d, 0x27, 0x08, 0xc5, 0xd2, 0x93, 0x17, 0xab,
  0xab, 0xca, 0x68, 0xf2, 0x61, 0xcd, 0xe3, 0xf8, 0xeb, 0x84, 0x31, 0x6d,
  0xcd, 0x53, 0xfc, 0x8c, 0xbd, 0xe9, 0x1e, 0xec, 0xe7, 0xaf, 0x88, 0x55,

  0x49, 0xc9, 0x5c, 0xc3, 0xb4, 0x1e, 0x06, 0xd4, 0x71, 0xe1, 0x67, 0xb6,
  0x93, 0x05, 0x41, 0x86, 0x25, 0x25, 0x11, 0x53, 0x6c, 0xbb, 0x20, 0x30,
  0x24, 0x43, 0x1c, 0x7b, 0xa3, 0xd1, 0x1e, 0x09, 0x9f, 0x3d, 0xf3, 0x87,
  0x95, 0xac, 0x9c, 0xf3, 0xde, 0xed, 0x20, 0x49, 0xa1, 0x79, 0xfa, 0x18,
  0x40, 0x6b, 0xa4, 0xdf, 0xb2, 0xd7, 0x93, 0xef, 0xef, 0x6b, 0x24, 0x82,
  0x57, 0xc6, 0x36, 0xa8, 0xb8, 0xa2, 0x7e, 0xe9, 0x69, 0x3c, 0x61, 0x42,
  0xa8, 0x84, 0xb7, 0x6a, 0xc1, 0x6e, 0xe9, 0xf4, 0x22, 0x25, 0x13, 0x1d,
  0x9e, 0x34, 0x5a, 0x44, 0xde, 0x28, 0x62, 0x1e, 0xb0, 0x0c, 0xd2, 0x8d,
  0xb6, 0xf9, 0xa3, 0xc3, 0xce, 0xf1, 0xe5, 0xe6, 0xc0, 0x67, 0xc6, 0xce,
  0x01, 0xd0, 0x2e, 0x65, 0xc2, 0x86, 0xb5, 0x74, 0xec, 0x18, 0xed, 0xb4,
  0x87, 0x83, 0x97, 0x11, 0xdb, 0xe1, 0x34, 0x47, 0xb5, 0x97, 0x18, 0x69,
  0x98, 0xb3, 0x69, 0x76, 0x02, 0xc5, 0x87, 0x3f, 0xb2, 0xcb, 0x6a, 0x9e,
  0xe4, 0xca, 0x83, 0x20, 0x32, 0xdb, 0xf8, 0x46, 0xa0, 0x97, 0x52, 0xce,
  0xc5, 0x83, 0x29, 0x86, 0xd1, 0x62, 0x1e, 0x2c, 0xeb, 0x3f, 0xb2, 0xcc,

  0xd1, 0x75, 0xa9, 0xa4, 0x35, 0x13, 0x56, 0xb1, 0xd9, 0xf7, 0xd7, 0xc7,
  0xef, 0x45, 0xdb, 0x04, 0x3c, 0x83, 0x6b, 0x30, 0x1e, 0x80, 0x63, 0xc3,
  0x28, 0x7d, 0xf2, 0x08, 0xa6, 0x23, 0xed, 0x5b, 0x7d, 0x95, 0x1e, 0x3e,
  0x7e, 0x22, 0xd3, 0x56, 0xe4, 0x3a, 0xd8, 0xbc, 0xdb, 0xfc, 0xab, 0xbd,
  0x3d, 0x4e, 0x5a, 0x21, 0x47, 0x43, 0xc0, 0xe3, 0xe1, 0xf3, 0xa3, 0x67,
  0xff, 0xb8, 0x1d, 0x4d, 0x57, 0x55, 0x23, 0x84, 0x5d, 0x31, 0x14, 0x02,
  0x42, 0x4a, 0xad, 0xdf, 0x20, 0x65, 0xa0, 0x1b, 0x2d, 0x6d, 0x46, 0x18,
  0x81, 0x24, 0xd0, 0x00, 0xfd, 0xde, 0x21, 0x89, 0x80, 0xbd, 0x68, 0xbf,
  0xc4, 0x44, 0xab, 0xc2, 0x09, 0x45, 0xd7, 0xdf, 0x9f, 0x9a, 0x9b, 0xab,
  0x4f, 0x43, 0x40, 0x21, 0x49, 0x3d, 0xa5, 0xd3, 0xf0, 0x06, 0x96, 0x1c,
  0xec, 0x9c, 0xc3, 0x07, 0x20, 0x3c, 0x8d, 0x7d, 0xb2, 0x77, 0x0d, 0x33,
  0x35, 0x5f, 0x08, 0xb2, 0x85, 0x94, 0x2e, 0x2c, 0xe8, 0x2d, 0xf8, 0x91,
  0x97, 0xa4, 0xeb, 0x6e, 0x8b, 0x11, 0xed, 0x55, 0xd3, 0xc1, 0x83, 0x0a,
  0xbc, 0x00, 0xc0, 0x58, 0x57, 0x28, 0x23, 0x24, 0x69, 0x4e, 0xb3, 0x9c,
  0x41, 0xd0, 0xcc, 0xd9, 0x52, 0xf4, 0x35, 0xb8, 0x07, 0x86, 0x14, 0xf6,
  0x88, 0x0e, 0xc4, 0x70, 0x0c, 0x9a, 0x99, 0x50, 0xac, 0xe7, 0xd9, 0x68,
  0xff, 0xb9, 0xc2, 0x23, 0x0f, 0x92, 0xaf, 0x8a, 0x35, 0x1d, 0x09, 0xad,
  0xfa, 0xab, 0xf1, 0x37, 0x41, 0xa1, 0x23, 0xbd, 0xf1, 0xe8, 0x88, 0xde,
  0x78, 0x37, 0xe6, 0xa7, 0x6e, 0xca, 0xc5, 0xdc, 0xbc, 0x19, 0x7b, 0xee,
  0x29, 0x3d, 0x67, 0x28, 0x6e, 0xd6, 0x2c, 0x6a, 0x25, 0xaa, 0x0d, 0x33,
  0x79, 0xf4, 0x28, 0x32, 0x93, 0xc1, 0x4f, 0xfe, 0xd0, 0x19, 0xbc, 0xae,
  0x44, 0x50, 0xd4, 0x03, 0x0c, 0x94, 0x83, 0x12, 0x10, 0x0b, 0xf6, 0xfd,
  0x6b, 0x32, 0x5f, 0x06, 0xed, 0x78, 0x48, 0x87, 0xc0, 0x0a, 0x98, 0x85,
  0x0d, 0xb0, 0x20, 0x9e, 0x1e, 0x1e, 0x1d, 0xec, 0x3d, 0x19, 0x3d, 0x1a,
  0x1d, 0xda, 0x94, 0x4c, 0x43, 0x07, 0xd7, 0xd4, 0xc1, 0x86, 0x32, 0x60,


  0x22, 0xa1, 0x07, 0x24, 0x23, 0xe5, 0x85, 0x19, 0xc7, 0x83, 0x28, 0x91,
  0x4e, 0x03, 0x2e, 0x19, 0x8b, 0x00, 0x49, 0x0e, 0xfc, 0xda, 0xbe, 0x51,
  0xa4, 0x63, 0x2e, 0xe1, 0x9c, 0xd0, 0x24, 0xc4, 0xcd, 0xb4, 0xae, 0xb0,
  0x03, 0x93, 0xfc, 0xef, 0xeb, 0xbc, 0x31, 0x2a, 0x00, 0x71, 0x14, 0x72,
  0x9d, 0x69, 0xbf, 0x03, 0x2a, 0xa3, 0x2e, 0x35, 0x41, 0x81, 0xae, 0x44,

  0x0c, 0xac, 0x81, 0x67, 0xcf, 0xc9, 0xef, 0x13, 0x17, 0x30, 0xe2, 0x12,
  0xc2, 0x1c, 0xec, 0x8b, 0x9b, 0x0d, 0x19, 0x4b, 0xb2, 0x98, 0x9a, 0x3b,
  0xfa, 0xb5, 0xb1, 0xf3, 0xae, 0xc9, 0x67, 0x1f, 0x74, 0x16, 0x66, 0x16,
  0xc0, 0xc8, 0x5b, 0x1c, 0x72, 0x91, 0xb4, 0x20, 0xd7, 0x94, 0x40, 0x7e,
  0xc0, 0x85, 0x46, 0x5a, 0xe4, 0xcd, 0x35, 0x8d, 0x01, 0x77, 0xd2, 0x7d,
  0x68, 0xbb, 0xa6, 0x19, 0x02, 0x95, 0x02, 0x8c, 0x54, 0xed, 0xc7, 0xe1,
  0x05, 0x06, 0x62, 0x84, 0xea, 0x65, 0xab, 0x36, 0x63, 0xce, 0xaf, 0x4d,
  0xce, 0xd1, 0x28, 0x72, 0x0b, 0xff, 0xeb, 0x74, 0x90, 0xb4, 0xba, 0x5c,
  0x8b, 0xcc, 0x8a, 0xb5, 0x38, 0xed, 0x36, 0x02, 0x96, 0x51, 0x7f, 0x36,
  0x95, 0x1d, 0xfd, 0xf2, 0x54, 0x76, 0xf8, 0x50, 0x2a, 0xf3, 0xc8, 0x8c,
  0x03, 0xef, 0x1b, 0x08, 0x8d, 0x3a, 0x07, 0xd3, 0x3a, 0x7a, 0xa8, 0xcc,
  0x23, 0x32, 0x97, 0x2a, 0xd0, 0x22, 0xb1, 0x36, 0x8d, 0x39, 0x22, 0xeb,
  0xa3, 0x32, 0x06, 0x96, 0x51, 0x3a, 0xbb, 0x87, 0xd0, 0xd8, 0xc7, 0xb9,
  0x99, 0xca, 0x2e, 0xda, 0x7c, 0x65, 0x03, 0x8d, 0xf9, 0x04, 0xf1, 0x60,
  0x2a, 0x73, 0xfe, 0x46, 0xe6, 0x3b, 0x49, 0x0f, 0xa1, 0xf9, 0x74, 0xd6,
  0xdb, 0x48, 0xf7, 0xe0, 0x59, 0x8c, 0xca, 0x8e, 0x1e, 0x42, 0x65, 0xe6,
  0x3c, 0x17, 0x24, 0x2b, 0x5b, 0x54, 0xf6, 0xe8, 0x27, 0x51, 0x19, 0x93,

  0x19, 0xe8, 0xac, 0x97, 0xd0, 0x68, 0x49, 0xed, 0x42, 0xe5, 0x97, 0xff,
  0x2a, 0xb7, 0x48, 0x5b, 0x83, 0x06, 0xe5, 0xbb, 0x3f, 0xed, 0x0c, 0x3b,
  0x5b, 0xfd, 0x80, 0x13, 0x3b, 0x6c, 0x9f, 0xd8, 0xc1, 0x4f, 0x3b, 0xb1,

  0xc3, 0xae, 0x65, 0x52, 0x65, 0xec, 0x33, 0xff, 0xab, 0xc6, 0x2e, 0x9e,
  0xef, 0xed, 0xfd, 0x08, 0x1f, 0xd0, 0x73, 0x92, 0x7d, 0x3f, 0x06, 0x4d,
  0xe0, 0xb3, 0x4e, 0x89, 0xef, 0xf8, 0xec, 0xd5, 0x37, 0x63, 0x71, 0xbc,
  0x8b, 0xc2, 0xa1, 0x0a, 0x09, 0x94, 0x76, 0x06, 0xef, 0xe5, 0xfe, 0x81,
  0x81, 0x9a, 0x2b, 0x6d, 0x88, 0x87, 0xb7, 0x03, 0xeb, 0x02, 0xa7, 0xc2,
  0xd1, 0x22, 0xd1, 0xab, 0x02, 0x90, 0x41, 0x86, 0x3a, 0x83, 0xd3, 0x43,
  0x86, 0xee, 0xc1, 0x92, 0xf3, 0xe7, 0x62, 0xdb, 0xa0, 0xda, 0x57, 0x76,
  0x9a, 0xab, 0x0a, 0x05, 0x45, 0x78, 0x4c, 0x74, 0x6b, 0xaf, 0xbb, 0x61,
  0xcf, 0xec, 0x64, 0x56, 0x5f, 0x03, 0x88, 0x79, 0x55, 0x69, 0x44, 0x31,
  0x66, 0xe4, 0xda, 0xdf, 0xaa, 0x27, 0x30, 0x06, 0x38, 0x22, 0xc0, 0x82,
  0xde, 0x7e, 0xd3, 0x7b, 0x41, 0xfa, 0x66, 0x7e, 0xeb, 0xc3, 0x1b, 0x11,
  0x15, 0xa0, 0x7d, 0x77, 0xa3, 0x1d, 0x72, 0x6e, 0xb9, 0x9f, 0x09, 0xc6,
  0xe0, 0xdc, 0xb9, 0x8c, 0x9b, 0xd0, 0xd4, 0x8f, 0xcc, 0x90, 0x5d, 0xbf,
  0x12, 0xff, 0x22, 0xa5, 0xdf, 0xc8, 0x3f, 0x1e, 0xd3, 0x87, 0x11, 0x31,
  0xe6, 0x7f, 0x5e, 0xe1, 0xdf, 0x9c, 0x1d, 0xc1, 0xe8, 0x65, 0xde, 0x39,
  0x4f, 0xa3, 0x1b, 0xad, 0xac, 0x94, 0xdd, 0x27, 0x8c, 0xaa, 0xf1, 0xae,
  0x74, 0xd5, 0x9c, 0xfe, 0x9a, 0x29, 0xd1, 0x03, 0x85, 0xc9, 0xb1, 0x12,


  0x20, 0x8f, 0x11, 0x63, 0xe4, 0x47, 0xa3, 0x38, 0xbc, 0x7c, 0x96, 0xf8,
  0x10, 0xa7, 0x8a, 0x59, 0xe1, 0x37, 0xae, 0x73, 0x21, 0x5f, 0x39, 0x82,
  0x01, 0xa3, 0xdd, 0x86, 0xc9, 0xe5, 0xd4, 0x94, 0x45, 0x66, 0x7e, 0xb0,
  0xff, 0x79, 0xe8, 0x92, 0xf8, 0xa0, 0xd5, 0x94, 0x0e, 0xe5, 0x13, 0x69,

  0x1d, 0xa8, 0x6b, 0x98, 0xb8, 0x1a, 0xa2, 0xd8, 0x47, 0x23, 0x05, 0x97,

  0xb0, 0x7d, 0x67, 0x19, 0x5b, 0x4b, 0x13, 0x36, 0x7b, 0xc3, 0x84, 0x76,
  0x14, 0x90, 0xd7, 0x90, 0x6b, 0x02, 0x4f, 0x2d, 0xc9, 0x09, 0x01, 0x7f,
  0x27, 0x27, 0x86, 0x86, 0xcc, 0xbe, 0x74, 0x18, 0x82, 0xbf, 0x7f, 0xb4,
  0x4f, 0x67, 0xaa, 0x83, 0x50, 0x63, 0xa6, 0x85, 0x86, 0x3a, 0x7e, 0x7f,
  0x94, 0x8e, 0x7e, 0x43, 0x0c, 0xb0, 0xc7, 0x6d, 0x2b, 0xfa, 0x77, 0x03,
  0x3f, 0xbf, 0x69, 0x92, 0x56, 0x11, 0x9f, 0x8d, 0xc8, 0x6e, 0xc5, 0xb7,
  0x51, 0x74, 0x18, 0x9b, 0xf8, 0x94, 0xb2, 0x01, 0x8b, 0x3a, 0x0c, 0xfb,


  0x43, 0x33, 0x54, 0x12, 0x76, 0x3a, 0xb1, 0xf1, 0x06, 0xbf, 0x69, 0xf9,
  0x80, 0x51, 0xd9, 0x5a, 0xc9, 0x60, 0x03, 0x4e, 0xa7, 0xea, 0x29, 0xf4,
  0xb4, 0x5f, 0xc1, 0x67, 0x66, 0x55, 0x7a, 0xe3, 0xd9, 0xd0, 0xdc, 0x17,
  0x61, 0x8e, 0xc8, 0x83, 0xcd, 0x21, 0x31, 0xbf, 0xa7, 0x88, 0x72, 0x4c,
  0xfb, 0xa8, 0xa7, 0x55, 0x26, 0x11, 0x1e, 0x82, 0xd8, 0x44, 0xf4, 0x98,
  0x90, 0x29, 0x8d, 0xe6, 0x71, 0x99, 0x69, 0xd5, 0xae, 0x5d, 0xb5, 0xc2,
  0xb2, 0x00, 0x8b, 0x65, 0x14, 0x4b, 0x88, 0x77, 0xee, 0x2c, 0xd7, 0x47,
  0xde, 0x28, 0xb1, 0x0c, 0xde, 0x42, 0xaf, 0x6b, 0x0d, 0xb5, 0x05, 0xf6,
  0x5c, 0x51, 0x07, 0xc5, 0xfa, 0x2a, 0x5f, 0x75, 0x45, 0xf4, 0xf0, 0x8b,
  0xf2, 0x8b, 0xe1, 0xae, 0x90, 0x78, 0x79, 0x9d, 0xd5, 0xdc, 0x0d, 0x99,
  0xa6, 0x4a, 0xd1, 0xe6, 0x2b, 0xb8, 0x58, 0x44, 0x78, 0xa1, 0x54, 0x98,
  0x12, 0x77, 0xa1, 0x8d, 0x21, 0xc0, 0x11, 0xb4, 0xf6, 0xe1, 0x89, 0x55,
  0x14, 0x68, 0x16, 0x7e, 0x47, 0xee, 0x18, 0xb3, 0x57, 0x73, 0xce, 0x2d,
  0x44, 0x39, 0x31, 0x45, 0xe1, 0x05, 0xc3, 0x9b, 0x7d, 0xfa, 0xe5, 0xaa,
  0x2d, 0x9b, 0xa8, 0x32, 0x5d, 0x79, 0xc3, 0x0b, 0x65, 0x2b, 0x7f, 0xba,
  0xb7, 0xee, 0xc4, 0x32, 0xa0, 0xb9, 0x38, 0x31, 0xe8, 0xf2, 0xa1, 0x0e,
  0x89, 0xd1, 0xbf, 0xa7, 0x57, 0xd9, 0x52, 0x5a, 0x20, 0xf5, 0x54, 0xf1,
  0xf7, 0x96, 0xbc, 0xb7, 0xe7, 0xc4, 0x89, 0x99, 0xf3, 0x66, 0x35, 0x5a,
  0x96, 0xff, 0x30, 0x7b, 0x9c, 0x52, 0x4f, 0xc5, 0xe0, 0x4a, 0x50, 0xb9,
  0x6d, 0xc1, 0x87, 0xc2, 0x00, 0x5a, 0x85, 0x35, 0x2c, 0x1d, 0x0b, 0x57,
  0x94, 0x76, 0xc0, 0x2d, 0x24, 0xaf, 0xcc, 0x8c, 0x8f, 0x3f, 0x7e, 0x78,
  0x37, 0xfe, 0x70, 0xde, 0x25, 0xec, 0xf3, 0xb3, 0xf7, 0x17, 0xc7, 0xaf,
  0x3f, 0x9e, 0xbf, 0x3f, 0xbb, 0x38, 0x7b, 0x75, 0x76, 0x9a, 0xec, 0x1c,
  0xec, 0x6e, 0xac, 0x2e, 0xb4, 0x2e, 0x08, 0x0f, 0xa7, 0x52, 0xe7, 0xcf,
  0x3c, 0xcb, 0x4e, 0x61, 0x87, 0xd6, 0x13, 0x8e, 0xf6, 0x9d, 0xd0, 0x56,
  0x0b, 0xf7, 0x1b, 0x7e, 0x08, 0x08, 0x37, 0x70, 0xf5, 0x34, 0xb9, 0x5c,
  0xf3, 0x65, 0x94, 0x5c, 0x05, 0x2d, 0xbd, 0xaa, 0x9b, 0x40, 0x14, 0x65,
  0x1a, 0x2f, 0xf5, 0x0a, 0xd3, 0x36, 0xba, 0xe3, 0x1e, 0x77, 0x75, 0x16,
  0x3a, 0x03, 0x28, 0x60, 0x8e, 0x2a, 0xea, 0x38, 0x59, 0x58, 0xba, 0x60,
  0x38, 0x1b, 0x60, 0xa0, 0xdb, 0x57, 0xd0, 0x20, 0x42, 0x42, 0x58, 0x65,
  0x61, 0x55, 0xba, 0x51, 0x72, 0x1e, 0xf6, 0x09, 0x93, 0x37, 0x66, 0x59,
  0x21, 0xcd, 0x6a, 0x65, 0x1e, 0x08, 0x60, 0xa2, 0x0b, 0x0e, 0xc7, 0xd3,
  0xcd, 0x03, 0xf4, 0x5b, 0x6f, 0xaf, 0x50, 0xee, 0x9c, 0x05, 0x51, 0x61,
  0x7e, 0x9b, 0x91, 0x5e, 0x6e, 0xbc, 0x39, 0xd1, 0x78, 0xa4, 0x94, 0x01,
  0x87, 0x32, 0xc2, 0x61, 0x8f, 0x35, 0x38, 0xc6, 0x28, 0x35, 0xb8, 0x93,
  0xd0, 0x5f, 0x14, 0xdf, 0x68, 0xec, 0xaf, 0xe5, 0x1e, 0x42, 0xe6, 0x4d,


  0xa4, 0x68, 0xc5, 0x80, 0xce, 0x7e, 0xc0, 0x04, 0x2d, 0x51, 0xc1, 0x0d,
  0xc5, 0x2d, 0x0e, 0x2c, 0xc8, 0xf7, 0x48, 0x61, 0x42, 0x5c, 0xbc, 0x88,
  0x89, 0x0c, 0x2c, 0xee, 0xd2, 0x9b, 0xce, 0xb4, 0xba, 0xec, 0xe7, 0xe9,


  0xe8, 0xc9, 0xe3, 0xd1, 0x21, 0x81, 0x86, 0x9c, 0x2d, 0x28, 0x8e, 0x26,

  0x9a, 0x05, 0xfc, 0xcb, 0xf8, 0x80, 0x20, 0x24, 0x21, 0x05, 0xcf, 0xed,
  0x95, 0x8c, 0x18, 0xb3, 0xa5, 0x12, 0x2d, 0x66, 0x56, 0x51, 0xa6, 0xb8,
  0x12, 0xd2, 0xd2, 0x58, 0x60, 0xb5, 0x09, 0x95, 0xc6, 0x7c, 0xe7, 0xb9,
  0xa4, 0xa1, 0x71, 0x5e, 0x56, 0x97, 0xd7, 0x12, 0x44, 0x05, 0x20, 0x3f,

  0x5f, 0x9d, 0x73, 0x8a, 0xaa, 0x85, 0xa8, 0x00, 0x2b, 0xd7, 0x96, 0xdd,
  0xfb, 0xa3, 0x7d, 0x4a, 0x67, 0xf8, 0xb3, 0x64, 0xc8, 0x99, 0xbf, 0x8d,
  0x63, 0xd0, 0x0b, 0xac, 0xce, 0xeb, 0x18, 0xed, 0x70, 0x16, 0x2d, 0xcf,
  0x4c, 0xef, 0x0f, 0xf4, 0xa7, 0xa6, 0xf0, 0x77, 0x97, 0xdc, 0x03, 0xc3,
  0x34, 0xf0, 0x50, 0x24, 0xcc, 0x7d, 0xad, 0xb3, 0xf8, 0x8a, 0x47, 0x9b,
  0x91, 0xe8, 0x0e, 0x83, 0x8b, 0x76, 0xef, 0x15, 0x7b, 0xe8, 0x0d, 0xb3,
  0xa1, 0x01, 0x95, 0x0e, 0x5d, 0x99, 0x76, 0x6e, 0xdf, 0x62, 0xe0, 0x19,
  0x2a, 0x5f, 0x83, 0x67, 0x78, 0x91, 0xcd, 0xa1, 0x1b, 0xa2, 0xa6, 0x74,



  0x80, 0x5f, 0x22, 0xa4, 0x69, 0xb3, 0xd6, 0xf8, 0x24, 0x62, 0xe0, 0x35,
  0xe9, 0xd4, 0xd7, 0xb5, 0x2d, 0x88, 0xe1, 0xb6, 0xd9, 0x54, 0xea, 0x7e,
  0x25, 0x55, 0xcd, 0x8b, 0x3b, 0x80, 0xf6, 0xe7, 0xb7, 0x9a, 0x38, 0xf0,
  0x8f, 0xac, 0x2a, 0xc3, 0xf0, 0x3a, 0x94, 0x07, 0x05, 0x93, 0x23, 0x53,
  0x52, 0xd1, 0x6e, 0xdc, 0x0f, 0xe9, 0xab, 0xc1, 0x9d, 0xfb, 0x03, 0x5a,
  0x2f, 0x33, 0x38, 0x34, 0xb7, 0x49, 0x13, 0xb4, 0x13, 0x00, 0x37, 0xe6,
  0x1a, 0x14, 0xf5, 0x78, 0xc0, 0x82, 0x6a, 0x60, 0xef, 0xb8, 0x7c, 0x36,
  0x30, 0x31, 0xa1, 0xfe, 0xcd, 0xc8, 0x9c, 0x71, 0xd9, 0xbf, 0x36, 0xbc,
  0x46, 0x6d, 0xce, 0x1c, 0xe0, 0x9d, 0xe8, 0x73, 0x21, 0x4f, 0x1f, 0x26,
  0xc9, 0xeb, 0xac, 0xb8, 0x6b, 0x4f, 0x68, 0x00, 0xcc, 0x1a, 0xb8, 0x87,
  0xf3, 0xc6, 0xc1, 0x2a, 0xb8, 0x64, 0x5c, 0x37, 0xc5, 0x70, 0x4a, 0xed,
  0x39, 0xc7, 0x38, 0xd7, 0x17, 0x76, 0x1b, 0x98, 0x6b, 0xb5, 0x37, 0x63,
  0x07, 0xe8, 0x28, 0x1a, 0xd3, 0xc5, 0x27, 0x1f, 0xb2, 0x0d, 0xc0, 0x7c,
  0x84, 0x55, 0x57, 0xaf, 0x27, 0x7f, 0x63, 0x90, 0xfd, 0x84, 0x3c, 0x0b,
  0x95, 0xec, 0x82, 0xe4, 0x39, 0x9a, 0x53, 0x35, 0x0f, 0x70, 0xe0, 0x8a,
  0x98, 0x43, 0x11, 0x1b, 0x0e, 0xc1, 0x66, 0x85, 0xb7, 0x6f, 0x53, 0x18,
  0x66, 0x14, 0xad, 0x4b, 0xcc, 0x7a, 0x54, 0x06, 0xbd, 0x3f, 0xc3, 0x39,
  0xf1, 0x54, 0xce, 0x9f, 0xeb, 0x08, 0x5f, 0xde, 0x4b, 0xce, 0xd9, 0xb4,
  0x19, 0xc4, 0xf4, 0x78, 0xef, 0x58, 0xca, 0xa9, 0xeb, 0xc1, 0x1f, 0xe8,
  0x8f, 0x70, 0x0d, 0x2d, 0x92, 0xa5, 0x5d, 0x56, 0x36, 0x42, 0x8f, 0x83,
  0x31, 0xe1, 0xf5, 0xbe, 0x0f, 0x7c, 0xe1, 0xc4, 0xc0, 0xe6, 0xb1, 0xc1,
  0xc5, 0x1e, 0xf2, 0x81, 0x0f, 0x85, 0x82, 0x09, 0x2a, 0x75, 0xaf, 0x6c,
  0x77, 0x03, 0xa9, 0xd0, 0x68, 0xdb, 0x41, 0x84, 0x41, 0xb3, 0x92, 0xce,
  0x27, 0xe9, 0x9c, 0x92, 0xab, 0xab, 0xcc, 0x81, 0x31, 0xd3, 0x51, 0x32,
  0xd4, 0x94, 0xa0, 0xbb, 0x6b, 0xae, 0xef, 0xaa, 0x6c, 0x18, 0x67, 0x9e,
  0xb2, 0xb1, 0x49, 0xd3, 0xa9, 0xc8, 0x41, 0xe8, 0x6d, 0xb2, 0xaa, 0xc8,
  0x34, 0x9a, 0x3d, 0x7c, 0xf8, 0xd1, 0xd6, 0xab, 0xb2, 0x70, 0x45, 0x38,
  0x12, 0x7c, 0xf5, 0xd8, 0x98, 0x7c, 0x91, 0x73, 0xea, 0xe0, 0x74, 0xb2,
  0x90, 0xf4, 0xd7, 0x65, 0x4e, 0xc8, 0x52, 0x3a, 0x1c, 0xb4, 0x37, 0x47,
  0x25, 0x17, 0xf1, 0x4e, 0x29, 0x2e, 0x95, 0x49, 0xec, 0x2b, 0x72, 0x63,

  0x22, 0xd3, 0x0c, 0xee, 0x0e, 0xaf, 0xf2, 0x8e, 0x6f, 0xb7, 0x0e, 0x87,
  0x7c, 0x17, 0x44, 0xab, 0x0b, 0x8a, 0x33, 0x15, 0x1c, 0xba, 0x12, 0xe3,
  0x53, 0x19, 0x2e, 0x4d, 0x8f, 0xcc, 0x34, 0x4a, 0xb9, 0x4a, 0x49, 0x32,
  0x69, 0x65, 0x61, 0x07, 0x4c, 0xbe, 0xdd, 0x5e, 0xde, 0xea, 0x02, 0x36,
  0x2d, 0xd7, 0xa9, 0xb9, 0xa3, 0x7b, 0x64, 0xc4, 0xed, 0x9d, 0x26, 0x02,
  0x6e, 0x56, 0xc1, 0x56, 0x28, 0xab, 0x37, 0xfb, 0x9c, 0x37, 0x38, 0xb1,

  0x4e, 0x26, 0xb2, 0x26, 0xe8, 0x4a, 0xff, 0x99, 0xe5, 0x3a, 0x6c, 0x5e,

  0x29, 0xc1, 0x3a, 0x9b, 0x77, 0xc5, 0xc0, 0x6a, 0xd0, 0x7e, 0xc4, 0x4b,
  0xc3, 0xdd, 0x35, 0x60, 0xa3, 0x4b, 0xc7, 0x11, 0xb8, 0x9f, 0x10, 0xbf,
  0x8b, 0xfb, 0x11, 0xf7, 0x2c, 0xaa, 0x92, 0x21, 0x98, 0x62, 0x36, 0x34,
  0x4c, 0x60, 0xb5, 0xc1, 0x3f, 0x7f, 0x3b, 0xd0, 0x45, 0xb7, 0x32, 0x98,
  0x7d, 0x18, 0x17, 0xfe, 0x09, 0x27, 0x4a, 0xca, 0xde, 0x85, 0x15, 0x00,
  0x46, 0xd3, 0x38, 0x8a, 0xed, 0x64, 0x2c, 0x13, 0x33, 0xb4, 0x70, 0x7a,
  0x7b, 0x6e, 0x68, 0x71, 0x25, 0x36, 0x50, 0x37, 0xac, 0x2f, 0x6d, 0x8d,
  0xb7, 0x4f, 0x76, 0xee, 0x03, 0xd7, 0x36, 0x62, 0x4c, 0x94, 0xac, 0x17,


  0x92, 0xfb, 0xee, 0x7d, 0x8b, 0x4d, 0xb9, 0x60, 0x1f, 0x81, 0x73, 0xc6,
  0xfd, 0x1b, 0xf8, 0x39, 0x11, 0x4a, 0x96, 0xd5, 0x05, 0x93, 0x94, 0xb3,
  0x8e, 0xf9, 0x82, 0xc0, 0x27, 0xf1, 0x21, 0x9a, 0x58, 0xbe, 0x11, 0x41,
  0xa4, 0xe7, 0x30, 0x62, 0xe0, 0x39, 0xb3, 0x4e, 0x5a, 0xb1, 0xfe, 0x7c,
  0x9a, 0x52, 0xe4, 0x36, 0x9e, 0xcc, 0x38, 0x96, 0xfb, 0x36, 0xd4, 0xa7,
  0x88, 0x4f, 0x6b, 0x26, 0xa9, 0xe7, 0x1c, 0xe4, 0x26, 0x60, 0xb7, 0xcd,

  0x43, 0x12, 0x7c, 0xa7, 0x29, 0xc2, 0xf5, 0xda, 0x73, 0x5d, 0x06, 0x76,
  0xff, 0x74, 0xbf, 0x35, 0xab, 0x8b, 0x31, 0x69, 0x3a, 0xab, 0x7e, 0x2f,
  0x4b, 0xfb, 0x2b, 0x2f, 0xcc, 0x8d, 0xde, 0xb4, 0x28, 0x3c, 0xf4, 0x73,
  0x16, 0xe5, 0x18, 0x87, 0xdb, 0x42, 0x99, 0x73, 0xe7, 0x44, 0xf8, 0x23,
  0x1b, 0x63, 0x55, 0x3d, 0x4b, 0x30, 0x63, 0x6e, 0x68, 0x03, 0xed, 0x2d,
  0xc3, 0x3e, 0xf8, 0x53, 0x57, 0x72, 0xff, 0x36, 0x82, 0x34, 0xe8, 0xbf,
  0x7f, 0x7d, 0x0e, 0x37, 0xe0, 0xec, 0xc7, 0xde, 0x79, 0x1c, 0x0f, 0x64,
  0x2e, 0xbf, 0xc2, 0x34, 0xf2, 0xd5, 0x15, 0xe9, 0x96, 0x2f, 0x62, 0xa5,
  0x53, 0xde, 0x46, 0xc8, 0x63, 0xbf, 0xfc, 0xf7, 0xab, 0x85, 0x03, 0x98,
  0xda, 0xf0, 0x7d, 0x79, 0xec, 0x17, 0xff, 0x3e, 0xdf, 0xdd, 0xcd, 0xc2,
  0xc5, 0x72, 0xc5, 0xd7, 0x92, 0xa0, 0xde, 0xe6, 0x38, 0x4e, 0xaa, 0xfc,
  0x0c, 0xa6, 0x28, 0x39, 0xef, 0x21, 0x57, 0x94, 0x6f, 0x45, 0xbb, 0xa0,

  0xf8, 0x6c, 0xf1, 0x17, 0xe1, 0x60, 0x60, 0xcd, 0xe1, 0xe6, 0x48, 0x5b,
  0xa2, 0x17, 0xfc, 0xe7, 0xde, 0x97, 0xb1, 0x33, 0xb2, 0xa5, 0x34, 0x24,
  0x06, 0xb5, 0x91, 0x11, 0x3a, 0xe3, 0x30, 0x6e, 0x87, 0xa8, 0xbc, 0xb6,
  0xab, 0x0b, 0x6d, 0x96, 0x66, 0x8d, 0xd0, 0xab, 0xb1, 0xee, 0x49, 0xb2,
  0x43, 0x9a, 0x06, 0xac, 0x71, 0x0a, 0x97, 0x33, 0x44, 0x8a, 0x47, 0xe6,
  0x7d, 0xb0, 0xee, 0x6b, 0x84, 0x07, 0x51, 0xe1, 0xf7, 0xa0, 0x75, 0x08,
  0xc2, 0x5f, 0x0f, 0xa4, 0x7b, 0x91, 0x19, 0x8e, 0xc8, 0x4a, 0x92, 0x60,
  0x95, 0x9e, 0x70, 0x9c, 0x21, 0xcc, 0x12, 0xd7, 0x37, 0x90, 0x6e, 0xba,
  0xe0, 0x74, 0xeb, 0xe4, 0xd5, 0xd9, 0xbb, 0x77, 0xc7, 0xaf, 0xba, 0xf1,
  0x68, 0x57, 0x4f, 0x82, 0x66, 0x59, 0xa2, 0xea, 0x07, 0xbd, 0x33, 0xf1,
  0x75, 0x6e, 0x8c, 0x60, 0x43, 0x46, 0x3c, 0x03, 0x74, 0xd6, 0x4a, 0x05,
  0x25, 0x99, 0xcb, 0x52, 0x3c, 0xfc, 0x5c, 0xa6, 0x80, 0x48, 0xb5, 0x5e,
  0x40, 0x0f, 0xce, 0x87, 0x02, 0x67, 0x1a, 0xf5, 0x55, 0x65, 0x0d, 0x14,
  0xf6, 0xab, 0xce, 0x00, 0xd3, 0x35, 0x06, 0xe3, 0x9e, 0xa4, 0xa3, 0xb3,
  0xff, 0x35, 0xd2, 0xc1, 0xd1, 0xd2, 0x32, 0x23, 0xee, 0x51, 0xd1, 0xcf,
  0xb0, 0x9c, 0x73, 0x1b, 0xdf, 0x65, 0x5a, 0x7d, 0xa2, 0x78, 0xb6, 0x57,
  0xfe, 0x83, 0x02, 0x50, 0x80, 0x7f, 0xcf, 0x66, 0x31, 0x4c, 0x08, 0x78,
  0xdd, 0xfd, 0x6a, 0x07, 0x99, 0x90, 0xb4, 0xbe, 0x7c, 0xae, 0x75, 0x99,
  0xf4, 0x7a, 0x91, 0xdd, 0xd0, 0x67, 0x18, 0x08, 0x87, 0x80, 0x1d, 0xc2,
  0x5e, 0x1a, 0x8c, 0xdf, 0xce, 0x51, 0x85, 0x3b, 0xc1, 0x94, 0xa0, 0xb3,
  0x5a, 0x72, 0xb7, 0x0a, 0x00, 0x62, 0x53, 0xfb, 0x37, 0xae, 0xe9, 0x09,
  0xf6, 0xea, 0x6b, 0x05, 0xb5, 0xf4, 0x52, 0xea, 0x82, 0xdc, 0x3f, 0x8b,
  0x5f, 0x35, 0xc9, 0x5a, 0x50, 0x97, 0x7d, 0xb8, 0x40, 0xbc, 0xdb, 0x38,
  0x06, 0xb2, 0x56, 0xea, 0xd6, 0x00, 0x7a, 0xb4, 0x69, 0x4f, 0xe4, 0x6f,

  0x4c, 0x20, 0xf5, 0x30, 0x9a, 0xc1, 0xc2, 0x1e, 0x77, 0xe1, 0x96, 0x81,
  0x44, 0x06, 0x27, 0x29, 0x41, 0x10, 0x5e, 0xa2, 0x76, 0x81, 0x33, 0x25,
  0x71, 0x59, 0x03, 0x35, 0x17, 0x95, 0x27, 0xa8, 0xec, 0x1b, 0x88, 0x59,
  0xc0, 0x6d, 0xe4, 0x67, 0xd4, 0x60, 0x58, 0x37, 0x5f, 0x51, 0x85, 0x38,
  0x08, 0x21, 0x17, 0x38, 0x2f, 0x56, 0xeb, 0x26, 0x08, 0x24, 0x12, 0xbc,
  0x1a, 0x23, 0x6b, 0x7c, 0x39, 0x0c, 0x5b, 0x91, 0xa5, 0x33, 0xff, 0x4c,
  0xc1, 0xc0, 0x61, 0xf9, 0xd7, 0xcd, 0x2c, 0x2f, 0x36, 0x7a, 0x96, 0x7d,
  0x8b, 0xc6, 0x99, 0x34, 0x92, 0xf8, 0xcf, 0x91, 0x5f, 0x47, 0xac, 0x7b,
  0x70, 0x2d, 0x74, 0x69, 0xc1, 0xbe, 0xa5, 0x2c, 0x62, 0x13, 0x8a, 0x0e,
  0xaa, 0xd4, 0x3b, 0xdc, 0xcf, 0x58, 0x39, 0xe4, 0xd8, 0xca, 0xfa, 0x84,
  0xd2, 0x27, 0xee, 0x8e, 0xc6, 0x0f, 0xfd, 0xf2, 0x92, 0xc9, 0x76, 0xa2,
  0xbf, 0x47, 0x47, 0xb1, 0xcf, 0xfd, 0x1a, 0x33, 0x48, 0x5e, 0x98, 0xff,
  0x6c, 0xfc, 0xf6, 0xc3, 0x3f, 0x1b, 0x60, 0x4d, 0x6e, 0x90, 0xba, 0x36,
  0xc5, 0x15, 0xb2, 0xf0, 0x5e, 0x28, 0x55, 0xf0, 0xdc, 0x20, 0x2f, 0xd5,

  0x93, 0xc8, 0x1b, 0x65, 0xb0, 0xab, 0x43, 0xf3, 0xc5, 0x70, 0x24, 0x60,

  0x1f, 0x9b, 0x88, 0x84, 0xa0, 0x1e, 0x26, 0x92, 0xef, 0x15, 0xc1, 0xad,
  0x32, 0xde, 0x6e, 0x9e, 0x95, 0xad, 0xe2, 0x7b, 0xf8, 0xc6, 0x85, 0xa5,
  0xab, 0xff, 0x9a, 0xba, 0x82, 0xd2, 0xc1, 0x96, 0xb2, 0x82, 0x4f, 0xb4,
  0x36, 0xe1, 0x21, 0x52, 0x29, 0xd8, 0x92, 0x6e, 0x2d, 0x60, 0x6b, 0xa3,
  0xc2, 0x5d, 0xd8, 0x94, 0xf5, 0xee, 0xc8, 0x13, 0x4f, 0xfd, 0xe2, 0xd7,
  0xe2, 0xe1, 0x29, 0xdb, 0xf1, 0x93, 0xe9, 0xcb, 0xda, 0xa6, 0xe1, 0x18,
  0xaa, 0xbd, 0x37, 0x65, 0x9b, 0x92, 0x9b, 0xbc, 0x84, 0x6d, 0xcf, 0x2f,
  0xd1, 0x97, 0xb1, 0xfd, 0x7f, 0x63, 0xca, 0x76, 0x2b, 0x67, 0x9b, 0xd4,
  0x2b, 0x4a, 0x11, 0x8e, 0xa5, 0x6d, 0x7b, 0x70, 0x37, 0x9c, 0xb3, 0xbd,
  0x29, 0x65, 0xdb, 0xcb, 0xd8, 0xde, 0x90, 0xb0, 0xcd, 0xe0, 0xc1, 0x9b,
  0x52, 0xb6, 0x7f, 0x66, 0xce, 0x76, 0x4f, 0xca, 0xf6, 0x4f, 0xce, 0xd8,

  0xfe, 0x85, 0x53, 0xb6, 0x7f, 0xc9, 0x6c, 0x64, 0xdc, 0x1e, 0x3a, 0x8f,
  0x7c, 0x2a, 0xc5, 0x4d, 0x2f, 0xee, 0x85, 0x14, 0x6e, 0x27, 0xb0, 0x78,
  0x71, 0x66, 0x19, 0x87, 0x55, 0x1a, 0xa7, 0xb8, 0x87, 0x75, 0x43, 0x42,
  0x2a, 0x91, 0x0c, 0x38, 0x3f, 0x0e, 0x7c, 0x14, 0xbb, 0xe9, 0x75, 0xbd,


  0x18, 0x62, 0x02, 0x54, 0x73, 0x1c, 0x58, 0x89, 0x8e, 0xcf, 0x74, 0x9e,
  0xfb, 0xe5, 0x59, 0x4e, 0xb3, 0xa8, 0x0f, 0x8e, 0x9c, 0xad, 0x2e, 0x7f,
  0x59, 0x53, 0x3d, 0x6c, 0xcc, 0x6e, 0x67, 0xee, 0x33, 0x16, 0x0e, 0xa3,
  0x10, 0x27, 0xfc, 0x16, 0x7c, 0xa4, 0x99, 0x6d, 0xa9, 0x68, 0x23, 0x12,
  0xb6, 0x43, 0x72, 0x58, 0x0c, 0x83, 0xf2, 0x77, 0x7f, 0x1d, 0x10, 0x21,
  0x54, 0xf6, 0xa2, 0x4c, 0xbb, 0xc6, 0x15, 0x3c, 0x18, 0x1d, 0x71, 0x85,
  0x34, 0x22, 0x2c, 0x14, 0x5e, 0xe5, 0x79, 0x06, 0x88, 0x54, 0x98, 0x00,
  0xf0, 0xc0, 0xd5, 0xb4, 0xe3, 0x86, 0x65, 0xf2, 0xfc, 0x28, 0x79, 0x4f,
  0xaa, 0xa3, 0x51, 0xd4, 0x11, 0xed, 0xc7, 0xed, 0x36, 0x63, 0x27, 0xf2,
  0xfb, 0xd8, 0x70, 0x6d, 0x10, 0x5a, 0x43, 0x3f, 0x1f, 0xde, 0x9f, 0x86,
  0xf1, 0x69, 0x44, 0x0f, 0x9e, 0xef, 0xed, 0x21, 0x41, 0xea, 0x2a, 0xbd,
  0xbd, 0x1d, 0xd5, 0xd9, 0xde, 0xac, 0x9c, 0xd6, 0x7b, 0x74, 0x82, 0xfa,
  0xf5, 0xab, 0x66, 0xb9, 0xf8, 0xec, 0x3e, 0x98, 0x6b, 0xad, 0xcb, 0x5d,
  0xdc, 0x09, 0x5a, 0x97, 0xcb, 0xbe, 0xc4, 0xad, 0xcc, 0xbd, 0x3a, 0xf9,
  0x75, 0xd0, 0x79, 0x54, 0xaa, 0x0a, 0xcc, 0xaa, 0xcc, 0xff, 0xa1, 0xe7,
  0x0a, 0x45, 0x95, 0x22, 0x85, 0xcb, 0x7e, 0x5f, 0x5a, 0xaf, 0x86, 0x20,
  0x3c, 0x20, 0x2e, 0x24, 0x6f, 0x08, 0x53, 0x36, 0x6b, 0xc0, 0xc4, 0xe4,
  0x44, 0x3a, 0xc7, 0xde, 0xe9, 0x08, 0xcb, 0xe4, 0x15, 0xb6, 0x6d, 0x03,
  0x9d, 0xf5, 0xf4, 0x88, 0xfd, 0xc5, 0x59, 0x82, 0xa1, 0x6e, 0x92, 0xf2,
  0x0f, 0x51, 0x76, 0xfd, 0x47, 0x7f, 0x8d, 0x5b, 0x66, 0x13, 0xf2, 0x5e,
  0x70, 0xb6, 0xdd, 0xc6, 0x99, 0xd8, 0x87, 0x7f, 0x8d, 0x99, 0xa0, 0x4e,
  0x3f, 0xca, 0x1f, 0x5b, 0x73, 0xc0, 0x63, 0xbf, 0xc6, 0xf7, 0xaf, 0x0f,
  0xfa, 0x3e, 0x8b, 0x26, 0xb0, 0x78, 0xe2, 0x17, 0xfc, 0xf0, 0x07, 0xeb,
  0xac, 0x62, 0x4c, 0x83, 0x17, 0xf4, 0xdf, 0xe7, 0xba, 0xc3, 0x7d, 0xdd,
  0xe5, 0x36, 0x20, 0xf7, 0x7b, 0x8d, 0xed, 0x25, 0xa3, 0x75, 0x33, 0x68,

  0x48, 0x2f, 0x2a, 0x08, 0x43, 0x42, 0x09, 0xaa, 0x37, 0x9a, 0x2d, 0x0c,
  0x15, 0x12, 0x90, 0x21, 0x54, 0x18, 0xd5, 0x86, 0x3e, 0x3e, 0x2b, 0x15,
  0x65, 0xe9, 0x5d, 0x8f, 0x18, 0x42, 0x86, 0x40, 0x4c, 0x2b, 0x6f, 0xd4,
  0x69, 0x84, 0x6b, 0xec, 0xd7, 0x46, 0x9a, 0x8b, 0xb5, 0x08, 0xd3, 0x5a,
  0xee, 0xeb, 0x59, 0x00, 0x9e, 0xed, 0x43, 0x11, 0x4d, 0xac, 0x1f, 0x0d,
  0x7c, 0xa5, 0xcb, 0x44, 0x15, 0xcf, 0x76, 0xe1, 0xc0, 0x2b, 0xec, 0x15,
  0x7f, 0x9e, 0x6c, 0x0d, 0x3f, 0x24, 0xcf, 0xb7, 0x82, 0x2d, 0x3a, 0x2b,
  0xa4, 0xe7, 0x0b, 0x9c, 0x5e, 0x15, 0x0a, 0xe1, 0xd1, 0x46, 0xca, 0x57,
  0x4d, 0xae, 0x08, 0xb0, 0xc8, 0x99, 0x13, 0xb6, 0x5f, 0xc2, 0x65, 0x10,
  0x84, 0x63, 0xe7, 0x05, 0x2b, 0x51, 0xda, 0xe1, 0x88, 0x44, 0x09, 0xb9,
  0x6d, 0x1c, 0xfc, 0x39, 0xd4, 0x27, 0xee, 0xde, 0x20, 0x89, 0x0d, 0x14,
  0xcd, 0x9c, 0x86, 0xee, 0x17, 0xdb, 0x1b, 0x1c, 0x23, 0xae, 0xca, 0xba,
  0xce, 0x27, 0x86, 0x47, 0x5f, 0x0a, 0x7f, 0xac, 0x33, 0x4e, 0xa7, 0xe2,
  0x26, 0xab, 0xb4, 0x97, 0xb5, 0x4b, 0x2e, 0xab, 0x43, 0x68, 0x2d, 0x5e,
  0xa9, 0xed, 0x18, 0x21, 0xee, 0x25, 0x33, 0x3b, 0x66, 0x6d, 0xd7, 0x39,
  0x0d, 0xcf, 0x04, 0x97, 0x26, 0x93, 0x2a, 0xcf, 0xe6, 0xc9, 0xb2, 0xe4,
  0xad, 0x87, 0xe2, 0xd5, 0x65, 0xb2, 0x0b, 0x42, 0xe6, 0xa0, 0x2e, 0xe1,

  0x94, 0x69, 0x5b, 0x13, 0xe8, 0x24, 0xf2, 0xaf, 0x91, 0xfd, 0xe8, 0x72,
  0xbb, 0xab, 0x8c, 0x32, 0x07, 0xae, 0x33, 0x39, 0xd6, 0x54, 0x7b, 0xef,
  0xf4, 0xe4, 0xa4, 0x56, 0x16, 0x9b, 0x1b, 0xd5, 0x0e, 0x80, 0x04, 0xb2,
  0xf8, 0x24, 0xf4, 0x45, 0xf4, 0x72, 0xd4, 0xf4, 0x5d, 0x57, 0xba, 0x3f,
  0xfa, 0xd5, 0x78, 0xbc, 0xe7, 0x85, 0xfe, 0xd9, 0x75, 0x00, 0xfd, 0x59,
  0xf1, 0xed, 0xd4, 0x68, 0x31, 0x82, 0xee, 0xcb, 0x87, 0x9f, 0x13, 0x2a,
  0xfe, 0xbb, 0xae, 0x96, 0x13, 0x49, 0x2d, 0xa7, 0x04, 0x3a, 0xce, 0x57,
  0xb3, 0xab, 0x6b, 0x80, 0x2e, 0x00, 0x90, 0x16, 0x3f, 0x36, 0xfc, 0x21,
  0x10, 0xf1, 0x2e, 0x5d, 0xbe, 0x95, 0x20, 0xef, 0xf2, 0xe3, 0xe9, 0xac,
  0x5c, 0x76, 0x3c, 0x0a, 0x42, 0xd8, 0x45, 0x9e, 0xd2, 0x0c, 0x42, 0x99,
  0x4c, 0x18, 0xe2, 0xfd, 0xb9, 0xf1, 0x46, 0xe7, 0xf3, 0x62, 0xf5, 0x0e,
  0xf5, 0x93, 0x1c, 0xac, 0xf1, 0x28, 0x31, 0x6e, 0x28, 0xfa, 0x3f, 0x3c,
  0x0d, 0xba, 0x38, 0x4a, 0xed, 0x84, 0x30, 0x4e, 0x9b, 0xbd, 0x70, 0x9d,
  0xa7, 0x56, 0x87, 0x72, 0xdf, 0xe2, 0x1d, 0x75, 0x9f, 0xea, 0x8b, 0xc3,
  0x31, 0xde, 0x4e, 0xa4, 0xb2, 0xf3, 0xdd, 0x78, 0x1c, 0xa6, 0xc8, 0x17,
  0xc6, 0x38, 0x29, 0x2f, 0x8b, 0xfc, 0x1f, 0xd2, 0x5e, 0xab, 0x9b, 0xd9,
  0xda, 0xaa, 0x51, 0x68, 0x07, 0xe4, 0x29, 0x51, 0x22, 0xe4, 0x6f, 0x82,

  0x04, 0x47, 0x62, 0x07, 0x09, 0x61, 0x80, 0xb0, 0xb2, 0xc9, 0x80, 0x14,
  0x67, 0xe0, 0x1e, 0x4a, 0xad, 0xa4, 0x07, 0x85, 0xcc, 0xf9, 0x2c, 0x54,
  0x24, 0x69, 0x0f, 0x04, 0x7b, 0x26, 0xae, 0x22, 0x65, 0x3f, 0xa3, 0xa0,
  0x80, 0x38, 0xe8, 0xcf, 0x2a, 0x29, 0x68, 0x2b, 0xa8, 0x1e, 0x00, 0x53,
  0x76, 0xcb, 0x1c, 0x34, 0x8e, 0x70, 0x27, 0xa8, 0xb2, 0x59, 0x4c, 0xbc,
  0xd8, 0x38, 0x04, 0xda, 0xa7, 0x3c, 0x04, 0xe4, 0x4e, 0x55, 0xcf, 0x40,
  0xbc, 0x44, 0x10, 0xee, 0xec, 0xe8, 0x0f, 0x80, 0xb6, 0x23, 0x37, 0xbe,
  0x82, 0xca, 0xcb, 0x94, 0xd1, 0x6a, 0x85, 0xe1, 0x17, 0x32, 0xc6, 0xa3,
  0xa3, 0x69, 0xb9, 0x2b, 0xc9, 0x17, 0x36, 0xda, 0x04, 0x94, 0xd0, 0x18,
  0xa0, 0xb8, 0x4f, 0xb4, 0x68, 0xaf, 0xe1, 0xbd, 0xa5, 0xb7, 0x47, 0x84,
  0xbe, 0x46, 0x45, 0x55, 0x16, 0x17, 0x8b, 0x2c, 0x79, 0x54, 0xef, 0x29,
  0x4d, 0x74, 0x49, 0xcb, 0x01, 0xfc, 0xdb, 0x29, 0x72, 0x96, 0x88, 0xf8,
  0xf8, 0x6d, 0xe3, 0xba, 0xb6, 0x0c, 0x63, 0x04, 0xd2, 0x80, 0xb4, 0x04,
  0x97, 0x06, 0x6a, 0xc0, 0xda, 0x18, 0x65, 0x04, 0xfc, 0xcb, 0xa5, 0x45,
  0xf6, 0x4c, 0x06, 0xc4, 0x7d, 0x98, 0xe5, 0x8a, 0xa7, 0x6e, 0xb8, 0x52,
  0x2e, 0xdb, 0x5d, 0xec, 0x9d, 0x0c, 0xd2, 0xa3, 0xcb, 0xff, 0x0a, 0x95,
  0x28, 0x3f, 0xa7, 0x10, 0xe5, 0x57, 0xae, 0x44, 0xf1, 0x24, 0x05, 0x89,

  0x9d, 0x50, 0x4e, 0x20, 0x2d, 0x8a, 0x5c, 0x32, 0x9c, 0x07, 0x75, 0x93,
  0xda, 0xd6, 0x33, 0x78, 0xab, 0x33, 0x5c, 0xf4, 0x26, 0xb5, 0x73, 0x64,
  0x3d, 0x0e, 0xa2, 0xfc, 0x91, 0x53, 0xe0, 0xa9, 0xe9, 0x5d, 0x0f, 0xcc,
  0x4f, 0x46, 0x25, 0xe3, 0xb3, 0x4c, 0x20, 0xba, 0xfe, 0xe0, 0x3a, 0xbf,
  0xfc, 0xda, 0x06, 0xd8, 0x81, 0xe1, 0xcd, 0x2f, 0x3c, 0x79, 0xfc, 0xa7,
  0x88, 0x40, 0x0e, 0x9c, 0x96, 0x5c, 0xd7, 0x46, 0xaf, 0xb6, 0x61, 0x30,

  0x23, 0x4c, 0x2f, 0x7e, 0x61, 0xd0, 0x68, 0x16, 0xf1, 0x4d, 0x65, 0x6f,
  0x94, 0x16, 0x47, 0x2f, 0xf7, 0x30, 0x38, 0x01, 0x5a, 0x55, 0x83, 0xd8,
  0xf0, 0xf3, 0x49, 0xd6, 0xdc, 0x90, 0x16, 0x87, 0xdd, 0xd0, 0x6d, 0xf4,
  0x78, 0x80, 0xe5, 0x87, 0xbd, 0xf9, 0x2e, 0x03, 0xc1, 0x57, 0x26, 0x8e,
  0xc2, 0x40, 0xbe, 0xd6, 0x33, 0xa2, 0x71, 0xdd, 0xe0, 0xfa, 0xc5, 0x5a,
  0x39, 0xb9, 0x10, 0x35, 0x7f, 0x9f, 0xf6, 0xc5, 0xcb, 0xc5, 0x6d, 0x55,
  0x0c, 0x69, 0xe6, 0x92, 0x3c, 0xe8, 0xfb, 0xf8, 0xed, 0x35, 0x96, 0x6b,
  0x1b, 0xf3, 0x7e, 0xb6, 0xd9, 0x9c, 0x1e, 0xbe, 0xa7, 0x67, 0x49, 0x84,
  0xd0, 0x2e, 0xde, 0x15, 0xc8, 0xc5, 0x42, 0xc3, 0xbd, 0x5c, 0x86, 0x5d,
  0x39, 0xf2, 0xdb, 0x74, 0x65, 0x7e, 0x46, 0x21, 0x41, 0x60, 0xca, 0xce,
  0xb2, 0x58, 0x5e, 0x42, 0x67, 0xf3, 0x3b, 0x71, 0x71, 0x9c, 0x4f, 0xd8,
  0x26, 0xc1, 0x1a, 0x67, 0xb1, 0xf6, 0x36, 0xb5, 0x20, 0x37, 0xa9, 0x7b,
  0x4a, 0x83, 0xe0, 0x12, 0x6c, 0xf1, 0x29, 0x4d, 0xd0, 0x09, 0x0b, 0x29,
  0xdf, 0x0c, 0xa1, 0xc7, 0x5b, 0x6b, 0x2c, 0x47, 0x91, 0x26, 0x97, 0xa4,
  0x5f, 0xa0, 0x1e, 0xab, 0x3b, 0x7f, 0xc9, 0xe1, 0xd3, 0x96, 0x87, 0x2d,
  0x27, 0x0f, 0x64, 0x59, 0xe8, 0x32, 0x13, 0xf0, 0x27, 0x7d, 0x45, 0x20,
  0x90, 0xe5, 0x03, 0xb6, 0x35, 0x6c, 0x5f, 0x64, 0x32, 0x96, 0xc3, 0xd1,
  0xba, 0xb5, 0x12, 0x7b, 0x88, 0xc4, 0xe6, 0x76, 0xc6, 0x54, 0x17, 0x31,
  0x7e, 0x75, 0xbe, 0x9b, 0x9c, 0x77, 0xc2, 0x0a, 0x28, 0x4a, 0x22, 0x61,

  0xea, 0x33, 0x62, 0x69, 0xc5, 0xc7, 0x08, 0x97, 0xfd, 0x2e, 0x68, 0xc5,
  0x15, 0xb6, 0x58, 0xae, 0x08, 0xfd, 0xfe, 0xe2, 0x8c, 0xa9, 0xb3, 0x96,
  0x97, 0x28, 0xd2, 0x60, 0x50, 0x10, 0x31, 0x29, 0xfd, 0x5b, 0x6a, 0x4c,
  0xe8, 0x92, 0x4a, 0xed, 0xb8, 0xf9, 0x95, 0x38, 0xe5, 0xd5, 0x99, 0xbe,
  0x08, 0x52, 0x1d, 0x19, 0x14, 0x47, 0x33, 0xcf, 0x3d, 0xf8, 0x23, 0x69,
  0x43, 0x59, 0xb3, 0x5c, 0xea, 0xb4, 0x89, 0xa0, 0x55, 0x5c, 0x66, 0x45,
  0xd8, 0x75, 0x06, 0x1f, 0x25, 0x41, 0x2e, 0x44, 0x3d, 0x1b, 0x75, 0xd1,
  0xb3, 0xbd, 0xb0, 0x81, 0x4c, 0x2e, 0x2f, 0x1d, 0x52, 0x7e, 0x0f, 0xc2,
  0x26, 0x4c, 0xfe, 0x09, 0x0a, 0x00, 0x09, 0x87, 0x0b, 0x48, 0xec, 0x30,
  0x0a, 0xa6, 0xe5, 0xea, 0x8e, 0xb6, 0xc3, 0x3c, 0x58, 0xd7, 0x57, 0x87,
  0x86, 0x73, 0x1c, 0x8e, 0x3e, 0x87, 0x89, 0x62, 0x84, 0x75, 0x04, 0x8e,


  0x97, 0x73, 0x47, 0xa4, 0x5d, 0x6d, 0x67, 0x34, 0xd1, 0xc2, 0x47, 0x4e,
  0xf1, 0x1f, 0xfe, 0x37, 0xa2, 0xb4, 0xbf, 0xaf, 0xc3, 0xf8, 0xdd, 0x0e,
  0x08, 0xea, 0x0d, 0x90, 0x34, 0xa9, 0x1d, 0x12, 0x32, 0x0d, 0x26, 0x79,
  0x83, 0x96, 0x06, 0x6a, 0x43, 0xb6, 0x2f, 0xe6, 0x1b, 0x2e, 0x79, 0x4e,
  0xf0, 0x5a, 0xb4, 0x26, 0xde, 0xa8, 0xe0, 0xff, 0x8d, 0xbe, 0xa5, 0x03,
  0x70, 0x6d, 0x12, 0xb2, 0x21, 0xfe, 0x7c, 0xfc, 0xe6, 0xec, 0xfd, 0x71,
  0xbb, 0x5e, 0xb1, 0x01, 0xe8, 0x16, 0x82, 0xfd, 0xdd, 0xd9, 0x01, 0xd5,
  0xce, 0x35, 0xf5, 0xcd, 0x8b, 0x9c, 0x8c, 0xfe, 0xe4, 0xfc, 0xbb, 0xd7,

  0x76, 0x72, 0x39, 0x98, 0x26, 0x26, 0xa5, 0x23, 0x0e, 0x74, 0x9f, 0xbb,

  0xa2, 0x9d, 0x94, 0x00, 0x6a, 0x06, 0x26, 0xcd, 0xc5, 0xed, 0xf4, 0x90,
  0x64, 0xc1, 0xa9, 0x31, 0x5a, 0xaa, 0x0f, 0x0c, 0xf5, 0xba, 0xa6, 0xd2,
  0x7b, 0x3b, 0x6c, 0xa0, 0xf7, 0x42, 0xf4, 0x03, 0x6d, 0x4a, 0x6c, 0x51,
  0x42, 0x8e, 0x23, 0x30, 0xb9, 0x51, 0x62, 0x3f, 0xe2, 0xbe, 0x42, 0x07,
  0x2f, 0xd9, 0x40, 0xf8, 0x4a, 0x8c, 0x61, 0x53, 0xdf, 0x7b, 0x8e, 0x83,
  0xb0, 0xbc, 0x23, 0x87, 0x0b, 0xd1, 0xac, 0xed, 0x3b, 0x36, 0x60, 0xa4,
  0x3f, 0x09, 0xf7, 0xf8, 0xfb, 0x18, 0x89, 0x90, 0x9b, 0xcf, 0xee, 0xd4,
  0xbb, 0x03, 0x6f, 0xa6, 0x76, 0xdb, 0x64, 0xc2, 0xdb, 0x7f, 0xd8, 0x4e,
  0xa4, 0x20, 0x04, 0x0c, 0x8f, 0x61, 0x69, 0x7b, 0xfa, 0x8d, 0xba, 0xfe,
  0x73, 0xbb, 0xf7, 0xe5, 0x6f, 0xe9, 0xa2, 0xfb, 0xeb, 0xb1, 0x25, 0x74,
  0x27, 0x49, 0x3d, 0x68, 0x04, 0xbb, 0x66, 0xcc, 0x52, 0xb0, 0x0e, 0x11,

  0xa7, 0x3a, 0xce, 0x40, 0x70, 0xbc, 0x43, 0xe7, 0x5e, 0xe5, 0xf7, 0xa4,
  0x52, 0x86, 0x83, 0x88, 0x99, 0x36, 0x4e, 0xe0, 0x58, 0x04, 0x51, 0x77,
  0x7d, 0x57, 0x34, 0x74, 0x51, 0x99, 0xa7, 0x4c, 0xcb, 0x2a, 0x5e, 0x00,
  0x06, 0x62, 0x72, 0xb4, 0x5b, 0x03, 0x6b, 0xe2, 0xd9, 0xe3, 0x67, 0x24,
  0xdc, 0x91, 0xa3, 0x24, 0x3d, 0xd9, 0x04, 0xe1, 0x19, 0xf1, 0x53, 0x9e,
  0x73, 0x14, 0x39, 0x44, 0xc6, 0x91, 0x2e, 0xda, 0x93, 0x6c, 0xc1, 0x5d,
  0xe0, 0xc6, 0xde, 0x10, 0x21, 0x98, 0x52, 0xdf, 0x89, 0x11, 0xe6, 0xa2,
  0xa1, 0x9d, 0xbc, 0xfe, 0x94, 0xec, 0xfc, 0x57, 0x6e, 0x99, 0xe9, 0xaa,
  0xe3, 0x39, 0xf8, 0x9b, 0x17, 0xeb, 0x80, 0xf2, 0xc9, 0x39, 0xa7, 0x85,
  0xc2, 0x3a, 0xe0, 0x1c, 0x31, 0x95, 0xb4, 0xf6, 0x11, 0x4d, 0x3c, 0x50,
  0xb5, 0xa6, 0x5c, 0x91, 0xd2, 0x06, 0xf8, 0x84, 0x48, 0xd7, 0x5e, 0x73,
  0x58, 0x0f, 0x4e, 0xf2, 0x69, 0x97, 0x2d, 0x84, 0x12, 0x91, 0x76, 0x02,
  0x98, 0xd8, 0xe2, 0x6e, 0x55, 0xe5, 0x6a, 0x94, 0x7c, 0x28, 0x90, 0x89,
  0x27, 0x64, 0x27, 0x62, 0x22, 0x2f, 0xcc, 0x0e, 0x18, 0x9a, 0x26, 0x28,
  0x8f, 0x08, 0x13, 0x02, 0x9f, 0xf3, 0xef, 0x9d, 0xb0, 0xc9, 0x4e, 0x88,
  0x14, 0xf7, 0xd6, 0xa2, 0x98, 0x0b, 0xdf, 0x7a, 0x13, 0xf6, 0x37, 0xe4,
  0xfe, 0x6c, 0x44, 0xea, 0x66, 0x39, 0x18, 0x9b, 0x42, 0xe0, 0xd9, 0x62,
  0x31, 0x64, 0x10, 0x75, 0x82, 0x94, 0x26, 0xe5, 0x9e, 0x8b, 0xa4, 0x91,
  0xc0, 0xe6, 0x97, 0xe0, 0x07, 0x92, 0x05, 0xb5, 0xde, 0x23, 0xd4, 0x00,

  0x29, 0xd8, 0x88, 0xa4, 0xbd, 0x6b, 0x64, 0x8d, 0x0a, 0xf7, 0x9c, 0x3f,
  0x04, 0xbb, 0xf3, 0x77, 0xe5, 0xa7, 0xb1, 0x8e, 0x64, 0x21, 0x2c, 0xe9,
  0xf4, 0xea, 0xb2, 0x5a, 0x71, 0x57, 0xc4, 0x58, 0xcb, 0x46, 0x4f, 0xeb,
  0xe6, 0x27, 0x95, 0x24, 0xea, 0xac, 0xe1, 0xa9, 0xf0, 0xab, 0x27, 0xaf,
  0x5b, 0xdd, 0xd5, 0x69, 0x27, 0x50, 0xe7, 0x16, 0x1f, 0x4e, 0x60, 0x47,
  0xc9, 0x57, 0x80, 0x1b, 0xe9, 0x24, 0x87, 0x1d, 0xcd, 0x99, 0x18, 0x93,
  0x3b, 0xf7, 0x9b, 0xf8, 0x70, 0x32, 0x06, 0x6b, 0xaa, 0x3c, 0x82, 0x0e,

  0x0b, 0x5a, 0x31, 0xa6, 0x68, 0x4e, 0x0d, 0xae, 0x88, 0x1a, 0x2e, 0xb3,
  0xca, 0x7e, 0x24, 0x4c, 0x92, 0xbc, 0x5a, 0x96, 0x33, 0x2a, 0xea, 0xca,
  0xee, 0xdd, 0x0b, 0x7a, 0x50, 0xf7, 0x42, 0x6a, 0xe1, 0x6a, 0x7f, 0x5d,
  0x18, 0xc4, 0x50, 0x29, 0x51, 0x5e, 0x39, 0x8f, 0x35, 0x55, 0xe8, 0x9a,
  0x41, 0x89, 0x76, 0x29, 0xcd, 0xf8, 0x65, 0x7f, 0x09, 0x45, 0x52, 0x4e,

  0x1b, 0x6f, 0x05, 0xf4, 0x40, 0x7c, 0x38, 0x66, 0xac, 0x91, 0x95, 0x51,
  0x81, 0x14, 0x2c, 0xca, 0xfb, 0x56, 0x46, 0x0f, 0x06, 0xa7, 0x6c, 0x7e,
  0xe8, 0xb0, 0x67, 0xbd, 0x23, 0xe6, 0xc3, 0x89, 0x0f, 0xd7, 0x3e, 0x60,
  0x3d, 0x61, 0xcc, 0x21, 0x76, 0xc0, 0x82, 0x61, 0x1d, 0x6a, 0x58, 0xce,
  0x3e, 0xe6, 0xdd, 0xb1, 0x0f, 0xf6, 0x1e, 0xb0, 0x7c, 0x23, 0xd8, 0x85,
  0x45, 0x61, 0xb4, 0xbb, 0x75, 0x35, 0xcd, 0x3e, 0x62, 0x6e, 0x4d, 0x5a,
  0x5d, 0x66, 0xcd, 0xc7, 0xcd, 0x1b, 0xb2, 0x10, 0x34, 0x85, 0xbb, 0x25,
  0xda, 0x8c, 0x5b, 0x5e, 0x21, 0xf8, 0xb2, 0xa9, 0xa0, 0x0b, 0x18, 0x05,
  0x8f, 0x5b, 0xb9, 0x37, 0xfd, 0x1b, 0xe2, 0x7d, 0x8f, 0x31, 0x69, 0xd9,
  0x30, 0x5b, 0x95, 0x79, 0x61, 0x1b, 0xc7, 0x80, 0xc7, 0x78, 0x73, 0x8c,
  0x21, 0x2f, 0x6d, 0x0a, 0x57, 0x2d, 0x3f, 0x51, 0x89, 0x95, 0x55, 0x02,
  0x3e, 0x46, 0x9a, 0x83, 0x78, 0x8b, 0xe3, 0xa7, 0xf5, 0xb4, 0x79, 0x49,
  0x52, 0x42, 0x68, 0x9b, 0xd1, 0xfa, 0x07, 0x4d, 0x45, 0xc5, 0x3d, 0xb3,

  0xf1, 0x3f, 0x68, 0x6f, 0x64, 0x77, 0x76, 0xab, 0x9b, 0x99, 0x05, 0xb2,
  0xb9, 0x71, 0x17, 0x48, 0x45, 0x3b, 0x32, 0x9b, 0xb5, 0xe1, 0x33, 0x65,
  0x30, 0xf1, 0x60, 0x73, 0x45, 0xc0, 0xee, 0xfd, 0x74, 0xd1, 0x84, 0xfa,
  0x4f, 0xf0, 0xf1, 0x0a, 0x9d, 0xab, 0x65, 0x77, 0xe5, 0x30, 0xfa, 0xb7,
  0x46, 0x9e, 0x76, 0x53, 0x64, 0xee, 0x6e, 0xe9, 0xbf, 0xac, 0x22, 0x7b,
  0xb4, 0x81, 0xdd, 0xc9, 0x67, 0xbb, 0x0c, 0x6f, 0x96, 0x91, 0x5b, 0x96,


  0x29, 0x01, 0x39, 0x5b, 0xf7, 0xdf, 0x2b, 0x9e, 0x79, 0xef, 0x1e, 0x57,
  0xcb, 0x7b, 0xae, 0xb8, 0x79, 0xc0, 0xad, 0x8a, 0x91, 0x38, 0xec, 0xaa,
  0x82, 0x5b, 0x29, 0x8d, 0xad, 0x7b, 0x76, 0xbe, 0x6f, 0x06, 0x2d, 0x1a,
  0xec, 0x9f, 0x89, 0x3c, 0x19, 0x9d, 0x8e, 0xdb, 0x5c, 0x73, 0xba, 0xd5,
  0x9d, 0x9b, 0x59, 0x7c, 0x38, 0x99, 0xae, 0x7b, 0x4b, 0xb6, 0x67, 0xe0,
  0xf9, 0x2e, 0xb9, 0x93, 0x88, 0x31, 0x1b, 0x43, 0xda, 0xd0, 0xeb, 0xfd,
  0x93, 0xd8, 0x03, 0xd9, 0xe7, 0x8b, 0xc2, 0xb7, 0xc8, 0xe9, 0x8b, 0x46,


  0xf2, 0x6e, 0x28, 0x65, 0xf1, 0x22, 0xd6, 0xf6, 0xb8, 0xb9, 0x97, 0x30,
  0xe2, 0xae, 0x48, 0xc8, 0x43, 0xa2, 0x2a, 0x1a, 0x51, 0x89, 0x92, 0x0a,
  0xc0, 0xb8, 0x19, 0xb5, 0xf8, 0x08, 0xf3, 0xe6, 0x13, 0xfe, 0x66, 0xc2,
  0x79, 0x5b, 0x0c, 0x84, 0x4c, 0xb1, 0x43, 0x51, 0x43, 0xb4, 0x57, 0x71,

  0x9d, 0x89, 0x9d, 0x20, 0x8f, 0x73, 0xd7, 0x90, 0xb0, 0x41, 0x73, 0x27,
  0x79, 0xae, 0x1e, 0x05, 0x70, 0xdb, 0xd9, 0xe5, 0xcc, 0x6f, 0x77, 0xee,
  0x2d, 0xbf, 0x1a, 0xf0, 0x16, 0x5c, 0x9a, 0xc5, 0xe3, 0x8f, 0x68, 0x91,
  0x48, 0xa2, 0x86, 0x24, 0x50, 0x0f, 0x76, 0x93, 0xf7, 0x12, 0xda, 0x24,
  0xa5, 0xee, 0xae, 0xc1, 0x04, 0xcd, 0x00, 0x3b, 0xf9, 0xc8, 0x08, 0x43,
  0x2e, 0x0a, 0x20, 0x05, 0x89, 0x10, 0xf9, 0x63, 0x81, 0xe2, 0x5d, 0x8d,
  0x14, 0x2b, 0x04, 0xd8, 0xde, 0xc1, 0xe8, 0x60, 0x90, 0x58, 0xdb, 0xd3,
  0xd3, 0x9d, 0x91, 0xbc, 0x28, 0x58, 0xe0, 0xf4, 0xe9, 0xae, 0x9f, 0xe1,

  0x3d, 0x7d, 0xb8, 0x0e, 0xbd, 0xc2, 0x70, 0x2d, 0x3b, 0x83, 0xe5, 0x26,

  0xbd, 0x0b, 0x15, 0xd3, 0xfd, 0xe1, 0xa3, 0x67, 0xcf, 0x5a, 0xf2, 0xbc,
  0xf6, 0x70, 0xd4, 0x1f, 0xef, 0xef, 0x63, 0x6d, 0x41, 0x4d, 0xb4, 0xf9,
  0xc5, 0xf0, 0x19, 0x5e, 0x6c, 0xbf, 0x56, 0x67, 0xe6, 0x08, 0x66, 0xfd,
  0xef, 0x0d, 0xe9, 0x37, 0x91, 0xcf, 0xc1, 0x9f, 0xd2, 0xfb, 0xd6, 0x33,
  0xfa, 0x5c, 0xe4, 0x2d, 0x3c, 0xcc, 0xdb, 0x58, 0xce, 0xe7, 0xe4, 0xc9,
  0xa2, 0x27, 0x15, 0x99, 0xe7, 0x26, 0xad, 0x66, 0xe1, 0x72, 0xf7, 0x07,
  0xc3, 0x83, 0xbe, 0xe5, 0x22, 0x9a, 0x8c, 0x04, 0x38, 0x3a, 0x4f, 0x32,
  0x14, 0x8d, 0x01, 0xc2, 0x05, 0x42, 0xdd, 0x81, 0x0e, 0xcc, 0x8c, 0x0e,

  0x9e, 0x3d, 0x1b, 0xd0, 0xcc, 0x1e, 0x3f, 0x7b, 0xd6, 0x5b, 0x10, 0xee,
  0x7d, 0xe6, 0xa6, 0x74, 0xee, 0x27, 0x7a, 0xdd, 0x11, 0x4d, 0x4d, 0x76,
  0x4e, 0xfc, 0x3b, 0xf4, 0x9b, 0x2f, 0x92, 0x77, 0x67, 0x17, 0xc7, 0x9e,
  0x63, 0x06, 0xd7, 0x8b, 0x23, 0x86, 0x5e, 0x8a, 0x28, 0x42, 0xb0, 0x2b,
  0xb4, 0xf2, 0x82, 0xe1, 0x4b, 0x36, 0x49, 0x68, 0x4c, 0xa2, 0x58, 0x45,
  0x7d, 0x82, 0xff, 0x16, 0x66, 0x44, 0x90, 0x71, 0x3c, 0xcb, 0x2f, 0xf3,
  0xc6, 0x87, 0x6d, 0xda, 0x31, 0xa7, 0xbd, 0x0b, 0x17, 0x07, 0x27, 0xba,
  0x49, 0x34, 0x65, 0xbb, 0xa6, 0xf2, 0x0e, 0xce, 0x84, 0xdd, 0x26, 0x6b,
  0x6a, 0x3b, 0x28, 0xb0, 0xc8, 0x16, 0xb3, 0x5a, 0x05, 0x21, 0x3f, 0x3e,
  0xc4, 0x83, 0x72, 0x5b, 0x60, 0xae, 0x72, 0x8f, 0xf7, 0x14, 0xa0, 0x96,

  0xfc, 0xe9, 0xfe, 0x78, 0x0a, 0xdc, 0x59, 0x48, 0xc4, 0xd0, 0xc2, 0x2c,
  0x1a, 0xc7, 0x4f, 0x95, 0xdd, 0xae, 0x9d, 0xcb, 0xd3, 0x7a, 0xe7, 0x0a,
  0x3a, 0x87, 0x00, 0x8f, 0x90, 0x9d, 0xf8, 0xb3, 0x6c, 0xa5, 0x29, 0xa5,
  0x45, 0x7b, 0x1c, 0x43, 0xcb, 0xf3, 0xfc, 0x72, 0x5d, 0xc5, 0xd3, 0x2f,
  0xff, 0xe2, 0xca, 0x84, 0xb4, 0x69, 0x40, 0x7a, 0x93, 0x6a, 0x79, 0x12,
  0x1a, 0x3d, 0xe8, 0xbd, 0x56, 0x23, 0x58, 0xcb, 0x81, 0xd0, 0xd2, 0x21,
  0xb0, 0xa4, 0xc9, 0x3b, 0x31, 0x37, 0x9a, 0x0c, 0x39, 0x09, 0xb4, 0x6d,
  0xa7, 0x34, 0x2f, 0x48, 0x1b, 0x57, 0x96, 0x25, 0x2e, 0x44, 0x3a, 0x6f,
  0x12, 0xa7, 0xa9, 0x6c, 0x41, 0x98, 0x53, 0xb7, 0xbd, 0x70, 0xbe, 0x7b,
  0x7a, 0x12, 0xde, 0x96, 0xab, 0xd2, 0x6b, 0x13, 0x12, 0x82, 0x36, 0x08,
  0x28, 0x0d, 0xb8, 0x0f, 0x1f, 0xd1, 0xcc, 0xa8, 0xd0, 0x8b, 0x32, 0xa5,
  0x63, 0x54, 0xcf, 0x09, 0x47, 0xd3, 0x59, 0x3b, 0x60, 0xc4, 0x31, 0x3d,
  0xdb, 0x20, 0xab, 0x83, 0x8e, 0x5a, 0x4e, 0x99, 0xb0, 0xbc, 0x1d, 0xa8,
  0x08, 0x88, 0xd4, 0x73, 0x83, 0x30, 0x9f, 0x32, 0x1f, 0x61, 0x84, 0x8c,
  0xdd, 0x51, 0x12, 0x9a, 0xbd, 0x44, 0xf0, 0x7c, 0x5a, 0xb6, 0xcf, 0x05,
  0xfa, 0x9d, 0x92, 0x90, 0xa4, 0x09, 0xab, 0x38, 0x1e, 0x9f, 0xfc, 0xf7,
  0xe3, 0x5f, 0x33, 0xea, 0x54, 0xa5, 0x37, 0xb6, 0x70, 0xf0, 0x3b, 0x06,
  0xac, 0x94, 0x68, 0x90, 0x45, 0xaa, 0x48, 0x17, 0x62, 0xc4, 0x53, 0x4f,
  0x4d, 0x48, 0x0f, 0xc4, 0x15, 0xa5, 0x9d, 0xb1, 0x21, 0xac, 0x90, 0xb6,
  0xc9, 0x6b, 0x46, 0xf0, 0x0a, 0xea, 0x34, 0x44, 0x32, 0x3a, 0x4a, 0xbe,

  0xd8, 0x09, 0xc8, 0x07, 0xb9, 0x84, 0x2b, 0x11, 0x96, 0x3d, 0x79, 0x7b,
  0x19, 0x51, 0x2a, 0x0c, 0x17, 0x00, 0x12, 0x91, 0x26, 0x65, 0xe6, 0x7a,
  0x4f, 0x4f, 0x42, 0xbf, 0xd2, 0x3e, 0xe3, 0xf6, 0x0d, 0x14, 0xa0, 0xaa,
  0x92, 0x17, 0x1f, 0xde, 0x9f, 0xf6, 0x94, 0x4b, 0x8e, 0x71, 0x06, 0xb4,
  0x59, 0x5b, 0xef, 0x33, 0xa0, 0x99, 0x55, 0xc9, 0x79, 0x7a, 0x99, 0x6d,
  0xf9, 0x00, 0x72, 0xaa, 0x2a, 0x62, 0xf9, 0xe2, 0x7f, 0x88, 0xb9, 0x53,
  0xfc, 0xb6, 0x1b, 0xc4, 0xc4, 0x5d, 0x58, 0xd8, 0xaf, 0x71, 0x9c, 0x2f,
  0x52, 0xd9, 0xbb, 0x75, 0x45, 0x01, 0x7d, 0xec, 0x7c, 0xa4, 0x95, 0x14,
  0xbf, 0xde, 0x46, 0xfd, 0x74, 0x19, 0xa6, 0x14, 0x09, 0x22, 0x3f, 0x59,
  0xb2, 0xf5, 0x47, 0x72, 0xbf, 0x6f, 0x79, 0x48, 0x97, 0xc3, 0x2c, 0x0c,

  0xb2, 0xe9, 0x56, 0x30, 0x46, 0xa1, 0x75, 0x45, 0xb1, 0x2b, 0xbf, 0xe5,
  0xbe, 0xaf, 0xe5, 0x82, 0xad, 0xaa, 0x8c, 0xf0, 0x78, 0x91, 0xc1, 0x1b,
  0xb4, 0x0a, 0xe3, 0xb4, 0x63, 0x86, 0x60, 0x25, 0xfb, 0xef, 0x54, 0xe6,
  0xf7, 0x5c, 0x22, 0x2d, 0xac, 0x06, 0xd9, 0xa9, 0x49, 0x9c, 0x5a, 0x7b,
  0x2c, 0xc5, 0x16, 0x9b, 0x2e, 0xa8, 0x21, 0x0e, 0x7b, 0xbf, 0x24, 0xf4,
  0x3e, 0x2b, 0xa9, 0x89, 0x0a, 0xcd, 0x27, 0x2d, 0xac, 0x3f, 0xb9, 0x75,
  0xb2, 0xbf, 0x3a, 0xd4, 0xa1, 0x0b, 0x00, 0xbd, 0x1c, 0x48, 0x97, 0xa7,
  0xa1, 0xa1, 0x8e, 0x42, 0x2a, 0xe1, 0xbd, 0x63, 0xf5, 0x68, 0xef, 0x3f,
  0xbc, 0xd6, 0x21, 0x5e, 0xf3, 0x8f, 0x1e, 0xc4, 0x5c, 0x6f, 0xba, 0x0d,
  0xaa, 0x54, 0x40, 0x30, 0x41, 0xfb, 0x11, 0x57, 0x30, 0x2b, 0xd2, 0x32,

  0xea, 0xce, 0x1f, 0x3a, 0xa5, 0xe9, 0x15, 0x57, 0x6e, 0x0e, 0x5f, 0xe7,
  0x46, 0x86, 0xd4, 0x0c, 0x40, 0x04, 0x25, 0x97, 0x6b, 0x0f, 0xf5, 0x1a,
  0xc2, 0x37, 0x92, 0x05, 0xe9, 0x0a, 0x1c, 0x25, 0x41, 0xe2, 0xb3, 0x7d,
  0xc7, 0x86, 0x6c, 0x0c, 0x45, 0xdc, 0xeb, 0x2c, 0xf6, 0x14, 0x86, 0xd4,
  0xf9, 0x2b, 0xb0, 0x6d, 0xda, 0xc3, 0x80, 0x6f, 0x87, 0x91, 0x08, 0x91,
  0xdd, 0x51, 0x58, 0x20, 0x64, 0xcd, 0x38, 0xbc, 0x1e, 0xe9, 0xc1, 0x14,
  0x98, 0x9a, 0xb6, 0x73, 0x39, 0x4b, 0xa5, 0x80, 0xc4, 0x28, 0x2f, 0xc5,

  0x36, 0xc2, 0xe1, 0xd8, 0x09, 0x83, 0xf0, 0x71, 0x69, 0xea, 0xd4, 0x0c,
  0x6c, 0xe3, 0xe6, 0xda, 0x97, 0x59, 0x9a, 0xf8, 0xc4, 0x05, 0xee, 0x5d,
  0x6b, 0x55, 0x48, 0x1a, 0xf5, 0x09, 0x8f, 0x62, 0x03, 0x45, 0x29, 0x08,
  0x2f, 0xb1, 0x10, 0x3a, 0xf2, 0x77, 0xcc, 0x13, 0x9e, 0x0c, 0xe4, 0x7c,
  0x8d, 0xe4, 0xf7, 0x43, 0xd7, 0x79, 0x63, 0xe7, 0x2e, 0x33, 0xfa, 0xb5,
  0x05, 0xd5, 0x52, 0x43, 0x2a, 0x52, 0xfd, 0x99, 0x70, 0x77, 0xd0, 0xba,
  0x55, 0x98, 0x02, 0x13, 0xc4, 0x8b, 0x2c, 0xf2, 0x96, 0x1b, 0x2d, 0x00,
  0x89, 0x96, 0x45, 0x76, 0x4b, 0x18, 0xe0, 0xfd, 0xc3, 0x85, 0x4a, 0xf6,
  0x77, 0x2f, 0xdf, 0xbf, 0x3b, 0x79, 0xf7, 0xd5, 0xf3, 0xe4, 0xf8, 0x36,
  0xab, 0xa6, 0xd4, 0x89, 0xf9, 0x6f, 0xeb, 0x59, 0x3e, 0x05, 0x9b, 0x90,
  0x06, 0xc1, 0x7e, 0xc8, 0xdb, 0x58, 0x01, 0x99, 0xf8, 0x57, 0x49, 0xe0,
  0x06, 0x85, 0x30, 0x92, 0xcb, 0x4b, 0xc0, 0x11, 0xc6, 0x8a, 0x2a, 0x2f,
  0xd7, 0x1e, 0xf9, 0x4c, 0xb9, 0xa5, 0x21, 0x62, 0x01, 0x88, 0x91, 0x5e,
  0xc9, 0x5e, 0x93, 0xd3, 0x35, 0x79, 0x7d, 0x7a, 0xda, 0xd3, 0x1f, 0x9a,
  0xa7, 0xcf, 0xa5, 0xbe, 0x18, 0xc2, 0xe6, 0x9b, 0x52, 0x2c, 0xcf, 0x88,
  0x7f, 0xe2, 0x35, 0x2d, 0x86, 0x07, 0x30, 0xb0, 0xef, 0xc2, 0x4c, 0x4e,
  0xa4, 0x19, 0x23, 0x39, 0x10, 0x27, 0x9c, 0x57, 0x33, 0xd8, 0x42, 0x86,

  0x43, 0x96, 0xf3, 0x86, 0xf4, 0xa3, 0x96, 0x24, 0x6d, 0xf7, 0x05, 0xda,
  0x94, 0x14, 0xc6, 0x31, 0xa3, 0x36, 0x4e, 0x94, 0x84, 0x24, 0x91, 0xb3,
  0x6a, 0x08, 0x92, 0x15, 0x43, 0x34, 0x93, 0x42, 0xaa, 0x59, 0x90, 0x50,
  0x9b, 0xda, 0xce, 0xe6, 0x35, 0x71, 0xcb, 0x90, 0x5d, 0xdc, 0x64, 0x95,
  0x98, 0x9e, 0xb6, 0x88, 0xd8, 0x30, 0xbb, 0x51, 0x32, 0x2e, 0xcd, 0xf3,
  0x91, 0xaa, 0x05, 0xed, 0xb8, 0xe8, 0xba, 0xaa, 0xa6, 0x8d, 0xa4, 0xd0,
  0xda, 0xbc, 0x2a, 0x34, 0xa3, 0x42, 0xcc, 0xad, 0xbd, 0xde, 0x48, 0xbf,
  0x67, 0xa2, 0xff, 0x49, 0x66, 0x15, 0x8a, 0x3b, 0x0d, 0xed, 0x10, 0x91,
  0x6c, 0x0d, 0x0d, 0x3b, 0xdd, 0x42, 0x23, 0x3d, 0xea, 0x42, 0xed, 0x8d,
  0x74, 0x4f, 0x2f, 0x55, 0x3f, 0x4d, 0xbd, 0xbb, 0xe0, 0x7b, 0x5a, 0xd4,
  0xa9, 0xd5, 0xe9, 0x39, 0x4e, 0xa5, 0x51, 0x98, 0x8d, 0x95, 0x32, 0x4f,
  0xa2, 0xae, 0x36, 0x59, 0x13, 0x04, 0xc0, 0xcf, 0x6c, 0x0b, 0x48, 0x3c,

  0xe6, 0x17, 0xca, 0xfb, 0xaf, 0x8b, 0xbc, 0x19, 0x38, 0xef, 0x02, 0x69,
  0x05, 0x41, 0xb9, 0xb6, 0xb1, 0xf1, 0x46, 0xbb, 0xb1, 0xbc, 0x1a, 0xe1,
  0x8b, 0x02, 0xe4, 0x9a, 0x5e, 0xbb, 0x7c, 0xaf, 0x5e, 0xce, 0x37, 0xd2,
  0xfc, 0xf8, 0xae, 0x8c, 0x06, 0xe4, 0x81, 0xe7, 0x0f, 0xe7, 0xe1, 0xc0,
  0x4c, 0xfc, 0x62, 0x16, 0x2f, 0x5a, 0xe9, 0x70, 0x09, 0xc2, 0xe1, 0xbc,
  0x82, 0xaf, 0x7e, 0x26, 0x2c, 0x51, 0x9b, 0xbc, 0xb8, 0x2e, 0x3f, 0xb1,
  0xbc, 0x47, 0xa0, 0x2b, 0x9a, 0xa2, 0x92, 0xf7, 0x96, 0xb5, 0xb0, 0x5f,
  0x8a, 0x77, 0x55, 0xe6, 0xce, 0x22, 0xcb, 0xab, 0x24, 0x30, 0x8b, 0x91,
  0x60, 0x8c, 0x2d, 0x01, 0xb4, 0xe2, 0xa9, 0x9b, 0xef, 0xaf, 0x77, 0x69,
  0xa0, 0x0d, 0xc5, 0x93, 0x6c, 0x51, 0x67, 0x03, 0xaf, 0x1a, 0x50, 0x85,
  0x8d, 0x4a, 0x1b, 0x24, 0x7f, 0xb2, 0x38, 0xd9, 0x24, 0x49, 0x46, 0xdd,
  0x8e, 0xa5, 0x1d, 0x23, 0x16, 0xc1, 0x4d, 0x8e, 0x3a, 0x4d, 0xaf, 0xca,
  0x32, 0x2a, 0xb6, 0x9d, 0x0c, 0x81, 0x4a, 0x03, 0x40, 0x8c, 0x1e, 0xfd,
  0xc1, 0xc2, 0x87, 0xb9, 0x60, 0x5d, 0x90, 0xe0, 0x6b, 0xa1, 0x06, 0x45,
  0x1b, 0xf4, 0x00, 0x4a, 0xdb, 0xd2, 0x8d, 0x27, 0x14, 0xc8, 0xe6, 0x58,
  0xf2, 0x02, 0xff, 0xae, 0x23, 0x8f, 0x9b, 0x16, 0x7a, 0x82, 0xbf, 0x29,
  0x51, 0x61, 0xc7, 0x09, 0x68, 0x2e, 0x2d, 0x11, 0x74, 0x03, 0xa3, 0xa9,

  0x68, 0x07, 0x34, 0x30, 0xcf, 0xbc, 0x01, 0x03, 0xf9, 0xfd, 0xe1, 0x7e,
  0x1f, 0x93, 0x67, 0x35, 0x56, 0xab, 0x5c, 0xe9, 0x3a, 0x5a, 0xe3, 0x9c,
  0x05, 0xa1, 0x2b, 0x0c, 0x20, 0x01, 0xb2, 0x5e, 0x25, 0x68, 0x7d, 0x45,
  0x4d, 0xf0, 0x7a, 0xf6, 0x7f, 0xf4, 0x5b, 0xf4, 0x3e, 0x74, 0xfc, 0xeb,
  0xbd, 0x77, 0xc6, 0x34, 0x52, 0xb4, 0xbc, 0x96, 0x79, 0x89, 0xe7, 0x2a,

  0xf1, 0x74, 0x76, 0xa7, 0x37, 0xc0, 0xb2, 0x07, 0xb3, 0xe3, 0x1c, 0x83,
  0x3c, 0x64, 0xc9, 0xc6, 0xa6, 0x5d, 0xae, 0x22, 0x0c, 0xcb, 0x5e, 0x02,


  0xcd, 0x52, 0x49, 0x1d, 0xda, 0x65, 0xfa, 0xc9, 0xf6, 0xee, 0x0b, 0xd1,

  0x57, 0x84, 0x93, 0xb2, 0x31, 0x9e, 0x4a, 0xb6, 0x26, 0x76, 0x84, 0xbe,
  0xd4, 0x16, 0x8c, 0xc8, 0x3a, 0x1b, 0x46, 0xbd, 0xfd, 0x8a, 0x59, 0x13,
  0x82, 0x9f, 0xc1, 0x92, 0x72, 0x60, 0xf8, 0x5b, 0xfc, 0xfa, 0x56, 0xb2,
  0x43, 0x5c, 0x75, 0x57, 0xb5, 0xd7, 0xb0, 0xfe, 0xd9, 0xd5, 0xd4, 0x81,
  0xfd, 0xa6, 0x75, 0x90, 0x39, 0x0b, 0xed, 0x35, 0x31, 0x46, 0x5e, 0x65,
  0x14, 0x00, 0x6a, 0xf9, 0x26, 0x95, 0x83, 0xf3, 0xf5, 0x22, 0x66, 0xe6,
  0xe0, 0x66, 0xdb, 0x66, 0xac, 0x79, 0x5d, 0xaf, 0xb5, 0x97, 0x80, 0xc3,
  0x99, 0x11, 0xd0, 0xc1, 0x85, 0x99, 0x11, 0x0a, 0x5a, 0x16, 0xdc, 0xe2,
  0x2c, 0x4a, 0xb9, 0x70, 0x0d, 0x73, 0x03, 0x73, 0x51, 0x30, 0xd9, 0x8a,
  0xe2, 0xb9, 0x69, 0x17, 0x3a, 0xdb, 0x46, 0x8d, 0xb6, 0x80, 0xba, 0xb3,
  0xe7, 0x41, 0xd2, 0xe0, 0xd6, 0xd9, 0xf9, 0xc5, 0xc9, 0xd9, 0xbb, 0x71,
  0xf2, 0x5f, 0xb7, 0x36, 0x96, 0x77, 0xb5, 0x81, 0x95, 0xbf, 0x1f, 0xb8,
  0x33, 0x49, 0x5e, 0x88, 0x9f, 0xa1, 0xcf, 0x36, 0xf6, 0x34, 0xf8, 0xa9,
  0x91, 0xde, 0x86, 0xbd, 0xea, 0x9b, 0x82, 0xed, 0x26, 0x87, 0xd5, 0x41,
  0x32, 0x08, 0xb4, 0x65, 0x1f, 0xf6, 0xc1, 0xb7, 0xa1, 0x99, 0xd7, 0x3b,
  0x93, 0xa5, 0x33, 0x7a, 0x0f, 0x07, 0x66, 0x2c, 0x92, 0x96, 0xfd, 0x82,
  0xbd, 0x93, 0xb7, 0xb0, 0xcd, 0x37, 0xa4, 0x9b, 0xe2, 0xc1, 0x1d, 0xe6,
  0x9a, 0xa2, 0x68, 0xd5, 0x61, 0x86, 0xe0, 0x57, 0xc7, 0x17, 0xbb, 0x52,
  0xe8, 0x6a, 0xe7, 0x07, 0x4f, 0x97, 0xa8, 0x3d, 0xa9, 0xd5, 0xcc, 0xb4,
  0xb4, 0x95, 0x81, 0xdc, 0x8c, 0xf6, 0xbc, 0x48, 0x8b, 0x68, 0x09, 0x1b,

  0x69, 0xb4, 0xaf, 0xcc, 0x76, 0x10, 0x1f, 0x56, 0x8e, 0xac, 0xde, 0x13,
  0xaf, 0x7f, 0x0e, 0xe3, 0x32, 0x9d, 0x7f, 0xb8, 0xc0, 0x80, 0xaf, 0x8f,
  0x4f, 0x8f, 0x2f, 0x8e, 0xbb, 0x96, 0xfb, 0x84, 0xc1, 0x2c, 0x51, 0xea,
  0xd2, 0x64, 0xd3, 0xab, 0xa2, 0x5c, 0x94, 0x97, 0xb9, 0x34, 0x7c, 0x4d,
  0xbe, 0xcb, 0x26, 0xaf, 0x5f, 0x7e, 0x4b, 0xfa, 0x04, 0x79, 0x9c, 0xce,
  0xdf, 0x9f, 0x9d, 0xbf, 0x39, 0x79, 0xf7, 0x7a, 0x90, 0xbc, 0x3a, 0x3b,
  0xff, 0xcb, 0x20, 0x79, 0x7b, 0xf6, 0xed, 0x71, 0x24, 0xc5, 0x99, 0x10,
  0x6e, 0x03, 0x8a, 0xb1, 0xad, 0xfa, 0x58, 0x9c, 0xb1, 0xe9, 0x8d, 0x36,
  0xef, 0x1d, 0x31, 0x42, 0x35, 0x00, 0x75, 0x29, 0xfc, 0xd6, 0xec, 0xdd,
  0x20, 0xf9, 0xfa, 0xf8, 0xe5, 0xeb, 0x41, 0x00, 0x60, 0x3e, 0xe6, 0x55,
  0xd1, 0xea, 0xec, 0x92, 0x01, 0x7b, 0xcd, 0xd6, 0x07, 0x74, 0x04, 0x0e,
  0x72, 0xf1, 0x95, 0x35, 0x04, 0x8b, 0x22, 0xfd, 0x59, 0x5f, 0xe6, 0x84,
  0x20, 0xf1, 0xf7, 0xb6, 0x58, 0x6e, 0x95, 0x5d, 0x40, 0x5d, 0xf3, 0x15,
  0x6d, 0x81, 0x6b, 0x42, 0x66, 0xbd, 0xd6, 0x61, 0xd9, 0xe3, 0xee, 0x41,
  0x0c, 0x1a, 0xb4, 0x90, 0x02, 0xc0, 0x8e, 0xd8, 0xf5, 0x98, 0x4a, 0x47,

  0x43, 0xf4, 0x2c, 0x32, 0x66, 0x12, 0x69, 0xd5, 0x73, 0x87, 0x12, 0x1b,
  0xd7, 0xb0, 0x55, 0x45, 0x28, 0x15, 0x4c, 0x5d, 0x80, 0x9b, 0x68, 0xfb,
  0x74, 0x8b, 0x6c, 0x53, 0xcf, 0xef, 0xf9, 0xc7, 0x2a, 0x63, 0x83, 0x4a,
  0xeb, 0xb9, 0x21, 0xcc, 0x8c, 0x53, 0xa6, 0x70, 0x46, 0xce, 0x2d, 0x90,
  0x0c, 0x4f, 0xd4, 0x29, 0xb1, 0x49, 0xc1, 0x92, 0xcb, 0x22, 0x8e, 0x19,
  0x00, 0x45, 0xa9, 0xc3, 0xaa, 0xcd, 0x23, 0xf4, 0x12, 0xea, 0xbd, 0x9b,
  0x07, 0x7c, 0x8d, 0xf4, 0x7d, 0x7b, 0xc6, 0x03, 0xdb, 0x4f, 0x5b, 0x9c,
  0x38, 0xfe, 0xbe, 0x20, 0xfb, 0xb6, 0xed, 0xcf, 0x32, 0x12, 0x36, 0x10,
  0x2e, 0xf4, 0x98, 0xe1, 0x24, 0x85, 0x38, 0x44, 0x29, 0xf0, 0x36, 0x64,
  0x4b, 0xda, 0xcf, 0xf9, 0xb5, 0x4d, 0x76, 0x45, 0x35, 0xd5, 0x29, 0x04,
  0x21, 0x2a, 0x2c, 0xd4, 0x6f, 0x31, 0xe9, 0x0e, 0xfe, 0x68, 0xff, 0xd6,
  0xf9, 0xd8, 0x49, 0x97, 0xa8, 0x93, 0xa1, 0xe0, 0x7d, 0xa3, 0x78, 0x2f,
  0xd8, 0xba, 0x9d, 0x37, 0x3d, 0x8c, 0xd1, 0xf7, 0xda, 0xda, 0x8a, 0x7e,
  0x9b, 0x6d, 0x7e, 0x7a, 0x62, 0xae, 0x43, 0x04, 0x1a, 0x67, 0x56, 0xa2,
  0x71, 0x34, 0xd2, 0x0c, 0x72, 0x15, 0x25, 0x34, 0x56, 0xf8, 0x61, 0x6a,
  0xa4, 0x1e, 0xfd, 0x32, 0x3a, 0xac, 0xdf, 0xf3, 0xe9, 0xe0, 0xcc, 0xde,
  0x1f, 0x5f, 0xbc, 0x1f, 0x25, 0x3b, 0x3e, 0xe6, 0xeb, 0x93, 0xd1, 0x7e,
  0x18, 0xb4, 0xa1, 0x26, 0xee, 0xbb, 0x89, 0xf7, 0x59, 0xf7, 0x5d, 0xf4,
  0x77, 0xdf, 0xfc, 0xdd, 0x30, 0x8f, 0xd8, 0x43, 0x7a, 0xda, 0x8f, 0x7d,
  0xcf, 0x6f, 0x14, 0xdf, 0x5a, 0x25, 0xfd, 0x62, 0xc3, 0xd7, 0xbe, 0x3e,
  0x3e, 0x3d, 0x0f, 0x57, 0xf9, 0xed, 0xfb, 0x37, 0x7f, 0x69, 0xaf, 0xf2,
  0xe8, 0x51, 0xe4, 0xab, 0xbf, 0xa4, 0x43, 0x3d, 0xab, 0xcb, 0x85, 0xd1,
  0x57, 0x50, 0xc5, 0x81, 0x22, 0x8e, 0xe7, 0x46, 0x00, 0x50, 0xae, 0xf9,
  0x5f, 0x07, 0xf2, 0x97, 0x1f, 0x47, 0xa3, 0xd1, 0x9f, 0x42, 0x54, 0x74,
  0xf8, 0x68, 0xdc, 0x7a, 0xe5, 0xe1, 0xae, 0x09, 0x8e, 0xaa, 0x19, 0x94,
  0x09, 0x51, 0xe4, 0x62, 0x95, 0xe6, 0x15, 0x95, 0x3c, 0xc6, 0x04, 0x2e,
  0xad, 0xc8, 0x15, 0x7a, 0x59, 0x6d, 0x4e, 0x00, 0xc1, 0xf8, 0xb2, 0xee,
  0xd4, 0xbb, 0x52, 0x55, 0xed, 0xd5, 0x93, 0xa4, 0xb3, 0xc0, 0x11, 0xc2,
  0xcd, 0x51, 0xf0, 0xd9, 0x8a, 0x1c, 0xb4, 0xac, 0x68, 0x3a, 0x41, 0x5b,
  0xa8, 0xf0, 0x90, 0xe5, 0xcf, 0xec, 0xf4, 0x63, 0xde, 0x0b, 0xae, 0x93,
  0x7c, 0x25, 0x11, 0x75, 0xd8, 0x5f, 0x90, 0x28, 0xe8, 0x33, 0x9b, 0x35,
  0xd3, 0x3d, 0x5a, 0x64, 0x1d, 0xf4, 0x42, 0x62, 0x25, 0x2e, 0x74, 0x22,
  0x09, 0xd6, 0x8a, 0x57, 0x42, 0xcb, 0xd9, 0x2d, 0x5e, 0x4d, 0x82, 0xab,
  0xe2, 0xf5, 0x74, 0x75, 0x75, 0x8e, 0xc4, 0x7a, 0xb8, 0xe8, 0x76, 0xdb,

  0xca, 0x11, 0xa0, 0xa7, 0x95, 0x75, 0xd3, 0x3a, 0x78, 0x7a, 0x9b, 0x6c,
  0x40, 0x6a, 0xf4, 0xcd, 0x85, 0x6a, 0xa1, 0xda, 0x0f, 0xee, 0xac, 0x94,
  0x44, 0x79, 0x14, 0x40, 0x1f, 0x9f, 0xb7, 0x7c, 0x2e, 0xea, 0xa1, 0xf3,
  0xcf, 0x5c, 0x5b, 0x9f, 0x47, 0x30, 0x9c, 0x04, 0x49, 0x5c, 0x0d, 0x78,
  0x5a, 0x68, 0x28, 0x0f, 0xff, 0xdc, 0xaa, 0x32, 0xdf, 0xfe, 0xaf, 0xdb,
  0xa4, 0x0a, 0xe3, 0xed, 0x68, 0x6d, 0xbb, 0xd2, 0x2d, 0x19, 0x36, 0x78,
  0x2c, 0xa2, 0x37, 0xb8, 0x5d, 0x51, 0xda, 0xb3, 0xe9, 0x52, 0x96, 0x7a,
  0x64, 0x09, 0xa3, 0xe4, 0xbb, 0x7c, 0x31, 0x9b, 0xa6, 0x15, 0xd2, 0xc3,
  0x42, 0xf1, 0x2a, 0x54, 0x82, 0xeb, 0x54, 0x97, 0xf8, 0xaa, 0xbb, 0x3b,
  0xda, 0x4b, 0x26, 0x4e, 0xf3, 0xb1, 0xa2, 0x1f, 0x7b, 0x1e, 0x14, 0xfc,


  0xee, 0x69, 0xda, 0x25, 0xf4, 0xa3, 0x7b, 0x4c, 0xd2, 0xae, 0xdd, 0xc2,
  0xa3, 0x7d, 0xb4, 0x1a, 0x87, 0x18, 0x3e, 0x0a, 0x63, 0x29, 0xf9, 0xea,
  0xfa, 0x11, 0xdc, 0x57, 0x4f, 0x06, 0xfc, 0xaf, 0x27, 0x0c, 0x0e, 0xd9,
  0x58, 0xe1, 0x8e, 0x6d, 0x65, 0x33, 0x86, 0xb5, 0xfe, 0x93, 0x73, 0xad,
  0x70, 0xed, 0xf2, 0xc4, 0xb1, 0x44, 0x21, 0x05, 0x1f, 0xc1, 0xcc, 0x52,
  0x0d, 0x18, 0xf3, 0x8e, 0xce, 0x96, 0xb6, 0xc4, 0xf0, 0xaf, 0xbf, 0x4e,
  0x2a, 0x82, 0x1d, 0x69, 0xea, 0x1f, 0x37, 0xd5, 0x13, 0x1b, 0x9d, 0xff,
  0xe9, 0x28, 0xd2, 0x7e, 0xdb, 0x87, 0x3e, 0x77, 0x5f, 0xb2, 0xf9, 0xbe,
  0xee, 0x73, 0x94, 0xe1, 0x8f, 0xb0, 0x1d, 0x65, 0xfd, 0x6c, 0xfe, 0xd0,
  0xb3, 0x0d, 0x1f, 0x9a, 0x03, 0xd8, 0x88, 0xce, 0xd4, 0x1a, 0x00, 0x37,
  0x4a, 0x15, 0x7e, 0x8d, 0x32, 0xf5, 0xd2, 0x7e, 0x34, 0xda, 0x7f, 0x78,
  0x86, 0xb2, 0xb3, 0xbe, 0xc9, 0xb3, 0x37, 0x93, 0x9f, 0x80, 0x4c, 0x24,
  0x45, 0xac, 0xec, 0xa3, 0xb9, 0x8d, 0x9d, 0x31, 0x08, 0x36, 0xa7, 0xc5,
  0xcb, 0xcd, 0xfa, 0x51, 0x22, 0x54, 0x19, 0xe3, 0xb0, 0x0e, 0x76, 0xe0,
  0xc4, 0xd3, 0xee, 0xf5, 0x26, 0xf0, 0x69, 0x53, 0xea, 0x08, 0x7e, 0x4c,
  0xf8, 0x0b, 0xca, 0xe7, 0x8e, 0xa9, 0x8e, 0xe9, 0xfd, 0xf1, 0x9b, 0x0f,
  0xe3, 0xe3, 0xd7, 0x80, 0xdb, 0x8c, 0xf5, 0x53, 0xca, 0xe9, 0x46, 0x73,
  0x64, 0xa2, 0x29, 0x59, 0xa9, 0x94, 0x89, 0xb4, 0x1b, 0x0e, 0x72, 0x8f,
  0x4c, 0x28, 0x64, 0x4d, 0x69, 0x0c, 0xe3, 0xb0, 0xee, 0x84, 0x55, 0x39,
  0x79, 0xf7, 0x27, 0xe0, 0x8e, 0xf0, 0xaa, 0x67, 0x19, 0x35, 0xe7, 0x7a,
  0xc1, 0x59, 0x30, 0x01, 0xa8, 0xda, 0x5b, 0x2f, 0x8b, 0xbd, 0x5e, 0x64,
  0xd9, 0x4a, 0x83, 0xfe, 0x5e, 0x37, 0x79, 0x73, 0x3e, 0xea, 0x0f, 0x84,
  0xf7, 0x19, 0xe3, 0xb2, 0xfa, 0x96, 0xf6, 0x74, 0x92, 0x82, 0xd3, 0x87,
  0xf2, 0xd5, 0x1d, 0x60, 0x40, 0x77, 0x53, 0x76, 0xf2, 0xc6, 0xaa, 0xf5,
  0x0a, 0x3f, 0x1e, 0x74, 0xd5, 0x63, 0x38, 0x72, 0x42, 0xe8, 0x31, 0x86,
  0x11, 0x63, 0x55, 0x92, 0x96, 0x7a, 0x59, 0x56, 0x66, 0xd0, 0xa5, 0x2d,
  0x56, 0x64, 0x44, 0x87, 0x7a, 0xb7, 0xdb, 0xca, 0xb1, 0x6b, 0xb6, 0x93,
  0x2d, 0x81, 0x08, 0x78, 0xc6, 0xf5, 0xdb, 0xc4, 0x15, 0x78, 0x9b, 0xe0,
  0x31, 0xa1, 0xe8, 0x20, 0x8b, 0xb4, 0xb1, 0x54, 0x5d, 0x63, 0x2f, 0x78,
  0x07, 0x43, 0x73, 0x93, 0xba, 0x8e, 0x74, 0x9d, 0x39, 0xaa, 0xba, 0x6b,

  0x34, 0x40, 0xa7, 0x4e, 0x33, 0xff, 0x2d, 0xbb, 0xb9, 0x1d, 0x1c, 0xc6,
  0x6e, 0xc0, 0x32, 0xbd, 0x85, 0x8b, 0xaa, 0x97, 0x1c, 0xc4, 0x61, 0x4b,
  0x1b, 0x42, 0xcf, 0x55, 0xcc, 0xf3, 0xc1, 0x61, 0x5d, 0xe9, 0x0b, 0x27,
  0x26, 0xd9, 0xa3, 0x16, 0xff, 0x15, 0x19, 0xde, 0x61, 0xe8, 0x11, 0x50,
  0x59, 0x32, 0x67, 0x78, 0x09, 0x53, 0x5a, 0x24, 0xd9, 0x6f, 0x3b, 0xdc,
  0x58, 0x0a, 0x1f, 0xdb, 0xa5, 0x1f, 0x2f, 0x4a, 0x8a, 0x51, 0x2a, 0x31,
  0xe0, 0xf3, 0x21, 0x64, 0x1f, 0x99, 0x09, 0x15, 0x51, 0x21, 0x32, 0xf0,
  0x6c, 0xe2, 0x0d, 0x9a, 0xd9, 0xa0, 0x58, 0x8c, 0xf0, 0xcb, 0xd8, 0x05,
  0x36, 0xb7, 0x3e, 0xb4, 0x4a, 0xde, 0x0c, 0x72, 0x58, 0x75, 0x9c, 0x8c,
  0x07, 0x18, 0xb4, 0x61, 0x95, 0x65, 0xda, 0xa8, 0xcd, 0x84, 0x9f, 0x80,
  0x7b, 0xa9, 0x69, 0x8d, 0x7c, 0x44, 0x55, 0x63, 0xb0, 0x01, 0x72, 0x35,
  0xa2, 0xb6, 0x89, 0x56, 0x04, 0x43, 0x33, 0x2d, 0xfc, 0xc9, 0xe2, 0x04,
  0xcc, 0x20, 0x79, 0x39, 0x43, 0x55, 0x14, 0x77, 0xe2, 0xe9, 0x81, 0x8f,
  0x91, 0xd9, 0x6c, 0x93, 0xab, 0xf2, 0x36, 0x5f, 0xae, 0x97, 0x78, 0x7d,
  0xc0, 0x06, 0xd8, 0x92, 0xa4, 0x96, 0x1e, 0x2a, 0xb2, 0x0b, 0x6d, 0xdb,
  0xaf, 0x98, 0x33, 0x83, 0x58, 0x1b, 0x88, 0xb6, 0xe1, 0x94, 0x1f, 0x7a,
  0x8b, 0x5b, 0x6c, 0xe0, 0xa0, 0xfe, 0x97, 0xd3, 0x67, 0xf2, 0xc2, 0x28,
  0x74, 0x7f, 0x8a, 0x44, 0xa3, 0x53, 0x9f, 0xa7, 0x0a, 0xff, 0x00, 0x65,
  0x52, 0xaa, 0x73, 0x36, 0xf3, 0x4c, 0x49, 0xa6, 0x38, 0xd2, 0xc4, 0xf8,
  0x90, 0x7a, 0x39, 0xd4, 0xc0, 0x3a, 0xbe, 0x85, 0xdc, 0x69, 0xa1, 0xce,
  0xf7, 0xcb, 0x42, 0x49, 0x88, 0x9e, 0xce, 0x4d, 0x3a, 0x8f, 0x04, 0x32,
  0x5f, 0xe1, 0x19, 0x40, 0xb4, 0xf2, 0xbe, 0xf9, 0xfc, 0xbe, 0x24, 0xc5,
  0x88, 0x7d, 0x4b, 0x1e, 0x73, 0xd9, 0x65, 0x75, 0x63, 0xb5, 0x7b, 0x85,
  0xd8, 0x70, 0x20, 0xd8, 0x06, 0x31, 0xb2, 0x0e, 0xbb, 0x64, 0xb5, 0x94,
  0xa1, 0x90, 0x9e, 0x13, 0x3b, 0xe5, 0xb3, 0x1b, 0x70, 0xb2, 0x26, 0x32,
  0x34, 0x1f, 0xdd, 0xde, 0x06, 0x14, 0xee, 0x19, 0xc4, 0x8c, 0x37, 0xc9,
  0xd6, 0xf2, 0xa3, 0x7d, 0x94, 0x39, 0x3e, 0xbe, 0xed, 0x18, 0xcd, 0xa3,
  0x38, 0x38, 0x24, 0xcb, 0x07, 0x62, 0x91, 0x93, 0x92, 0xa3, 0x70, 0xbc,
  0x69, 0x69, 0x64, 0x3b, 0x99, 0x3b, 0xdc, 0xa4, 0x39, 0x08, 0x22, 0x48,
  0x6d, 0x40, 0x2e, 0xa6, 0x6d, 0xf6, 0xaa, 0x51, 0x52, 0x34, 0x2d, 0x34,

  0x9a, 0x3f, 0x6d, 0xa5, 0xee, 0x93, 0xcd, 0x03, 0x98, 0x95, 0x6b, 0x40,
  0x61, 0x84, 0xdb, 0x45, 0x5f, 0xe1, 0xdd, 0xa7, 0x2b, 0x65, 0xe4, 0x55,
  0xbe, 0xa0, 0xd7, 0xf8, 0x62, 0xd7, 0xc9, 0x81, 0x39, 0x85, 0xbc, 0x58,
  0x37, 0x16, 0xae, 0x0f, 0xdf, 0xb4, 0xb0, 0x33, 0x91, 0xdd, 0x5f, 0x20,
  0xd1, 0x57, 0x2b, 0xe0, 0xe9, 0xf6, 0xd5, 0x5e, 0x74, 0x90, 0x6f, 0x09,
  0x34, 0x72, 0xdb, 0xd3, 0xd9, 0x97, 0xb2, 0x31, 0x57, 0x91, 0x0d, 0xc3,
  0x8a, 0x5c, 0xcd, 0x6e, 0xcd, 0x6e, 0x33, 0x8a, 0x92, 0x27, 0xd8, 0xac,
  0x48, 0x1b, 0x79, 0x5d, 0x28, 0x22, 0x99, 0x3f, 0x2d, 0x26, 0x6e, 0x9b,
  0x78, 0x81, 0xcf, 0x95, 0x8d, 0x5c, 0x49, 0xdb, 0x7c, 0x8d, 0xb5, 0xb6,
  0xf8, 0xd5, 0xe6, 0xfe, 0x69, 0x82, 0x57, 0xf3, 0xe4, 0x89, 0xad, 0x05,
  0xe6, 0x34, 0xce, 0x72, 0x69, 0x73, 0x36, 0x99, 0xb0, 0xdf, 0xe3, 0xcb,
  0x2f, 0x29, 0x62, 0xfc, 0x3c, 0x89, 0x69, 0x64, 0x4c, 0x42, 0x0a, 0x4b,
  0x6d, 0x78, 0x2f, 0x98, 0x01, 0x7c, 0xf6, 0x99, 0x02, 0x72, 0x13, 0x54,
  0x37, 0x5f, 0x55, 0xc2, 0xb2, 0x87, 0xfb, 0x1d, 0x46, 0x5c, 0x76, 0x1b,
  0x72, 0xe6, 0x98, 0xaa, 0xf3, 0x1b, 0xb2, 0xa3, 0x3a, 0x25, 0xf8, 0xc9,
  0x75, 0x73, 0xf5, 0x8f, 0x7c, 0x16, 0x85, 0x52, 0xa2, 0xbb, 0x60, 0x7e,
  0x6d, 0x0e, 0xad, 0x66, 0xef, 0x97, 0x62, 0x9b, 0x26, 0x3b, 0xf2, 0xda,
  0xee, 0x20, 0x99, 0xad, 0xe1, 0x92, 0x1b, 0xbf, 0x1c, 0x9f, 0x26, 0xe7,
  0xa7, 0x2f, 0x4f, 0xde, 0x99, 0x77, 0x86, 0xa1, 0x91, 0x6a, 0x11, 0xcb,
  0x06, 0x49, 0xb7, 0xc7, 0x18, 0xfc, 0x9d, 0x6d, 0x54, 0xb3, 0xf6, 0x87,
  0x42, 0x4c, 0xa3, 0x19, 0x84, 0x69, 0xab, 0xf6, 0x60, 0xb8, 0xd6, 0x8c,
  0xa7, 0x3e, 0x54, 0x1d, 0xbb, 0xa5, 0x9a, 0x26, 0x23, 0x79, 0xa8, 0x5e,
  0x98, 0x51, 0xee, 0xa2, 0x11, 0x5b, 0xd7, 0x0a, 0x5d, 0x11, 0x5b, 0x8d,
  0x59, 0xb9, 0x03, 0x6d, 0xe5, 0xc9, 0x9b, 0x39, 0x71, 0xcf, 0x2c, 0x43,
  0x16, 0xde, 0xd8, 0x40, 0x77, 0xeb, 0xe4, 0xb9, 0xc6, 0x9b, 0x7d, 0x23,
  0x9f, 0x93, 0x72, 0x43, 0x65, 0x97, 0x44, 0xc6, 0x7a, 0x19, 0xf9, 0x29,
  0xca, 0x86, 0x13, 0x6b, 0xa4, 0xa1, 0x6a, 0x69, 0xbb, 0x0e, 0x24, 0xf4,
  0xa4, 0xbc, 0x1d, 0x28, 0x08, 0x0d, 0x96, 0x80, 0xea, 0x26, 0x97, 0xe3,
  0x70, 0x69, 0xd8, 0x19, 0xa0, 0xa8, 0x78, 0xbc, 0xa6, 0x64, 0x94, 0x5e,
  0x02, 0xdf, 0x0d, 0x0b, 0x06, 0x96, 0x46, 0xbf, 0x35, 0x03, 0xfa, 0x7e,
  0xd1, 0x4d, 0x34, 0xf6, 0xa4, 0xd3, 0xcb, 0x1b, 0x34, 0x96, 0x77, 0x75,
  0x9c, 0x63, 0xe4, 0xd8, 0xda, 0x1c, 0x39, 0xcb, 0x9d, 0xcd, 0x10, 0xa0,
  0xa3, 0x36, 0x35, 0x6c, 0x04, 0x60, 0x3f, 0xe8, 0x7c, 0xef, 0x61, 0x28,
  0xb1, 0x3f, 0x19, 0x24, 0x96, 0x51, 0xbb, 0xfb, 0x1a, 0x5f, 0xd6, 0xcf,
  0xf1, 0x71, 0x87, 0x45, 0x1d, 0x4c, 0x85, 0x71, 0xbd, 0x50, 0xcb, 0xc4,
  0x1d, 0x4a, 0xd9, 0xb1, 0x14, 0xc1, 0xfe, 0x9a, 0xed, 0x49, 0x6a, 0xdc,
  0x7d, 0x19, 0x26, 0x0c, 0x3d, 0xab, 0x2b, 0x1f, 0x13, 0xf5, 0x53, 0x07,
  0xdf, 0x61, 0x0c, 0xc6, 0xca, 0x26, 0xcb, 0x8a, 0x9d, 0x55, 0xe3, 0x69,
  0x4a, 0x94, 0x6b, 0x84, 0xd2, 0xac, 0x1c, 0xa7, 0x31, 0x5c, 0xbe, 0x19,
  0x35, 0x40, 0x08, 0xdb, 0x25, 0x70, 0x1a, 0xc2, 0x9c, 0x9b, 0xa4, 0xea,
  0x0c, 0xbc, 0x31, 0x03, 0x3e, 0xcc, 0x3d, 0x34, 0xaa, 0xe4, 0xef, 0xeb,
  0x3c, 0x6b, 0x50, 0x8c, 0x38, 0x4a, 0x5e, 0x73, 0xba, 0xa4, 0x74, 0x1a,
  0xe5, 0x8e, 0xc6, 0x68, 0x7b, 0xcc, 0x10, 0x00, 0xfc, 0x7d, 0x9a, 0x40,
  0xc0, 0x87, 0xcd, 0x84, 0x50, 0xe5, 0xfa, 0x16, 0xb3, 0x4e, 0x5e, 0xd1,
  0xb4, 0x97, 0x46, 0x02, 0x02, 0x83, 0xc9, 0x43, 0xd7, 0xd3, 0x7c, 0x1a,
  0xad, 0x70, 0x41, 0x12, 0x77, 0xfd, 0x29, 0xac, 0x61, 0x19, 0xb4, 0x3a,
  0xb5, 0xc1, 0x97, 0x22, 0x7c, 0xa9, 0xa1, 0x36, 0x7f, 0x45, 0xba, 0xd8,
  0xab, 0x9b, 0x19, 0x69, 0x05, 0xeb, 0x62, 0x41, 0xf3, 0xa4, 0x91, 0x7a,
  0xfa, 0x86, 0x46, 0x70, 0xa8, 0x80, 0x83, 0x43, 0x27, 0xd4, 0x3a, 0x22,
  0xc9, 0x6d, 0xe9, 0xcb, 0x80, 0xf0, 0xb2, 0x9b, 0x42, 0x50, 0x2c, 0x7f,


  0xb7, 0x88, 0xe9, 0xf0, 0x7a, 0xb1, 0x97, 0xad, 0x73, 0xdb, 0x04, 0x11,
  0x72, 0x4d, 0xe7, 0x65, 0x08, 0x6d, 0x52, 0xd6, 0x0a, 0x9e, 0x6e, 0x16,
  0x69, 0x5e, 0x6f, 0xdd, 0x27, 0x40, 0xd0, 0xdd, 0x8b, 0xf2, 0xd3, 0xf6,
  0xaa, 0x71, 0xbf, 0xf4, 0x7b, 0xe1, 0x7d, 0xf8, 0x8d, 0xb0, 0xc9, 0xfc,
  0x4f, 0x06, 0xf8, 0x89, 0x23, 0x98, 0x91, 0x93, 0xc5, 0x26, 0x05, 0x4b,

  0xb6, 0x5f, 0x0b, 0xed, 0x86, 0x73, 0x21, 0xee, 0x22, 0x2d, 0x3a, 0x0d,
  0x31, 0xad, 0x05, 0x1b, 0x64, 0xba, 0x30, 0x4a, 0x50, 0xc4, 0x11, 0xa3,
  0xbd, 0x59, 0x09, 0x06, 0x6f, 0xd0, 0x15, 0xd9, 0xf5, 0x9a, 0x34, 0xf3,
  0xc5, 0x9a, 0xbe, 0xcc, 0x08, 0x72, 0x16, 0xc1, 0x4c, 0x21, 0x0d, 0xa2,
  0xa8, 0x7f, 0x16, 0x27, 0x88, 0xee, 0xa8, 0x07, 0x80, 0xa8, 0x98, 0xbe,
  0x16, 0x1b, 0xb0, 0x0b, 0xa2, 0x37, 0xea, 0x99, 0x1d, 0x79, 0x4b, 0x78,
  0x98, 0x4c, 0x00, 0x56, 0x3d, 0xc7, 0x14, 0x15, 0x79, 0xe9, 0x74, 0x04,
  0x21, 0x50, 0xba, 0xfe, 0xc4, 0x50, 0xdd, 0x6c, 0xca, 0x44, 0x6b, 0x66,
  0xaa, 0x9f, 0x28, 0x82, 0x00, 0x0a, 0x2f, 0x7c, 0x14, 0x40, 0x72, 0x38,
  0x17, 0x41, 0x3c, 0x10, 0x1d, 0x50, 0xd1, 0x58, 0x10, 0x3c, 0x87, 0xd5,
  0x69, 0x29, 0x22, 0xab, 0xf5, 0xee, 0xb5, 0xa6, 0xa4, 0xca, 0x74, 0x24,
  0x83, 0x9f, 0x5f, 0xda, 0x51, 0x90, 0x1e, 0xbc, 0xb6, 0xdb, 0x8a, 0x9b,
  0x95, 0x2d, 0x18, 0xea, 0xdf, 0x54, 0xe7, 0x7a, 0xdc, 0x6e, 0xa8, 0x27,
  0x90, 0x8e, 0x3f, 0xeb, 0x42, 0xa5, 0x0f, 0xbb, 0x51, 0x3d, 0xd5, 0x36,
  0xff, 0x6f, 0xde, 0xa8, 0x34, 0x79, 0xd8, 0x9d, 0x4a, 0xbb, 0x97, 0x2a,
  0x64, 0x4b, 0xb7, 0xbd, 0x33, 0xfe, 0x05, 0x6f, 0x19, 0x5f, 0xb3, 0x9f,

  0x74, 0xcf, 0x94, 0x28, 0xfe, 0x5f, 0xbe, 0x65, 0x9f, 0x77, 0xb4, 0x40,
  0xe0, 0xa3, 0x3e, 0xb0, 0x6f, 0x25, 0x69, 0xc7, 0xa4, 0x6b, 0xed, 0x59,
  0x28, 0xc3, 0x78, 0xe3, 0x13, 0x86, 0xde, 0x8a, 0x85, 0x2e, 0x4b, 0x3d,
  0xd9, 0xc7, 0x96, 0xe7, 0x29, 0xec, 0xc0, 0xc6, 0x81, 0x43, 0xe7, 0xad,
  0x02, 0x44, 0x23, 0xc7, 0xdb, 0xb6, 0x3a, 0x4d, 0xa4, 0x89, 0x8a, 0x2c,
  0xeb, 0xd2, 0x88, 0xf6, 0x55, 0x9e, 0x70, 0xa7, 0x76, 0x43, 0x80, 0x5f,
  0x8d, 0xc7, 0xc3, 0x97, 0xe7, 0x27, 0xf7, 0xd8, 0x5d, 0xc0, 0x85, 0x71,
  0x93, 0x8c, 0xd9, 0xcb, 0xfd, 0x69, 0x58, 0xed, 0x4f, 0x1b, 0x45, 0xb7,
  0xbb, 0xad, 0x2f, 0xeb, 0x56, 0x92, 0xb1, 0x4e, 0xc9, 0x36, 0xdc, 0x20,
  0x65, 0x5b, 0x31, 0x97, 0x91, 0x47, 0x41, 0xbe, 0x1a, 0xe2, 0x32, 0xfc,
  0x44, 0x90, 0x93, 0x0d, 0x84, 0x1d, 0x80, 0xe3, 0x24, 0x07, 0xcf, 0x9e,
  0x1c, 0x98, 0x6b, 0x71, 0xc7, 0xc0, 0x8f, 0xf2, 0xfe, 0xa3, 0xd1, 0xd1,
  0xde, 0xa3, 0xd1, 0x23, 0xe2, 0x6a, 0x2e, 0x5a, 0x2a, 0xe3, 0x1b, 0x6e,
  0x17, 0xc9, 0x4a, 0xa2, 0x69, 0xbd, 0x3b, 0x7e, 0x95, 0x70, 0xe2, 0x2a,
  0x60, 0x00, 0x3b, 0x36, 0x57, 0xc2, 0xc9, 0x33, 0xc4, 0x48, 0x47, 0xea,
  0x26, 0x66, 0x62, 0x0d, 0x9c, 0x14, 0xc1, 0x76, 0x24, 0x6a, 0x4b, 0x00,
  0x98, 0xa2, 0xb0, 0x33, 0x21, 0x7e, 0xc7, 0x66, 0x85, 0xec, 0x8c, 0xf9,
  0x4d, 0x58, 0x81, 0xe6, 0xed, 0x89, 0xb7, 0x63, 0xf7, 0xa4, 0x97, 0x3f,
  0xea, 0x3f, 0x1f, 0x35, 0x5f, 0x7a, 0x0c, 0x20, 0xe7, 0xb9, 0x0f, 0xec,
  0x1c, 0xe1, 0x87, 0xd6, 0x28, 0xad, 0x93, 0x6a, 0xba, 0xb4, 0x26, 0xc9,
  0xfc, 0xef, 0xb3, 0x62, 0xf4, 0x53, 0xed, 0xa9, 0x88, 0x42, 0xdc, 0x36,
  0x9b, 0x78, 0xee, 0xc2, 0xa8, 0xc5, 0x5c, 0xea, 0x5b, 0x11, 0x9b, 0x48,
  0x5d, 0x0f, 0x19, 0x08, 0x80, 0xee, 0x32, 0x1b, 0x50, 0xde, 0x40, 0x76,
  0xf4, 0x4d, 0x83, 0x47, 0x0c, 0x72, 0xf7, 0xad, 0xbd, 0x2a, 0x4b, 0x17,
  0xf2, 0xa2, 0x98, 0x6e, 0x40, 0x0c, 0x0e, 0x7e, 0x39, 0x47, 0x7b, 0xb9,
  0x3a, 0x00, 0x68, 0x63, 0x84, 0x73, 0x0b, 0x8f, 0xc8, 0x4f, 0xdb, 0x34,
  0x2d, 0xaf, 0x91, 0x4b, 0x65, 0xc4, 0x49, 0xbe, 0x4a, 0x17, 0xc9, 0x03,
  0x6a, 0x0b, 0xfa, 0x0f, 0xff, 0x5e, 0x7e, 0xe7, 0xd8, 0x45, 0xc8, 0xe5,
  0x6c, 0x21, 0xbf, 0x26, 0x90, 0x76, 0xa5, 0xaa, 0x70, 0x90, 0x16, 0x9f,
  0xeb, 0x19, 0x90, 0x92, 0xdd, 0x85, 0x9d, 0x39, 0x14, 0xa8, 0x6e, 0x02,
  0x8d, 0xb1, 0x24, 0x15, 0x11, 0x91, 0x1c, 0x72, 0x2e, 0x96, 0xa6, 0x83,
  0x4a, 0xd5, 0xeb, 0xee, 0x48, 0xcd, 0xa8, 0x4d, 0xcc, 0xdd, 0xb2, 0xc4,


  0x7b, 0x59, 0xef, 0x2f, 0xc1, 0x0c, 0x49, 0x85, 0x63, 0x3f, 0xc3, 0x4f,
  0xc5, 0x40, 0xf5, 0x85, 0x45, 0xb2, 0x83, 0x44, 0x10, 0x5b, 0xc5, 0x48,
  0x3f, 0xd2, 0xd4, 0x82, 0xd0, 0x59, 0x64, 0xa3, 0xc6, 0xbb, 0xa3, 0x87,
  0x80, 0x45, 0x0f, 0x04, 0x17, 0xda, 0x42, 0x41, 0x07, 0x7c, 0xf6, 0xff,
  0x09, 0x35, 0xf0, 0x71, 0x62, 0xcf, 0xea, 0x21, 0xda, 0x20, 0x23, 0xab,
  0x73, 0xbf, 0xf1, 0x00, 0xfa, 0xce, 0x99, 0x5c, 0xff, 0xbf, 0x36, 0xf8,
  0x7f, 0x92, 0x36, 0xf8, 0x93, 0x6f, 0x69, 0xeb, 0x92, 0x0e, 0x25, 0xb3,
  0xd9, 0xde, 0x4b, 0x77, 0x13, 0xe3, 0x05, 0x07, 0x8b, 0xbb, 0x07, 0x5e,
  0xd0, 0xee, 0x0d, 0x4d, 0x42, 0x52, 0xf8, 0x7f, 0xe3, 0x8a, 0x3e, 0xe8,
  0x66, 0xfe, 0xff, 0xbe, 0x8f, 0xff, 0xdd, 0xee, 0x61, 0xbf, 0x36, 0xb8,
  0x63, 0x88, 0xec, 0x86, 0xb2, 0xf6, 0xb8, 0xd7, 0x19, 0xec, 0xec, 0x5d,
  0xa7, 0xf9, 0x50, 0x3d, 0x1e, 0xef, 0xdd, 0xc9, 0xf9, 0xb7, 0x4f, 0x18,
  0x81, 0x67, 0xdc, 0x4d, 0x66, 0xa9, 0x92, 0xd3, 0xd7, 0x2f, 0xcf, 0x7f,
  0xc2, 0x6d, 0xff, 0x0b, 0xbc, 0xd0, 0xab, 0x2c, 0x9b, 0x0d, 0x39, 0x6e,
  0xf8, 0x02, 0xff, 0x88, 0x04, 0xdc, 0x53, 0x8b, 0xb0, 0x01, 0xb2, 0xa5,
  0x70, 0x62, 0x98, 0xc6, 0x80, 0x97, 0x8d, 0x9a, 0x52, 0x08, 0xe6, 0xcd,
  0x0a, 0x2d, 0x01, 0x03, 0x1f, 0x4b, 0x59, 0xcc, 0x76, 0xb9, 0xd0, 0x0f,
  0x5f, 0x06, 0xa9, 0x48, 0xf6, 0x09, 0xdd, 0xef, 0x4b, 0x42, 0xc5, 0xb3,
  0xc0, 0xa1, 0xde, 0x33, 0x8a, 0x04, 0x1d, 0x4d, 0x86, 0xba, 0x73, 0x4b,

  0xe1, 0x90, 0x27, 0xa3, 0xd7, 0x1d, 0xed, 0x93, 0xff, 0x1d, 0x5c, 0x24,
  0x6b, 0x7e, 0x45, 0xb4, 0x8d, 0xee, 0xe7, 0xfb, 0xd2, 0x69, 0x36, 0x6e,
  0xa5, 0x7f, 0x12, 0xad, 0x1d, 0xa4, 0x08, 0x39, 0x87, 0x0e, 0x83, 0x2e,
  0xe5, 0xde, 0x37, 0x39, 0x81, 0x84, 0xe7, 0x6b, 0x3f, 0xd1, 0xde, 0xcd,
  0x93, 0xb9, 0xff, 0x42, 0x60, 0x51, 0xdb, 0x9a, 0xb4, 0xcc, 0x1a, 0xd4,
  0x49, 0x6b, 0x56, 0xae, 0x62, 0xe0, 0x40, 0xbd, 0xfb, 0xae, 0xb4, 0xe0,
  0x2f, 0x61, 0x36, 0xa5, 0xf7, 0xee, 0xe6, 0x14, 0xc0, 0xb2, 0x68, 0x2a,
  0x6a, 0x31, 0xa2, 0xd9, 0x03, 0x8a, 0x34, 0x6f, 0xf8, 0xa2, 0x5f, 0xfb,
  0x9f, 0xa2, 0x52, 0x20, 0xc1, 0xae, 0x85, 0xed, 0x36, 0xf9, 0x7e, 0x27,
  0x59, 0x33, 0x1d, 0xb9, 0xb3, 0x05, 0x84, 0xa1, 0xf9, 0xe5, 0xd4, 0x28,
  0xb9, 0xda, 0x93, 0x7a, 0x90, 0x70, 0x82, 0x07, 0x99, 0x3c, 0x3d, 0xbe,
  0x0a, 0xcd, 0x84, 0xf9, 0xf5, 0xdb, 0xb3, 0x6d, 0xee, 0x7f, 0x18, 0x42,
  0x48, 0xa8, 0x79, 0x62, 0xd9, 0x42, 0x6a, 0xd8, 0x19, 0x90, 0x17, 0xd0,
  0x24, 0x99, 0x02, 0xc1, 0xf3, 0x45, 0x7a, 0x23, 0x45, 0x30, 0x5d, 0x7e,
  0x3f, 0x3e, 0x3d, 0xe2, 0x8c, 0xdf, 0x8b, 0xd3, 0xb1, 0x8f, 0x9f, 0x5f,
  0x23, 0x18, 0x8f, 0x0a, 0xc8, 0x3f, 0x1f, 0xbf, 0x1c, 0x5f, 0x8c, 0x22,
  0x6b, 0x0c, 0x13, 0xa6, 0x5c, 0x41, 0x34, 0x01, 0x9b, 0x2d, 0xd2, 0x3b,
  0x42, 0xcf, 0x94, 0xba, 0x4a, 0x9a, 0x1b, 0x4f, 0x4d, 0xc7, 0x26, 0x33,
  0x97, 0x3b, 0xc8, 0x20, 0xe5, 0x2e, 0x4c, 0x49, 0x32, 0x7b, 0x37, 0xc9,
  0x17, 0xb4, 0x02, 0x33, 0x2d, 0x63, 0x0c, 0x2d, 0xa5, 0x68, 0x02, 0x55,
  0xfa, 0xe5, 0x82, 0x12, 0x09, 0xe8, 0x3b, 0x6d, 0x4f, 0x04, 0x25, 0x24,
  0x0b, 0x74, 0x41, 0x7f, 0x21, 0xb2, 0xd1, 0x3b, 0x4a, 0x6a, 0xff, 0x64,
  0xe7, 0xaa, 0x7b, 0xc5, 0x51, 0x67, 0xaf, 0x61, 0x1f, 0x75, 0xa8, 0x27,
  0x10, 0x97, 0x30, 0xdd, 0x3b, 0xad, 0x3f, 0x69, 0x64, 0x17, 0x6d, 0x45,
  0x29, 0x68, 0xbc, 0x31, 0xe7, 0xb4, 0x6b, 0x09, 0x99, 0x83, 0x46, 0x4d,
  0x3c, 0x55, 0x47, 0x05, 0xc5, 0x11, 0xe4, 0x00, 0x28, 0xb2, 0xc5, 0xee,
  0x86, 0x13, 0xd7, 0xc4, 0x11, 0xbf, 0xed, 0x29, 0x8d, 0x16, 0xef, 0xb5,
  0x96, 0x4c, 0xaf, 0x32, 0x23, 0x45, 0x46, 0x1e, 0xb2, 0xc3, 0x83, 0x37,
  0xe4, 0xb3, 0x00, 0xfe, 0x2f, 0xb2, 0x3d, 0x3f, 0x79, 0x43, 0x1e, 0x3d,

  0x0a, 0x37, 0xa4, 0xca, 0xfe, 0x3e, 0x8b, 0x61, 0xa1, 0xa3, 0x02, 0x05,

  0xe5, 0x2f, 0x5c, 0x36, 0xf2, 0x9e, 0x01, 0xdd, 0x69, 0xaa, 0x7b, 0xd4,
  0xd2, 0x48, 0xf3, 0xe8, 0x1d, 0x98, 0x1e, 0x19, 0xd8, 0x14, 0x80, 0x0c,
  0xdb, 0xb1, 0x2b, 0xea, 0xa6, 0xd7, 0x7f, 0x33, 0x8f, 0xc3, 0x81, 0x48,
  0x76, 0xb3, 0x7c, 0x64, 0x23, 0xcb, 0xa2, 0x54, 0x16, 0x34, 0xc6, 0xa1,
  0x1a, 0x53, 0x7b, 0x77, 0x86, 0xc3, 0x79, 0xb3, 0xb2, 0x0b, 0xdb, 0x48,
  0x1d, 0xfb, 0xc1, 0x66, 0xf4, 0x2c, 0xfd, 0xa2, 0xd2, 0x06, 0x41, 0x9b,
  0x57, 0x1f, 0x66, 0x5b, 0x52, 0xd7, 0x1d, 0xed, 0xe4, 0x0e, 0xe0, 0x32,
  0x69, 0xa3, 0xfe, 0xd0, 0x8d, 0x08, 0x99, 0x07, 0xb6, 0xa5, 0xd5, 0x59,
  0x5a, 0xd7, 0x2b, 0x2c, 0x5c, 0x83, 0xa3, 0xb2, 0x03, 0x98, 0xa9, 0x14,
  0x34, 0x04, 0xb7, 0xbd, 0xa0, 0xb2, 0xda, 0xeb, 0x6c, 0x81, 0x72, 0xc3,
  0xac, 0x98, 0x56, 0x77, 0x2b, 0x1f, 0xbc, 0x7f, 0x76, 0x8f, 0x06, 0x7f,
  0xcf, 0x09, 0xb4, 0x6a, 0x83, 0x0e, 0x0c, 0xaf, 0xdb, 0x0d, 0xf5, 0xaf,
  0x54, 0x19, 0x3c, 0x1b, 0x27, 0x50, 0xbc, 0x1b, 0xbf, 0x54, 0x80, 0x0c,
  0x19, 0x65, 0xdc, 0x8c, 0x9f, 0x29, 0x88, 0x85, 0xc9, 0x3c, 0x74, 0x20,
  0xd3, 0xd6, 0xda, 0x4a, 0x80, 0x07, 0x9f, 0xfc, 0xe1, 0x80, 0xf7, 0xeb,
  0xfa, 0x30, 0xe0, 0x09, 0xe3, 0xd3, 0x5d, 0x82, 0xa7, 0xae, 0x08, 0x2e,
  0xa6, 0xe5, 0x96, 0xa2, 0x0b, 0xab, 0x0d, 0xca, 0x0e, 0xd9, 0x1b, 0xe5,
  0xb7, 0x6b, 0x66, 0x25, 0x3b, 0x48, 0xa1, 0x42, 0x69, 0x38, 0xdf, 0x75,
  0x2e, 0xd1, 0x1d, 0x1b, 0xbe, 0xca, 0x79, 0x8d, 0xed, 0x76, 0xaa, 0xb6,
  0xea, 0x99, 0x9e, 0xbe, 0x3e, 0xec, 0x05, 0xa2, 0x1f, 0xc9, 0xef, 0x51,
  0xc2, 0x3e, 0xcb, 0x80, 0xe5, 0xae, 0x58, 0x9a, 0x54, 0xc1, 0xc5, 0xd4,
  0x86, 0xbc, 0x5e, 0xf2, 0x4e, 0x3f, 0x39, 0x78, 0xfa, 0x64, 0x37, 0x1a,
  0x64, 0x67, 0x62, 0xa2, 0xd2, 0xc6, 0xa6, 0x59, 0x51, 0x81, 0xae, 0x90,
  0x11, 0xfd, 0xf3, 0x70, 0xe4, 0xef, 0x51, 0xd8, 0xdd, 0xa4, 0x2b, 0x92,
  0x8a, 0x19, 0x11, 0x04, 0x6d, 0x83, 0x76, 0x7b, 0x20, 0x42, 0xb1, 0x7d,
  0x62, 0xf5, 0x8e, 0x83, 0x90, 0x43, 0x93, 0x30, 0x40, 0xa2, 0x87, 0x89,
  0x38, 0x3c, 0xd2, 0x09, 0x1c, 0xf1, 0xcc, 0xbc, 0xf6, 0x9c, 0x3c, 0x53,
  0xfc, 0x7d, 0xd4, 0xfe, 0x97, 0x1f, 0xcc, 0x74, 0x03, 0xfc, 0xbc, 0x53,

  0x3e, 0xfa, 0xb5, 0x4f, 0xf9, 0xe8, 0x9e, 0x53, 0x3e, 0x7a, 0xe8, 0x29,
  0x3f, 0x7d, 0xfc, 0xe4, 0xf3, 0x9f, 0x77, 0xca, 0xde, 0x26, 0xff, 0xaf,
  0x39, 0x65, 0x8f, 0xcc, 0x7e, 0xde, 0x29, 0x4b, 0x52, 0x48, 0xb7, 0x20,
  0x53, 0x92, 0x5f, 0xb8, 0x9c, 0x96, 0xb0, 0x34, 0x38, 0x23, 0x99, 0x1f,
  0x0e, 0x0b, 0xad, 0xa4, 0xfb, 0x24, 0x77, 0xbd, 0x33, 0x6a, 0x58, 0xc4,
  0xc8, 0x76, 0xc0, 0x1e, 0xd0, 0x6f, 0x57, 0x0b, 0x6a, 0x9e, 0xb6, 0x3d,


  0xdc, 0xd6, 0xd0, 0xb5, 0x96, 0x4f, 0x2a, 0x2e, 0x16, 0x7f, 0xcd, 0x1c,

  0xf6, 0x6f, 0x88, 0xaa, 0x16, 0xe6, 0xcc, 0x78, 0x59, 0x4f, 0xed, 0x4d,
  0xbb, 0x5b, 0x18, 0x33, 0x81, 0x33, 0x90, 0xa2, 0xd9, 0x6f, 0xb5, 0xa6,
  0x0e, 0x32, 0xb4, 0x93, 0x7a, 0x69, 0x26, 0x46, 0x27, 0x34, 0x22, 0xa0,
  0xa0, 0x9c, 0x9e, 0xbb, 0x45, 0x26, 0x15, 0xc4, 0xb4, 0x66, 0xf8, 0xe4,
  0xc9, 0x94, 0xef, 0xba, 0x84, 0xa5, 0x57, 0x90, 0x05, 0xd4, 0xd3, 0x9c,
  0xa5, 0x91, 0x84, 0x0d, 0x8d, 0x82, 0xd6, 0x9a, 0x0e, 0x76, 0xce, 0x5c,
  0x14, 0x8e, 0x3b, 0x2c, 0x23, 0x60, 0x3f, 0x9b, 0x12, 0xfc, 0xba, 0x09,
  0x77, 0x3d, 0xbd, 0x89, 0x62, 0x09, 0x68, 0x41, 0x9b, 0x2a, 0x7b, 0x34,

  0x0c, 0xb3, 0x66, 0x5b, 0x27, 0xd9, 0xf2, 0x04, 0xd8, 0xc7, 0x54, 0x9b,
  0x10, 0x14, 0x22, 0xa3, 0x94, 0x5a, 0xd6, 0xa3, 0xbd, 0xa0, 0xbc, 0xd7,
  0xdb, 0xb9, 0xba, 0xf5, 0x3d, 0x35, 0x33, 0x94, 0x77, 0xde, 0x78, 0x6d,
  0x31, 0xc5, 0xfa, 0x7b, 0x4d, 0xd3, 0x9d, 0xad, 0x97, 0x2b, 0x85, 0x42,
  0xa4, 0xf2, 0xa6, 0x1c, 0x69, 0x5c, 0x8a, 0x86, 0xc0, 0x39, 0xd7, 0x11,
  0x37, 0x9a, 0xad, 0x76, 0xb2, 0x19, 0x6e, 0xec, 0xb3, 0xd2, 0xd3, 0x92,
  0x7a, 0x7e, 0x5e, 0x01, 0x12, 0xd7, 0x2c, 0x06, 0x5b, 0x90, 0x7a, 0x40,
  0xf7, 0xcc, 0x4c, 0x7b, 0x96, 0x4d, 0xd6, 0x97, 0x8a, 0x28, 0x60, 0xdb,
  0xdb, 0xb5, 0x69, 0x12, 0x05, 0x58, 0x84, 0x30, 0x94, 0x0d, 0x38, 0x8d,
  0x2e, 0x2d, 0xee, 0x42, 0x70, 0x95, 0x86, 0x5a, 0x3b, 0x4e, 0x37, 0x25,
  0x87, 0x05, 0x4b, 0x07, 0xb1, 0xe7, 0x03, 0x6f, 0xe9, 0xf8, 0x49, 0xeb,
  0x44, 0x23, 0xad, 0xb3, 0x7c, 0x52, 0x69, 0xa6, 0xab, 0xe1, 0x3c, 0x25,
  0x68, 0xd2, 0xa0, 0xb0, 0x5c, 0x12, 0x42, 0xe5, 0x0e, 0x5c, 0xbc, 0x3a,



  0x4f, 0xde, 0xa4, 0xd2, 0x6e, 0x28, 0xd9, 0x31, 0x1c, 0xf8, 0xe9, 0xa3,
  0x83, 0xa3, 0xdd, 0x8d, 0x7a, 0x78, 0x1b, 0x6e, 0x0b, 0xdf, 0x2a, 0xca,
  0x58, 0xc2, 0xfa, 0xc5, 0xda, 0x18, 0xcd, 0x02, 0xe3, 0x63, 0x3e, 0xf4,
  0xf1, 0xdd, 0xd9, 0xeb, 0xe3, 0xd3, 0x97, 0x7f, 0xb1, 0x80, 0x11, 0xb4,

  0x07, 0x5a, 0x79, 0xfc, 0xd1, 0x58, 0xaf, 0x77, 0x1f, 0xeb, 0xcc, 0x4c,
  0xb9, 0xd9, 0x39, 0xda, 0x05, 0xb0, 0x43, 0xd0, 0x14, 0xf2, 0x32, 0x6b,
  0xa1, 0x6d, 0x48, 0xf5, 0xc0, 0x06, 0xc0, 0xa8, 0xb1, 0xed, 0x29, 0xba,
  0x3f, 0x32, 0xec, 0x59, 0xd2, 0x2e, 0xb9, 0x71, 0x82, 0x23, 0x52, 0xaf,
  0x73, 0x4a, 0x2a, 0x98, 0x72, 0x02, 0x9d, 0x10, 0xb4, 0x1e, 0x5a, 0x2d,
  0xf2, 0x69, 0x4e, 0xd6, 0x8a, 0xdc, 0x6a, 0xaa, 0x4a, 0x98, 0xcf, 0xdb,
  0xb0, 0x94, 0x28, 0xde, 0x45, 0xb9, 0xc2, 0x46, 0x67, 0x5a, 0x9b, 0xf7,
  0x37, 0x10, 0x16, 0xd9, 0xa2, 0xc8, 0x9a, 0xa1, 0x4c, 0xeb, 0x85, 0xf9,
  0xf3, 0x8b, 0xeb, 0x74, 0x11, 0x94, 0x84, 0x53, 0x4f, 0x45, 0xa5, 0x4d,

  0x9b, 0x3c, 0x49, 0x6f, 0x7a, 0x2d, 0x57, 0xc6, 0xb6, 0xf3, 0x88, 0x3e,
  0x69, 0xae, 0x4a, 0xd0, 0x61, 0xe4, 0xe2, 0xe2, 0x2f, 0xe7, 0xc7, 0x5f,

  0xbc, 0x20, 0x36, 0xf6, 0x27, 0xaa, 0x3d, 0xa9, 0x5b, 0x5c, 0x2d, 0xa1,
  0x1e, 0xee, 0xc1, 0x1a, 0xbe, 0x7f, 0x7d, 0x32, 0x3e, 0x3f, 0x3d, 0x7b,
  0xf5, 0xc5, 0x8b, 0xef, 0xc9, 0xa6, 0x34, 0xc2, 0xe3, 0xce, 0x7b, 0xd7,
  0xfe, 0xcc, 0x36, 0x51, 0x08, 0x01, 0x45, 0x8e, 0xbf, 0xfb, 0x78, 0xfc,
  0xee, 0xdb, 0x2f, 0x5e, 0x5c, 0xa7, 0xd5, 0x80, 0xd6, 0xc7, 0x6f, 0xf7,
  0xb4, 0x2c, 0x6d, 0x91, 0x1a, 0x29, 0xe7, 0x93, 0xc5, 0xa7, 0x3a, 0xff,
  0x47, 0x96, 0x98, 0xd7, 0x17, 0xeb, 0x10, 0xc6, 0xfc, 0x42, 0xda, 0x60,
  0x19, 0xe9, 0x4d, 0xe6, 0xd0, 0x9f, 0x4f, 0xbf, 0x21, 0xa8, 0x5c, 0xeb,
  0x28, 0x5d, 0x72, 0xdf, 0xa5, 0xe4, 0x4f, 0x8f, 0x0f, 0x0e, 0x77, 0x5d,
  0xb7, 0x4f, 0x40, 0x6d, 0x9b, 0x19, 0x7f, 0x0a, 0xaa, 0xa6, 0xfe, 0xa1,
  0x90, 0x81, 0xb6, 0x9c, 0xa1, 0x71, 0x16, 0x15, 0x57, 0x1f, 0x88, 0xd7,
  0x09, 0xc9, 0xf9, 0x0c, 0xe2, 0x53, 0x12, 0x43, 0xa0, 0xac, 0xf5, 0xc0,


  0xe3, 0x76, 0xf1, 0xc6, 0x03, 0xb9, 0xf9, 0xb3, 0x23, 0x3c, 0x33, 0x1d,
  0xf1, 0xda, 0x6d, 0x94, 0x8f, 0xbf, 0x62, 0x2c, 0xa7, 0x6b, 0x52, 0x62,

  0xb3, 0x8d, 0x40, 0x13, 0xfa, 0x89, 0xef, 0xb3, 0x17, 0xf3, 0x46, 0x05,
  0x58, 0xc9, 0xb0, 0x8c, 0x58, 0xa5, 0x12, 0x9e, 0x62, 0x0a, 0x6c, 0x34,
  0x88, 0xf3, 0x25, 0x15, 0x1e, 0x53, 0x99, 0x0e, 0x3b, 0x77, 0x3c, 0xd7,
  0xcd, 0x22, 0xbb, 0x4c, 0xa7, 0x77, 0x89, 0x05, 0x98, 0x96, 0x7c, 0xfb,
  0x59, 0xf7, 0x76, 0xb2, 0x8f, 0x6f, 0x4a, 0xb6, 0x9c, 0x91, 0xc0, 0x84,
  0xfb, 0x41, 0x5c, 0x99, 0xb1, 0x54, 0xa8, 0x50, 0x53, 0xfd, 0x3e, 0xad,
  0xd9, 0x8d, 0x58, 0x5e, 0xd2, 0xa6, 0x76, 0xa5, 0x73, 0x7b, 0x8b, 0x3b,

  0xd4, 0x47, 0x64, 0x83, 0x5e, 0xc4, 0x1b, 0xf7, 0xf4, 0x51, 0xdb, 0x63,
  0xfe, 0x0f, 0x5c, 0x72, 0x42, 0xe1, 0x82, 0x53, 0xf6, 0x05, 0xfd, 0xb5,
  0x17, 0x87, 0x9f, 0xbd, 0x16, 0xdc, 0x6d, 0xda, 0x21, 0x57, 0xda, 0xd2,
  0x02, 0x69, 0x6c, 0x43, 0xa5, 0xf2, 0x8d, 0xba, 0x80, 0x7b, 0x31, 0xee,
  0xb4, 0xd2, 0x95, 0x3c, 0xc1, 0xe6, 0x71, 0xdb, 0xeb, 0xaa, 0x67, 0x48,
  0x5b, 0x9c, 0x19, 0x86, 0x68, 0x50, 0x18, 0x48, 0xa9, 0x08, 0x2f, 0x68,


  0x20, 0xe2, 0x88, 0xa4, 0x92, 0x98, 0x8d, 0xfa, 0x93, 0x06, 0x7d, 0x52,
  0x1f, 0x06, 0x08, 0x0f, 0x31, 0x94, 0x0c, 0x29, 0xd1, 0x55, 0x34, 0xbb,
  0x5d, 0xfd, 0x06, 0x9c, 0xa0, 0x41, 0x01, 0x35, 0x0b, 0x2b, 0x6d, 0x26,
  0x59, 0xab, 0x56, 0x4a, 0x35, 0x90, 0x30, 0xd2, 0x1d, 0xf0, 0x6c, 0xac,
  0x4d, 0xab, 0x56, 0xec, 0x29, 0x1c, 0x38, 0xaf, 0x4a, 0x92, 0x11, 0x30,
  0x9f, 0x9d, 0x25, 0x2d, 0x63, 0x57, 0xca, 0x4a, 0xb8, 0x17, 0x44, 0xd2,
  0xd7, 0xb0, 0xbd, 0x23, 0xa6, 0xcc, 0xa8, 0x34, 0x06, 0x89, 0x28, 0x23,

  0xa1, 0x20, 0x93, 0x18, 0x96, 0xa1, 0xb3, 0x1d, 0x91, 0xea, 0xe3, 0x86,
  0x93, 0xf8, 0xbb, 0x22, 0x8a, 0x40, 0xc5, 0x35, 0x71, 0xbe, 0x35, 0x82,
  0xdf, 0x8d, 0x6e, 0x67, 0xb8, 0x6b, 0x21, 0x04, 0xf2, 0xc6, 0x2a, 0x6d,
  0x11, 0xc8, 0x9d, 0xc4, 0x22, 0x9f, 0x5b, 0xe8, 0x36, 0xf6, 0x7d, 0x4a,

  0xbc, 0x25, 0x13, 0x92, 0xa0, 0xaf, 0xed, 0x71, 0xed, 0xa7, 0xf2, 0xa0,
  0x3c, 0x2c, 0x3d, 0x0f, 0xc6, 0x2a, 0xb2, 0x1b, 0x7f, 0x2c, 0x67, 0x76,
  0xd8, 0xf1, 0x7e, 0x4d, 0x6f, 0xb7, 0xb1, 0x99, 0xa8, 0x5e, 0x2d, 0x79,
  0xf1, 0xed, 0xf1, 0xfb, 0xf1, 0xc9, 0xd9, 0xbb, 0x3f, 0x45, 0xcd, 0x61,

  0xf9, 0xa5, 0x6d, 0xf4, 0xa6, 0x95, 0xae, 0xae, 0x1b, 0x17, 0x79, 0xc1,

  0xd4, 0xd7, 0xc2, 0xa0, 0x47, 0x79, 0x41, 0x8f, 0x04, 0x5d, 0xbe, 0xa6,
  0xd9, 0xaa, 0xe1, 0x72, 0x3b, 0x35, 0xa5, 0x5d, 0x47, 0x51, 0x4a, 0x1c,
  0x64, 0x23, 0x6e, 0x7f, 0xa0, 0x7f, 0x3b, 0xb0, 0x7f, 0x3b, 0x0c, 0xa9,
  0x9d, 0x7f, 0x71, 0x14, 0x6c, 0x50, 0x3c, 0x61, 0xc7, 0x8b, 0x97, 0xaf,
  0x57, 0x5c, 0x23, 0x49, 0x58, 0x26, 0x8c, 0x7c, 0xe4, 0x2f, 0x20, 0xe8,
  0xdb, 0x40, 0x0d, 0x7f, 0xfd, 0x17, 0xcd, 0xc3, 0xd7, 0x07, 0x5e, 0x05,


  0x8b, 0x7d, 0xee, 0x20, 0xf6, 0xdc, 0x41, 0xf8, 0xdc, 0x61, 0xec, 0xb9,
  0xc3, 0xf0, 0xb9, 0xa3, 0xd8, 0x73, 0xde, 0x7a, 0x3d, 0xc7, 0x9f, 0x6c,


  0xdc, 0x26, 0xcb, 0xb8, 0xf5, 0xaf, 0xa3, 0x91, 0x3b, 0xfe, 0xcf, 0xac,
  0xb7, 0xa2, 0xdb, 0xaa, 0xf6, 0x27, 0x19, 0xf6, 0xca, 0xa7, 0x75, 0x38,
  0xa3, 0x25, 0x76, 0x5c, 0xcc, 0xe6, 0x7b, 0x07, 0x47, 0xc3, 0x69, 0xbe,
  0xba, 0x22, 0xb9, 0xf3, 0x42, 0x3b, 0xbb, 0xd1, 0xe6, 0xd3, 0x62, 0xe5,
  0x17, 0x6b, 0xb2, 0xc8, 0x43, 0x3d, 0xe4, 0x74, 0xec, 0xc3, 0x15, 0x09,
  0x42, 0x27, 0xde, 0x48, 0xf8, 0x15, 0x07, 0x56, 0xd4, 0xf5, 0x2f, 0x87,
  0x30, 0x61, 0x79, 0x93, 0x58, 0xef, 0x0d, 0x39, 0x7a, 0x64, 0x0a, 0x4c,
  0xbc, 0x3a, 0x2f, 0x9d, 0xa8, 0x0c, 0xcf, 0x1d, 0x13, 0x39, 0xf4, 0xde,


  0x75, 0xed, 0xa2, 0xc5, 0x85, 0x3c, 0x2f, 0x10, 0x77, 0xd4, 0x99, 0xad,
  0xe8, 0xac, 0x8d, 0x87, 0x72, 0xf0, 0x76, 0x28, 0x9e, 0x09, 0x45, 0xe5,
  0x87, 0xf7, 0xa7, 0x81, 0x6a, 0x99, 0x90, 0x5f, 0xa6, 0x7e, 0xbe, 0xb7,
  0x87, 0x0e, 0xe3, 0x57, 0xe9, 0xed, 0xed, 0xa8, 0xce, 0xf6, 0x0c, 0x3f,
  0xa9, 0xf7, 0xe0, 0xf0, 0x95, 0x6f, 0x5f, 0x35, 0xcb, 0xc5, 0x66, 0x47,
  0x6d, 0xce, 0x7e, 0x2d, 0x69, 0x08, 0xcf, 0xbc, 0x03, 0xc8, 0x0b, 0xad,
  0x26, 0xbf, 0xf6, 0x88, 0xc3, 0x52, 0x2f, 0xe9, 0xa4, 0x8a, 0x3e, 0xce,
  0x07, 0x24, 0xf9, 0x20, 0x31, 0x11, 0xce, 0x44, 0x1c, 0x02, 0x70, 0xc8,
  0x9c, 0xf9, 0xe0, 0xb0, 0x73, 0xe8, 0x05, 0x2a, 0xa7, 0xcd, 0x82, 0x70,
  0x86, 0x45, 0xc9, 0xa9, 0x80, 0x88, 0x0f, 0x67, 0x41, 0x6c, 0xd7, 0x6a,
  0x3f, 0xf0, 0x81, 0x58, 0x21, 0x2f, 0x39, 0xaa, 0x66, 0xfc, 0xca, 0x4c,
  0x93, 0x52, 0xf2, 0x48, 0x99, 0x37, 0x2a, 0x87, 0xf9, 0xef, 0x9f, 0xc2,
  0xa2, 0x73, 0xac, 0xa0, 0x9b, 0xb8, 0x47, 0xda, 0x3f, 0x95, 0x7c, 0xf1,
  0xd6, 0xf3, 0xd7, 0x5a, 0x0d, 0x32, 0x80, 0xba, 0x14, 0x87, 0x06, 0xc0,
  0xb1, 0x6d, 0x8d, 0xdf, 0x9f, 0x6f, 0x0d, 0x38, 0x5f, 0x93, 0xbe, 0x30,
  0x34, 0xff, 0x4e, 0x60, 0x65, 0x52, 0x7b, 0x9d, 0xc7, 0x8f, 0x76, 0x05,
  0x27, 0x17, 0x73, 0xe4, 0xd2, 0xc9, 0x30, 0x7c, 0x84, 0x5f, 0xba, 0xe4,



  0xc2, 0xaa, 0xd5, 0x08, 0xcb, 0xd8, 0x7f, 0xed, 0x05, 0x72, 0xd6, 0xcf,
  0x80, 0xb3, 0x38, 0x36, 0xa8, 0x75, 0x3e, 0xec, 0x23, 0xcf, 0x73, 0xd4,
  0x89, 0xd0, 0x94, 0xd5, 0x27, 0xe9, 0x07, 0x22, 0x51, 0x0e, 0x30, 0x97,
  0xa0, 0xfb, 0x72, 0x8b, 0xd9, 0xb4, 0xbd, 0xa3, 0xde, 0x9a, 0x65, 0xc3,

  0x1c, 0x06, 0x5e, 0x4f, 0x8b, 0x61, 0xa5, 0x55, 0xb3, 0x61, 0x5f, 0x15,
  0x6b, 0x3a, 0x14, 0x0c, 0xa4, 0xe3, 0xc8, 0x30, 0xf7, 0x60, 0xd5, 0x3c,
  0xea, 0x9c, 0xbe, 0x6e, 0x5e, 0xe4, 0xd8, 0x6d, 0x07, 0x7b, 0x3e, 0x24,
  0xd8, 0x34, 0x8a, 0xc7, 0x19, 0x21, 0x09, 0xc5, 0x06, 0xec, 0xab, 0x26,
  0x53, 0x6c, 0x19, 0xef, 0x44, 0x46, 0x1a, 0x7c, 0x13, 0x36, 0xed, 0xce,
  0xda, 0xeb, 0x87, 0x71, 0xff, 0x82, 0xfc, 0xf5, 0xe0, 0xed, 0x68, 0xc2,
  0x35, 0x2d, 0x49, 0x13, 0x52, 0x1f, 0xb4, 0x20, 0x5d, 0xd1, 0x86, 0x25,
  0xc9, 0x51, 0x76, 0x16, 0xe5, 0x56, 0xe5, 0x2d, 0xcb, 0x51, 0x29, 0x2d,
  0x2d, 0x20, 0xbd, 0x07, 0x2d, 0xb4, 0xb5, 0x52, 0x12, 0x91, 0x51, 0xc1,
  0x22, 0x0e, 0x7f, 0xdf, 0xdf, 0xef, 0xa9, 0x04, 0x50, 0x01, 0x94, 0xd1,
  0xb5, 0xd3, 0x8d, 0x7b, 0xab, 0x2a, 0xc4, 0xf5, 0x4f, 0xa3, 0x68, 0x1f,
  0x93, 0x08, 0xaa, 0x11, 0xb9, 0x4c, 0xf5, 0x2b, 0xd2, 0x3d, 0x53, 0x5a,
  0x62, 0x77, 0x82, 0x9b, 0xaa, 0x38, 0x4a, 0x3d, 0xf5, 0x22, 0x4c, 0xb9,

  0xf8, 0x48, 0x77, 0xeb, 0xa3, 0xb0, 0xce, 0x7d, 0xae, 0xe8, 0x06, 0x6c,
  0x66, 0x4e, 0xcd, 0x17, 0x52, 0xc0, 0xa0, 0x52, 0xa4, 0xa0, 0x46, 0xdb,
  0x18, 0x57, 0xd9, 0x2d, 0x42, 0xa8, 0xcb, 0xe5, 0x69, 0x1c, 0x73, 0x0d,
  0xa9, 0xe5, 0xb5, 0x7a, 0x63, 0x55, 0x5b, 0xec, 0x80, 0xaa, 0xa1, 0x6d,
  0x88, 0x55, 0x0a, 0x65, 0xdb, 0x02, 0xdd, 0xff, 0xbe, 0x6a, 0xe8, 0x50,
  0x55, 0x20, 0x0d, 0xe6, 0xe7, 0x1d, 0xd6, 0xc1, 0xff, 0x59, 0x87, 0x75,

  0xf0, 0x7f, 0xc7, 0x61, 0x1d, 0xfe, 0xbc, 0xc3, 0x3a, 0xfc, 0x3f, 0xeb,
  0xb0, 0x0e, 0xff, 0xef, 0x38, 0xac, 0xa3, 0x9f, 0x77, 0x58, 0x47, 0xbf,
  0xfc, 0x61, 0xbd, 0xa3, 0xdf, 0x83, 0xe7, 0xab, 0xd6, 0x97, 0x8b, 0x9e,
  0xe0, 0xb4, 0xa2, 0xc9, 0x1d, 0x9a, 0xcf, 0x4f, 0x68, 0x43, 0xc4, 0x60,
  0x10, 0x65, 0xb2, 0xee, 0x5a, 0x4d, 0x2f, 0x1d, 0x36, 0xbb, 0x6d, 0x92,
  0x22, 0x31, 0x28, 0xc1, 0xaa, 0x27, 0x95, 0xe7, 0xcf, 0x25, 0xb9, 0x50,

  0x8c, 0x66, 0x30, 0x48, 0xde, 0x8d, 0xc7, 0x9c, 0x76, 0x34, 0x46, 0xe8,
  0xb4, 0x7b, 0x58, 0xe4, 0x8c, 0x84, 0x8d, 0xb3, 0x43, 0x6a, 0xe3, 0x99,
  0x99, 0xa1, 0xe3, 0x2e, 0xfc, 0xde, 0x32, 0x9d, 0xd2, 0x8f, 0xf7, 0x47,
  0x07, 0x6e, 0x77, 0x76, 0x7f, 0x02, 0x10, 0x9c, 0x8b, 0x6b, 0xc6, 0x83,
  0xd1, 0x11, 0xc8, 0x76, 0x20, 0xa0, 0xd7, 0x4d, 0xe7, 0x70, 0x6e, 0xdb,
  0x51, 0xe9, 0x5e, 0x70, 0xf0, 0xd8, 0xa9, 0x70, 0xfa, 0x85, 0xa2, 0x6b,
  0xd2, 0x2f, 0x9c, 0x85, 0x0e, 0x03, 0x38, 0xb0, 0xbe, 0xaf, 0xf2, 0x4b,
  0xc2, 0xc2, 0xfb, 0x19, 0x91, 0x65, 0x2f, 0x90, 0xfb, 0xbf, 0x26, 0xb2,
  0xfc, 0x20, 0xfb, 0xd8, 0xbf, 0x32, 0xd5, 0x50, 0x3b, 0xab, 0xc5, 0xf1,
  0xdb, 0x9d, 0x67, 0x91, 0x4a, 0x81, 0x80, 0xec, 0x38, 0x63, 0xd2, 0xa1,
  0x4c, 0x9b, 0x63, 0x79, 0xd7, 0x05, 0xf7, 0xd8, 0x8c, 0x09, 0xf1, 0x97,
  0xa4, 0xd2, 0xce, 0xc2, 0x0d, 0x29, 0xb0, 0x05, 0xaf, 0xb2, 0x66, 0x7a,
  0x5b, 0x17, 0xfa, 0x11, 0xc9, 0x0d, 0x25, 0x17, 0x39, 0x83, 0x9f, 0x05,
  0xe9, 0x07, 0xd3, 0x8c, 0xa1, 0xb1, 0xf2, 0xfb, 0x34, 0xa5, 0x27, 0xed,


  0xf5, 0xa6, 0xd3, 0x6c, 0x98, 0xd6, 0xd3, 0x3c, 0x8f, 0xb7, 0x76, 0xd5,
  0x38, 0x70, 0x9a, 0xcc, 0xd7, 0xf0, 0xe0, 0x9b, 0xe7, 0x13, 0x8a, 0xb9,
  0x69, 0xa3, 0x76, 0xe2, 0x88, 0x40, 0x8b, 0xa2, 0x09, 0x97, 0xeb, 0xe6,
  0xb2, 0x54, 0x67, 0xfe, 0x20, 0xe2, 0x18, 0xa4, 0xa8, 0x1c, 0x23, 0x93,
  0xd7, 0xd3, 0x2a, 0x5f, 0x01, 0x88, 0xd6, 0x6b, 0x0a, 0x37, 0xb0, 0x1d,
  0xd3, 0xe1, 0x69, 0xd3, 0xd0, 0x29, 0xf7, 0x10, 0x27, 0x0e, 0xda, 0xc5,
  0xeb, 0x1f, 0x6e, 0x91, 0x5b, 0xd3, 0x76, 0xd3, 0x32, 0x6f, 0x13, 0x7a,
  0xb8, 0x17, 0xb5, 0x4c, 0x14, 0xf3, 0xa8, 0x27, 0x0c, 0xaf, 0x61, 0x0c,
  0x43, 0x42, 0x77, 0x8a, 0x50, 0x8d, 0x86, 0x21, 0x1a, 0xa0, 0x9c, 0x70,


  0x13, 0x02, 0x72, 0xb0, 0x6b, 0x37, 0x88, 0xab, 0xec, 0x96, 0x0b, 0x49,
  0x43, 0x93, 0x8b, 0xb9, 0xd9, 0x95, 0x16, 0x59, 0xbe, 0x1c, 0xbf, 0x3a,
  0x39, 0x69, 0x15, 0x9d, 0xd2, 0xd6, 0x21, 0x92, 0xca, 0x68, 0x26, 0x49,
  0x4d, 0x20, 0xbf, 0x80, 0x13, 0x89, 0x45, 0xe1, 0xb9, 0x59, 0xa4, 0xb9,
  0x7e, 0x88, 0xbc, 0x18, 0x46, 0x90, 0x6b, 0x2b, 0xcf, 0x94, 0x53, 0xbc,
  0xd6, 0x85, 0x99, 0x66, 0x4e, 0xc8, 0x6b, 0x57, 0xeb, 0x65, 0x5a, 0xfc,
  0xfa, 0xc8, 0x71, 0xbe, 0xa1, 0xe7, 0x4a, 0x39, 0x64, 0xb7, 0xf8, 0x5e,
  0xf9, 0xb1, 0xde, 0x90, 0xd6, 0x22, 0x8d, 0x39, 0xce, 0x2b, 0x69, 0xdb,
  0x08, 0x78, 0x39, 0xf8, 0xdb, 0xb9, 0xb9, 0x86, 0x59, 0x29, 0x70, 0x2e,
  0x79, 0x70, 0xb3, 0x5c, 0x8d, 0x20, 0x03, 0xb6, 0xde, 0x06, 0x97, 0xba,
  0x4e, 0x41, 0x0e, 0xa3, 0x6d, 0xac, 0x96, 0x3b, 0xe8, 0x8a, 0x4a, 0x7c,
  0xe1, 0xb7, 0xbc, 0x01, 0xad, 0x2b, 0x70, 0xff, 0x1d, 0xe0, 0x2b, 0xf0,
  0x4b, 0xdc, 0x00, 0x29, 0x24, 0xda, 0xfa, 0xfd, 0x56, 0x12, 0x6f, 0xdd,


  0xf2, 0x80, 0x71, 0x5a, 0x00, 0x2c, 0xbf, 0x2d, 0xa5, 0x45, 0x10, 0x61,
  0x3c, 0x26, 0xe6, 0x9f, 0xe9, 0xba, 0xc8, 0x6f, 0x51, 0xd1, 0x61, 0x54,
  0x89, 0x17, 0xd4, 0xb9, 0xa4, 0xa7, 0x25, 0xc7, 0x2b, 0x56, 0x6c, 0x12,
  0xad, 0x4f, 0xc1, 0x2a, 0x3e, 0x98, 0x97, 0x8d, 0xc2, 0xb8, 0xa4, 0xfc,
  0x1e, 0x1e, 0x63, 0xe0, 0x63, 0xa3, 0x83, 0xad, 0x47, 0xf2, 0x83, 0x8a,

  0xac, 0x21, 0xf7, 0xc7, 0xc6, 0xc8, 0x56, 0x3b, 0x5a, 0x78, 0x01, 0x44,
  0xb0, 0x15, 0x15, 0x0d, 0x6c, 0xe8, 0xb0, 0x8d, 0xcd, 0x70, 0x49, 0xfa,
  0xed, 0x00, 0x82, 0xd7, 0x86, 0x4b, 0x48, 0xc7, 0xb6, 0x7a, 0xe2, 0xbe,
  0x2c, 0xb1, 0x54, 0x26, 0xdb, 0x3f, 0xc8, 0x35, 0xdf, 0xca, 0xbb, 0x91,
  0x09, 0x34, 0x78, 0x72, 0xe1, 0x5b, 0xe9, 0x8e, 0x19, 0xca, 0xee, 0x4e,
  0x1f, 0xb0, 0x91, 0xd7, 0x92, 0xb8, 0xd5, 0xa5, 0x0c, 0x28, 0x85, 0xf9,
  0x82, 0xc8, 0x7f, 0x4f, 0xd3, 0x1b, 0x16, 0x61, 0xee, 0xbd, 0x6b, 0x7e,
  0x25, 0xbc, 0x8e, 0x2a, 0xbd, 0x10, 0xe4, 0xa4, 0x7f, 0x03, 0x49, 0x49,
  0x95, 0x88, 0xf6, 0x2a, 0xb8, 0x97, 0x5d, 0x57, 0x7d, 0xf1, 0xe2, 0xcf,
  0x57, 0xd4, 0x0d, 0x5d, 0xe7, 0x55, 0x31, 0x21, 0xb6, 0xfb, 0xdd, 0x6b,
  0x48, 0xdb, 0x6b, 0xe8, 0x13, 0xe4, 0x35, 0xf3, 0xf5, 0x58, 0xd7, 0x99,
  0xe8, 0x52, 0x8c, 0x3c, 0x4b, 0xa5, 0x76, 0xd4, 0x40, 0x84, 0xf2, 0xf4,
  0x6c, 0xf7, 0x65, 0x3e, 0x58, 0x6e, 0xdb, 0x2e, 0x35, 0xbd, 0x01, 0xb2,
  0x6e, 0xbe, 0x18, 0xf9, 0x55, 0x13, 0xe2, 0xa6, 0xd5, 0x62, 0xad, 0x1d,
  0xa3, 0xac, 0xb3, 0xe6, 0xc6, 0x97, 0x87, 0x9a, 0x7f, 0x28, 0x32, 0x7b,
  0x3f, 0x6c, 0x77, 0x1c, 0xde, 0xa9, 0x9d, 0xc1, 0x46, 0xac, 0x63, 0x27,
  0x55, 0x78, 0x53, 0x0a, 0x96, 0xed, 0xaa, 0xda, 0x69, 0xae, 0x78, 0x5e,

  0xf8, 0xf4, 0x9e, 0x46, 0x83, 0xa3, 0x22, 0x97, 0x5f, 0x0a, 0xaa, 0x7c,
  0xa6, 0xae, 0x4e, 0xef, 0x1b, 0x23, 0xc3, 0x65, 0xcc, 0x47, 0xf4, 0x2b,
  0x52, 0x2c, 0xb3, 0x1b, 0x00, 0xb8, 0xdd, 0x71, 0x3f, 0x0c, 0xaf, 0xfe,
  0xd8, 0x6f, 0x46, 0x43, 0x53, 0xed, 0x4c, 0x0d, 0x79, 0xd5, 0x48, 0x3c,
  0x08, 0x6f, 0x22, 0x40, 0x0a, 0xd4, 0xc4, 0x83, 0xb0, 0x44, 0x0b, 0x21,
  0xe9, 0x97, 0xce, 0xdc, 0x4c, 0x20, 0x64, 0x79, 0x38, 0xf8, 0x5c, 0x27,
  0x99, 0x40, 0x8b, 0x06, 0x9e, 0x4a, 0x74, 0x38, 0x8c, 0x36, 0xb3, 0xe2,
  0xee, 0xab, 0x5a, 0xa5, 0x47, 0x3c, 0x2d, 0xbc, 0xd0, 0xb6, 0x59, 0x20,
  0xf5, 0x1f, 0x2a, 0x35, 0x64, 0xd1, 0xdf, 0x8f, 0x65, 0x94, 0x1c, 0xd3,
  0xd3, 0xe1, 0x40, 0x7f, 0xc0, 0x08, 0x00, 0x89, 0x77, 0x8d, 0x40, 0xcd,
  0x42, 0x80, 0xa1, 0xd7, 0xa5, 0x2b, 0xa1, 0x3c, 0xc6, 0xcb, 0xa5, 0xac,
  0x3b, 0x94, 0xf8, 0x8f, 0xa4, 0xd3, 0x15, 0xa9, 0xed, 0xaa, 0x6b, 0x26,
  0x5b, 0x97, 0x8b, 0x72, 0x32, 0x31, 0x8b, 0xdf, 0x52, 0x2d, 0xc5, 0x7c,
  0x3b, 0xf0, 0x25, 0xfb, 0x33, 0x49, 0xab, 0x4b, 0x58, 0xd2, 0x03, 0x98,
  0x11, 0xec, 0xa8, 0xa7, 0x59, 0xb8, 0x4e, 0xba, 0xfa, 0x79, 0x85, 0x42,
  0x8f, 0xc8, 0x19, 0xce, 0x06, 0xb4, 0x04, 0x48, 0x6b, 0x6b, 0xf9, 0xfd,
  0x51, 0xd0, 0x48, 0x3f, 0xd5, 0xe9, 0x71, 0xb6, 0x61, 0x5f, 0xba, 0xac,
  0xeb, 0x3f, 0x03, 0xb6, 0x25, 0xad, 0x08, 0xf3, 0x3a, 0x8c, 0xaf, 0x60,
  0x0b, 0xda, 0x0b, 0xda, 0xfa, 0x4f, 0xfa, 0xe3, 0x60, 0x40, 0xff, 0x3d,
  0xfc, 0xe7, 0x16, 0x42, 0x30, 0xcf, 0xf7, 0xf6, 0x6e, 0x6e, 0x6e, 0x46,
  0x0a, 0x28, 0x68, 0x8e, 0xec, 0xb3, 0xb0, 0xf2, 0x8f, 0x70, 0xd8, 0x7a,
  0x3e, 0x70, 0x91, 0x6c, 0xe5, 0xcb, 0xcb, 0xbf, 0x1e, 0x0c, 0x0f, 0xf6,
  0xf7, 0xf7, 0x7f, 0x1c, 0xad, 0x68, 0x7f, 0xe7, 0x18, 0xd6, 0xfc, 0xd7,
  0x1f, 0x76, 0x8f, 0x67, 0xb2, 0x17, 0x85, 0x7c, 0xe5, 0xdf, 0xa9, 0x95,
  0x5d, 0x70, 0xd3, 0x0e, 0x26, 0xe5, 0xe7, 0x1e, 0x8b, 0xe1, 0x38, 0x72,
  0xba, 0xa9, 0x8e, 0x9e, 0x53, 0x07, 0x29, 0x84, 0xf0, 0xf8, 0xe8, 0xf0,
  0x30, 0x61, 0x85, 0x83, 0xcb, 0xd3, 0x38, 0x95, 0x81, 0x90, 0x09, 0xa4,
  0xc3, 0x38, 0xcb, 0x32, 0x82, 0x5e, 0x4c, 0x39, 0x58, 0x63, 0x28, 0xa3,
  0x27, 0xa5, 0x93, 0x0d, 0xe3, 0xdc, 0x08, 0xf2, 0x72, 0x76, 0xe7, 0x46,
  0x35, 0x24, 0x5e, 0x11, 0x63, 0xa5, 0x26, 0xa1, 0x77, 0x3e, 0xc4, 0x63,
  0x2a, 0xd9, 0xd6, 0x41, 0x39, 0xa1, 0xb4, 0xbe, 0x83, 0x94, 0x03, 0x4c,
  0x6e, 0x51, 0x4a, 0x9f, 0x6b, 0x44, 0xee, 0xe7, 0xeb, 0x4a, 0xba, 0x1c,
  0x21, 0xd1, 0xe1, 0x26, 0xbd, 0x6b, 0x09, 0x7b, 0xb3, 0xe3, 0x2f, 0xcc,
  0x7f, 0x02, 0xbf, 0xb6, 0x5c, 0x4d, 0x52, 0x2d, 0x6d, 0x9b, 0xe6, 0x79,
  0xd6, 0x4c, 0xaf, 0xba, 0xe9, 0x96, 0xe0, 0xe0, 0x66, 0xb6, 0x57, 0x66,
  0x41, 0x77, 0xb6, 0xa1, 0x7a, 0xac, 0x03, 0xa4, 0x57, 0x97, 0x6b, 0x86,
  0xa4, 0x86, 0x1f, 0x28, 0x4d, 0xe0, 0x86, 0xf0, 0xcc, 0x14, 0x7b, 0xd0,
  0x3d, 0x6d, 0xdf, 0x44, 0x7c, 0x2f, 0xaf, 0xb5, 0x6c, 0x78, 0x7a, 0x95,
  0x2d, 0x85, 0x63, 0xee, 0x68, 0xce, 0xe4, 0x96, 0xd0, 0xe0, 0x56, 0xc4,
  0x22, 0xdf, 0x9a, 0xeb, 0xaf, 0xcc, 0x4a, 0x76, 0xa5, 0xf0, 0xd6, 0x8a,
  0x39, 0xe9, 0x85, 0x74, 0xb9, 0x26, 0xc3, 0x71, 0x92, 0x8a, 0x3c, 0xd1,
  0x7a, 0xf0, 0x9e, 0xcc, 0x66, 0xc3, 0x16, 0xb3, 0x0a, 0x42, 0xac, 0x5e,


  0x4f, 0x86, 0xa2, 0xf9, 0x60, 0x46, 0x48, 0x2e, 0xa1, 0xdb, 0xfa, 0xfa,
  0xe4, 0xd5, 0x05, 0x97, 0xc0, 0x9a, 0xff, 0x52, 0xb5, 0x8c, 0xf9, 0x83,
  0x2a, 0x5f, 0xc3, 0x46, 0x55, 0xe7, 0x47, 0x9c, 0x42, 0x04, 0x62, 0xb5,
  0x11, 0xa5, 0xd4, 0xa5, 0xd9, 0xb5, 0x54, 0xbf, 0x81, 0xd7, 0xf6, 0x24,

  0x92, 0x3b, 0xdc, 0xd2, 0x12, 0x6d, 0xe5, 0xf4, 0xa3, 0xc7, 0xa3, 0x7d,
  0x5e, 0x22, 0xed, 0xa1, 0x64, 0xd0, 0x48, 0xa5, 0x16, 0xdc, 0x48, 0x1a,
  0x61, 0x4c, 0xe3, 0x39, 0x03, 0x76, 0x2a, 0x83, 0x84, 0xf1, 0xcf, 0x19,
  0x4a, 0x41, 0x7f, 0xeb, 0x65, 0x4b, 0xde, 0x53, 0x0e, 0xa3, 0xb2, 0x4b,
  0x72, 0x84, 0xef, 0xba, 0xd8, 0xd5, 0x40, 0x16, 0xd7, 0x2a, 0x1d, 0x30,
  0xe1, 0x58, 0xb9, 0x9c, 0xd0, 0x84, 0xe4, 0x8d, 0x0f, 0x5c, 0xe7, 0xa9,
  0x92, 0xa4, 0x80, 0xc8, 0x2c, 0xa9, 0x3e, 0x42, 0xa7, 0x56, 0xd7, 0xea,
  0x30, 0xa6, 0x9f, 0x04, 0x2d, 0xbd, 0x86, 0x7f, 0x16, 0xe4, 0x59, 0xd6,
  0x93, 0x63, 0xa5, 0x5f, 0x38, 0xcb, 0x5d, 0x4d, 0x73, 0x65, 0xd3, 0x55,
  0x55, 0xce, 0x11, 0x39, 0x0c, 0xf9, 0xe4, 0x9b, 0x6e, 0x57, 0xf6, 0x2c,
  0xb0, 0x71, 0x80, 0x6f, 0xe2, 0x55, 0xf7, 0xa5, 0x58, 0x1e, 0x8b, 0x08,
  0x36, 0xf4, 0x38, 0x32, 0xb4, 0xf5, 0x47, 0x0a, 0x09, 0x7d, 0xf1, 0xd2,
  0x46, 0x10, 0xe3, 0x50, 0x46, 0x50, 0xa7, 0x6a, 0xe6, 0x6f, 0x6d, 0x63,
  0x46, 0x78, 0x1a, 0xf1, 0xfd, 0xec, 0x96, 0x31, 0x3b, 0x71, 0x72, 0x37,
  0x79, 0x71, 0x74, 0x98, 0xd4, 0x77, 0x46, 0x83, 0x58, 0xfa, 0x9b, 0xd0,
  0x6d, 0x38, 0x1e, 0x0d, 0x85, 0xb5, 0x3a, 0xf5, 0x31, 0xeb, 0xfa, 0x40,
  0xaf, 0xbc, 0xc4, 0x2b, 0xd2, 0xdd, 0x4b, 0xf3, 0xf5, 0x1e, 0xd0, 0xc5,
  0xbe, 0x54, 0x26, 0x36, 0x59, 0xa4, 0xc5, 0x27, 0x9b, 0x55, 0xcd, 0x03,
  0x0d, 0xa8, 0x39, 0x2c, 0x17, 0x92, 0xba, 0x1f, 0xca, 0xf6, 0xb0, 0x60,
  0x0c, 0xba, 0xa8, 0x41, 0xb1, 0x5f, 0xa6, 0x15, 0x6a, 0x0c, 0xb1, 0x6d,
  0x92, 0xfe, 0xec, 0x1f, 0x8a, 0x2d, 0x0f, 0x06, 0x11, 0x79, 0x3d, 0xd5,
  0x43, 0x11, 0xc6, 0x31, 0x76, 0xc6, 0xfd, 0xd1, 0x1c, 0xf2, 0x9e, 0x8e,
  0x70, 0xbf, 0x5c, 0x6c, 0xdd, 0x02, 0x21, 0x1b, 0xae, 0x6d, 0xfe, 0xfb,
  0x5c, 0x03, 0x80, 0x7d, 0xfc, 0xbb, 0x11, 0xac, 0x32, 0xd7, 0xf1, 0xdc,
  0x86, 0x0c, 0xfd, 0x16, 0xb6, 0xac, 0xe2, 0xb9, 0x50, 0x65, 0x2c, 0xc2,
  0x3e, 0x4a, 0xce, 0x9c, 0x39, 0x59, 0x0c, 0x80, 0x89, 0xdb, 0x54, 0x53,
  0x31, 0x26, 0xf1, 0x77, 0x49, 0xdd, 0x4c, 0x17, 0xd1, 0x96, 0xec, 0xd0,
  0x72, 0xea, 0x1c, 0xd0, 0xdc, 0x56, 0x12, 0x78, 0x22, 0x8e, 0xbb, 0xa5,
  0x3a, 0x7e, 0x6c, 0xb6, 0x96, 0xda, 0x8a, 0x02, 0xba, 0x2a, 0xc8, 0xcc,
  0xe6, 0x45, 0x44, 0x1b, 0xec, 0xc4, 0xd7, 0x5b, 0x4b, 0x24, 0x7f, 0x61,
  0x64, 0xe2, 0x7a, 0x65, 0x43, 0x0f, 0x89, 0x80, 0x34, 0x10, 0xfa, 0x4b,
  0x59, 0x0c, 0x02, 0x7c, 0x27, 0xc4, 0xce, 0xc5, 0xe9, 0x44, 0x59, 0x81,
  0x4b, 0xe9, 0xe1, 0x9d, 0x59, 0x57, 0x33, 0xbf, 0xa9, 0xe4, 0xe9, 0x3e,
  0x7e, 0x4f, 0xab, 0x61, 0xee, 0x05, 0xa4, 0x87, 0x61, 0x68, 0x70, 0xc0,


  0xb5, 0x7c, 0xc1, 0x92, 0xce, 0x0a, 0xbd, 0x91, 0x02, 0x37, 0x95, 0x73,
  0x21, 0x75, 0xed, 0xef, 0xd5, 0x15, 0x35, 0x6d, 0xf2, 0xbc, 0x1f, 0x82,
  0xd9, 0x65, 0xf4, 0xcd, 0x40, 0x5f, 0x46, 0x0b, 0x02, 0xce, 0x44, 0x34,
  0x3b, 0x0c, 0x98, 0x68, 0xca, 0xe7, 0xa1, 0x84, 0x49, 0x97, 0x9e, 0x4c,
  0x1a, 0x45, 0x56, 0xb0, 0x5d, 0x5f, 0x2a, 0xf8, 0x5a, 0x32, 0x0d, 0xb1,
  0x13, 0x67, 0x0c, 0xad, 0x5b, 0xf3, 0x88, 0xb6, 0xc1, 0xf9, 0xa5, 0x48,
  0x91, 0x9a, 0xd2, 0x3c, 0x0d, 0x43, 0x63, 0x54, 0x6b, 0xda, 0x9c, 0xda,
  0xed, 0x7c, 0xa4, 0xa9, 0x14, 0xaf, 0x34, 0xd1, 0x36, 0x1a, 0x77, 0x3e,
  0xe4, 0xaf, 0xb9, 0x0d, 0xd7, 0x39, 0xef, 0x3d, 0xc3, 0x99, 0x4d, 0xaa,
  0x3c, 0x9b, 0x1b, 0xee, 0x85, 0x25, 0x71, 0x0a, 0x69, 0xe0, 0x35, 0xca,
  0x08, 0xf7, 0x9a, 0xb2, 0xd3, 0xcd, 0x39, 0x52, 0x01, 0x71, 0x0e, 0xc7,
  0x11, 0xf3, 0x44, 0x0b, 0x2e, 0xc7, 0x20, 0xf3, 0xd7, 0xda, 0xb8, 0x39,
  0xd5, 0x92, 0xa6, 0x68, 0x7e, 0x26, 0xfa, 0xb0, 0x8b, 0xc7, 0x93, 0x08,

  0xac, 0xa0, 0x5b, 0x6c, 0x1b, 0x39, 0xe2, 0x8b, 0xcc, 0x56, 0x45, 0xbb,
  0xf1, 0xba, 0x81, 0xf5, 0x74, 0xd6, 0x85, 0xfd, 0xf4, 0x4d, 0x56, 0x19,
  0xf1, 0x57, 0x9a, 0x75, 0x7f, 0xfb, 0x58, 0xa3, 0x10, 0xd2, 0x94, 0x5e,
  0x94, 0x11, 0xb9, 0xa5, 0x68, 0x90, 0x88, 0xa9, 0x07, 0xe1, 0x0b, 0x2e,
  0xde, 0xa0, 0xbd, 0xd5, 0x37, 0x7d, 0x85, 0xa4, 0x4b, 0xa1, 0x03, 0x80,
  0x14, 0x1b, 0xea, 0x23, 0xf5, 0x32, 0xde, 0x7d, 0x4c, 0xbf, 0x09, 0xf5,
  0xcf, 0x68, 0x58, 0x44, 0x2d, 0xe4, 0xce, 0x33, 0xf7, 0xb6, 0x9c, 0x34,
  0x29, 0x37, 0xf0, 0xb6, 0x33, 0xbf, 0xc8, 0xc9, 0xe1, 0xa3, 0x79, 0x4e,
  0xd1, 0xb2, 0x9e, 0xe6, 0x4a, 0x1a, 0x13, 0x28, 0x3e, 0x78, 0x27, 0x3d,
  0x82, 0xb4, 0xc8, 0xfa, 0x8a, 0x14, 0x31, 0xd2, 0x0f, 0x60, 0xe4, 0xc7,
  0xd5, 0x7b, 0x6c, 0xda, 0xbb, 0x8b, 0xd3, 0xb7, 0x83, 0xce, 0xb5, 0x13,
  0x95, 0xc6, 0xb3, 0x88, 0x95, 0xe5, 0x08, 0x4d, 0x85, 0x98, 0x00, 0x55,
  0x22, 0xfb, 0x61, 0x4b, 0x0c, 0x19, 0x93, 0x82, 0xb6, 0x6e, 0x20, 0xc9,
  0x38, 0x95, 0x94, 0xae, 0xa9, 0xd9, 0xcf, 0xfb, 0x1a, 0x7a, 0xb2, 0x89,
  0x08, 0x6b, 0x9c, 0x3d, 0x5c, 0x25, 0x46, 0x9e, 0x18, 0x66, 0xb3, 0x09,

  0x60, 0xfd, 0xc2, 0x69, 0xc5, 0xee, 0xab, 0xbc, 0x14, 0x62, 0x2f, 0xdc,
  0x30, 0x23, 0x79, 0x5d, 0xde, 0x14, 0xc3, 0x53, 0xaa, 0x3e, 0x4e, 0x4e,
  0xcb, 0x4b, 0xba, 0x41, 0xef, 0x00, 0x1f, 0x15, 0x9c, 0xda, 0x87, 0xf3,
  0x77, 0xc9, 0x0e, 0xc9, 0xdd, 0xe4, 0xdc, 0x62, 0xce, 0xd1, 0xa3, 0xbb,
  0x62, 0x62, 0xd4, 0xac, 0x92, 0xc8, 0x6c, 0x06, 0xc9, 0xf1, 0xf7, 0x2f,
  0xdf, 0x9e, 0x9f, 0x1e, 0xff, 0xc0, 0x09, 0x32, 0xc1, 0x72, 0xe8, 0xc7,
  0x5f, 0x7a, 0x36, 0x17, 0x22, 0x34, 0x94, 0x34, 0x68, 0x66, 0x12, 0x05,
  0x9c, 0x21, 0xea, 0x64, 0xb6, 0xa8, 0x24, 0x38, 0x1e, 0x9f, 0x9f, 0x0c,
  0x15, 0x2d, 0x8e, 0x7b, 0x95, 0xe6, 0x05, 0x99, 0x47, 0x30, 0xb1, 0xb5,
  0xcd, 0x09, 0x51, 0xd1, 0x30, 0x70, 0xca, 0xc8, 0x7d, 0x18, 0x24, 0xef,
  0x34, 0x15, 0x71, 0x80, 0x43, 0xa7, 0x3b, 0xf8, 0x3a, 0xbf, 0x44, 0x44,
  0xa9, 0x93, 0x43, 0x26, 0x06, 0x08, 0xd1, 0x41, 0x80, 0xc5, 0xe8, 0x75,
  0x99, 0xab, 0xb3, 0x05, 0x3b, 0x2f, 0x7b, 0xe5, 0x23, 0xb3, 0x48, 0x9c,
  0x22, 0xea, 0x44, 0x82, 0x50, 0x99, 0xd4, 0x8d, 0x4c, 0x5a, 0xed, 0xed,
  0x2c, 0x85, 0xb0, 0x54, 0x10, 0x5d, 0xc2, 0xb2, 0xfd, 0xe7, 0xc9, 0xd6,
  0x70, 0x9d, 0x3c, 0xdf, 0xfa, 0x15, 0x55, 0x04, 0xdf, 0xd3, 0x1b, 0x69,
  0x96, 0xa5, 0x45, 0xbb, 0x36, 0x28, 0xa0, 0x5d, 0x1e, 0xb8, 0x8d, 0x82,
  0x38, 0xdc, 0xe0, 0x33, 0x37, 0x37, 0x5d, 0x14, 0xfa, 0xc9, 0xfa, 0xf2,
  0x32, 0x02, 0xe7, 0x42, 0x9d, 0xf8, 0x32, 0xb8, 0x7f, 0xc8, 0x9b, 0xb2,
  0x5d, 0x27, 0xec, 0xc3, 0x37, 0xf3, 0xdf, 0x42, 0x5c, 0x92, 0x79, 0xc8,
  0x55, 0x59, 0xce, 0x48, 0x55, 0x7d, 0x99, 0x70, 0x00, 0x82, 0xa2, 0x14,
  0x55, 0x13, 0x0e, 0xc7, 0xda, 0xdb, 0xf6, 0x9f, 0xb6, 0x6d, 0x94, 0x75,
  0x4b, 0xf4, 0x2a, 0xf0, 0xeb, 0x2d, 0x56, 0x62, 0x27, 0xdc, 0xf0, 0x76,
  0x90, 0x6c, 0xbf, 0xd8, 0x96, 0xe7, 0xb6, 0xa2, 0x2a, 0x1a, 0xbf, 0xc3,
  0x11, 0x3e, 0xd6, 0xaa, 0xa7, 0xd6, 0x05, 0x4a, 0xca, 0x5f, 0x3e, 0x9b,
  0x65, 0x10, 0xdb, 0xd2, 0x33, 0x32, 0x61, 0x84, 0xc7, 0x81, 0xf8, 0x7e,
  0xba, 0x2a, 0x07, 0xa6, 0xae, 0x33, 0xe7, 0xb9, 0x52, 0x2b, 0x43, 0x9e,
  0x81, 0xd7, 0x59, 0x99, 0x42, 0x12, 0xae, 0xc7, 0x9f, 0x7c, 0xb5, 0xef,
  0xa6, 0x70, 0x5a, 0x29, 0x19, 0xc7, 0xd0, 0x84, 0xa3, 0x05, 0x84, 0x83,
  0x4e, 0x6d, 0x1e, 0xe2, 0x5a, 0xa1, 0xfb, 0xd2, 0xeb, 0x82, 0x61, 0x46,
  0xde, 0xae, 0x08, 0xbb, 0xac, 0xfc, 0x84, 0x9e, 0xae, 0x65, 0xd5, 0xf7,
  0x7d, 0xf5, 0xec, 0x3a, 0xc2, 0x63, 0x51, 0xab, 0x05, 0x12, 0xa4, 0x4d,
  0xe0, 0x41, 0xd1, 0x05, 0xd4, 0xb6, 0x1b, 0x84, 0x68, 0x36, 0xdc, 0x59,
  0x4e, 0x7a, 0x06, 0x0f, 0x6d, 0xe8, 0xa9, 0x1d, 0x2b, 0xd5, 0x2a, 0xe1,


  0x98, 0x9b, 0xd5, 0x2f, 0xb7, 0x6d, 0x77, 0x2f, 0x14, 0x57, 0x36, 0x1a,
  0x0c, 0x6c, 0xac, 0xd4, 0x6e, 0xd5, 0x6f, 0x8e, 0xfa, 0x21, 0xd4, 0xfc,
  0xc0, 0x5b, 0x98, 0xfc, 0x19, 0x0d, 0x8b, 0x7c, 0x2b, 0xb7, 0xaa, 0x0e,

  0xed, 0xac, 0xd7, 0x12, 0x38, 0xf3, 0xa3, 0x51, 0x52, 0x2a, 0xc8, 0x5e,
  0xc3, 0x42, 0x5b, 0x74, 0x71, 0x7c, 0x5e, 0xd3, 0x06, 0x72, 0x78, 0xf7,
  0xeb, 0x51, 0x44, 0x85, 0x65, 0x9d, 0x14, 0x24, 0x27, 0xab, 0x61, 0xf7,
  0x3a, 0x42, 0x69, 0xfa, 0xbe, 0x66, 0xec, 0xa0, 0x27, 0x3b, 0x0f, 0x1d,
  0x0b, 0xad, 0x42, 0x7e, 0x1c, 0x55, 0x33, 0x04, 0x2b, 0xee, 0x24, 0xb1,
  0x86, 0xdb, 0x76, 0x17, 0x9f, 0x34, 0x83, 0x92, 0x06, 0xcf, 0x6e, 0xb3,
  0xe9, 0xba, 0x69, 0x97, 0xc0, 0x79, 0x73, 0x52, 0x64, 0x27, 0x9e, 0xd6,
  0x0e, 0xae, 0x82, 0x00, 0xde, 0x6c, 0x9d, 0x2b, 0x2c, 0xcf, 0xf3, 0xad,
  0x5d, 0x89, 0xe3, 0xa6, 0xac, 0xc1, 0xf3, 0x8f, 0x63, 0xf1, 0x59, 0x9d,
  0x73, 0x95, 0xb1, 0x3b, 0xd5, 0x25, 0x2b, 0x44, 0x3f, 0x6f, 0x88, 0xb4,

  0x9a, 0xc5, 0xbe, 0xfd, 0x86, 0x7d, 0x6f, 0xde, 0xa7, 0x6d, 0xbb, 0x4e,
  0x71, 0xcb, 0xd5, 0xc1, 0x55, 0x0e, 0xbe, 0x8c, 0xb6, 0xe5, 0xa3, 0xe4,
  0xe5, 0xb5, 0xa1, 0x6e, 0xd8, 0xf1, 0xfa, 0xaa, 0xee, 0x7f, 0xe0, 0x0e,
  0x3d, 0x39, 0xbf, 0x7e, 0x22, 0xde, 0x6c, 0x52, 0x39, 0x48, 0xe6, 0xe1,
  0x47, 0x96, 0xe3, 0x07, 0xab, 0xf8, 0x54, 0x4d, 0x1e, 0x99, 0x3f, 0xbe,
  0xa1, 0x3f, 0xe6, 0xec, 0x16, 0x10, 0x50, 0x3d, 0xf6, 0xc3, 0x86, 0xa4,
  0x3d, 0x3e, 0xb5, 0x7f, 0xd8, 0x44, 0x2d, 0x73, 0xea, 0x54, 0xa9, 0x48,
  0x10, 0x7c, 0x0e, 0x0c, 0x09, 0xa6, 0x8d, 0x8e, 0x33, 0xd0, 0xfa, 0xe1,
  0x78, 0x7d, 0x07, 0x10, 0xe3, 0x06, 0x40, 0x64, 0x1b, 0xc0, 0xe7, 0x34,


  0x66, 0x46, 0x5e, 0xc6, 0xea, 0x47, 0xcd, 0x56, 0xfd, 0x83, 0xe2, 0x70,
  0xb6, 0x94, 0x7d, 0x96, 0x69, 0x6e, 0x85, 0x90, 0xa0, 0x97, 0xcf, 0xc1,
  0xde, 0x69, 0xba, 0x66, 0xcc, 0xce, 0xc2, 0x84, 0x54, 0x0b, 0x94, 0xd7,
  0xb7, 0x64, 0x08, 0x77, 0xf9, 0x23, 0xc4, 0x9c, 0xed, 0x7f, 0xef, 0x35,
  0xea, 0xa7, 0xe5, 0xc2, 0xf3, 0x55, 0x80, 0xf3, 0x23, 0xb5, 0x87, 0xcd,
  0x19, 0x31, 0x38, 0x1d, 0x3c, 0x2c, 0xb6, 0x0e, 0x2b, 0x26, 0x3d, 0xf3,
  0x5c, 0xa2, 0x65, 0x24, 0x35, 0xdd, 0x00, 0x57, 0xf8, 0xa4, 0xd1, 0xea,
  0x65, 0xb6, 0xa4, 0xc0, 0x97, 0x95, 0x8b, 0x82, 0xe1, 0x45, 0x8a, 0x15,
  0x3e, 0x3e, 0x8c, 0x0f, 0x37, 0x23, 0xfd, 0x8d, 0x44, 0x2c, 0xa7, 0x6f,
  0xfd, 0x5b, 0x10, 0xed, 0xac, 0xef, 0x8a, 0xe9, 0xd5, 0xeb, 0x77, 0xe3,
  0xf8, 0xeb, 0xe1, 0xe2, 0xf0, 0xbc, 0xd1, 0x43, 0x88, 0x18, 0xa0, 0xc0,
  0x08, 0x88, 0xa5, 0x51, 0xf2, 0x5e, 0x7a, 0xbf, 0x8b, 0x0f, 0xd7, 0x7a,
  0xc1, 0x7a, 0x02, 0x49, 0xb1, 0x60, 0x26, 0x2e, 0x9a, 0x27, 0xc2, 0x2e,
  0xc3, 0x94, 0xae, 0x02, 0x2d, 0x2f, 0x54, 0xa0, 0xed, 0x9d, 0xa6, 0x80,
  0x91, 0xa1, 0x02, 0x19, 0xb2, 0xf2, 0x12, 0xd0, 0xba, 0x74, 0x8d, 0x86,
  0x3b, 0xfa, 0xc7, 0x4f, 0x39, 0xe6, 0x53, 0x63, 0xd1, 0x66, 0x91, 0xe0,
  0xa2, 0xbf, 0x43, 0xad, 0x84, 0x20, 0x2f, 0xf8, 0x6b, 0x68, 0x75, 0x41,
  0xaf, 0x33, 0x99, 0x0e, 0x84, 0x5a, 0xf1, 0xa3, 0xaa, 0x6f, 0x49, 0x66,
  0x53, 0x0e, 0xbf, 0xfa, 0x73, 0x28, 0x3d, 0x5f, 0xbf, 0xeb, 0xf9, 0x1c,
  0xfd, 0x66, 0xa8, 0xd5, 0x84, 0xa2, 0x11, 0x78, 0x2a, 0x7d, 0xb8, 0x17,
  0x82, 0x85, 0x1c, 0x9f, 0x80, 0x02, 0x25, 0xdf, 0xc3, 0x25, 0xcc, 0x13,
  0xf2, 0xc7, 0xc6, 0x07, 0x25, 0xa7, 0x3f, 0xfe, 0x29, 0x4a, 0xf6, 0xdf,
  0xe1, 0x04, 0xbf, 0xe4, 0x3d, 0x07, 0x71, 0xcf, 0x45, 0x13, 0xde, 0x8d,

  0x1c, 0x91, 0xfb, 0x4c, 0x7c, 0x38, 0xe2, 0x6f, 0x31, 0x48, 0x2a, 0xe2,
  0x0b, 0x87, 0xfc, 0xc7, 0xde, 0xa1, 0x4d, 0x4e, 0xb3, 0x05, 0xa1, 0xb8,

  0xa4, 0x46, 0x80, 0x87, 0x0a, 0x42, 0x91, 0xdf, 0x8e, 0x91, 0x4f, 0xd0,
  0x43, 0xcd, 0x48, 0x3c, 0xe0, 0x8c, 0x03, 0xbb, 0x07, 0x34, 0x51, 0xd5,
  0xc4, 0xa2, 0x33, 0x19, 0xb3, 0xfb, 0xee, 0x3e, 0x62, 0xca, 0x23, 0xf9,
  0x74, 0x9b, 0x70, 0x37, 0xdf, 0x1a, 0x25, 0x89, 0x84, 0xeb, 0xfd, 0xd7,
  0xd8, 0xd2, 0x8d, 0x7d, 0x27, 0xd9, 0x99, 0x18, 0x89, 0xed, 0xe1, 0xe8,
  0x10, 0xbf, 0x79, 0x84, 0x12, 0x96, 0xf8, 0x70, 0x8f, 0x3f, 0x7f, 0xfc,
  0x68, 0x77, 0x77, 0x20, 0xae, 0x2a, 0xce, 0x8e, 0x99, 0x50, 0x31, 0x56,
  0x4e, 0x7c, 0x8b, 0xe3, 0x4c, 0xb4, 0xc1, 0x57, 0xdc, 0x57, 0x89, 0xbf,
  0x1b, 0x89, 0x80, 0x3b, 0x83, 0xcf, 0xbe, 0x4a, 0x87, 0x48, 0x26, 0x38,
  0x38, 0xba, 0x35, 0x83, 0x53, 0xe5, 0x89, 0xb5, 0x0b, 0xba, 0xf4, 0x72,
  0x05, 0x38, 0x52, 0x9c, 0x87, 0x91, 0xdc, 0x4a, 0x1c, 0x2f, 0x4e, 0x55,
  0xd2, 0x86, 0x89, 0xa0, 0xe7, 0x2c, 0xf6, 0xe8, 0x0f, 0xa2, 0xe7, 0x2b,



  0x6d, 0xe0, 0x7c, 0xbe, 0x9e, 0x2c, 0x8c, 0x04, 0x1a, 0xaf, 0xe7, 0x73,
  0x73, 0xd6, 0xa7, 0xb9, 0xb4, 0xe2, 0x16, 0x5b, 0x41, 0x7b, 0xa2, 0xf5,
  0xc9, 0x1c, 0x5e, 0x38, 0x51, 0x1a, 0x93, 0x5a, 0xab, 0x6e, 0xc6, 0x95,
  0x70, 0xb3, 0xde, 0xb6, 0xb5, 0xe2, 0x6f, 0xd5, 0xeb, 0xf9, 0xb0, 0x6f,
  0x61, 0xb7, 0x59, 0x1d, 0x9a, 0x71, 0x6f, 0x29, 0x6e, 0x6b, 0x04, 0xf6,
  0x83, 0xf9, 0x93, 0xed, 0x79, 0xdd, 0x4e, 0xd9, 0xb5, 0x7a, 0xe7, 0x0d,
  0xe9, 0x9d, 0xc0, 0xe0, 0xa1, 0x68, 0x46, 0xf2, 0x82, 0x35, 0xcc, 0x68,
  0x17, 0x64, 0x6e, 0xd5, 0x29, 0x60, 0x08, 0xbe, 0x2e, 0x0a, 0xb5, 0x1e,
  0x7e, 0xff, 0x94, 0x1a, 0x20, 0x4a, 0x12, 0xe6, 0x22, 0x43, 0x46, 0x37,
  0xf1, 0xc7, 0x10, 0x95, 0xa4, 0x12, 0xfc, 0x77, 0xf1, 0x1a, 0x24, 0xe2,
  0xfc, 0x10, 0x27, 0x3e, 0xd2, 0xeb, 0x52, 0x00, 0x2b, 0xc1, 0x09, 0xc4,
  0x78, 0x3e, 0x1c, 0x4b, 0x30, 0xfb, 0x32, 0x8b, 0x19, 0x76, 0xed, 0x10,
  0x8f, 0x82, 0x2d, 0xd4, 0xec, 0x07, 0x95, 0xaf, 0x84, 0xbe, 0x1b, 0x3a,
  0xae, 0xd0, 0x12, 0x6b, 0x60, 0x13, 0x27, 0x5b, 0x3c, 0x9f, 0x2d, 0x81,
  0x43, 0xd1, 0x3a, 0x39, 0x24, 0x60, 0xa9, 0xe1, 0xc0, 0xaa, 0xb7, 0x8c,
  0xcf, 0xde, 0xbd, 0x48, 0x4c, 0x5d, 0x54, 0xc9, 0x2f, 0x35, 0x8f, 0x6b,
  0x8b, 0x95, 0xf6, 0xb2, 0xdb, 0x99, 0x5e, 0x86, 0xb3, 0xbb, 0x12, 0x41,
  0x5c, 0xe0, 0xcc, 0x08, 0x24, 0xa9, 0xd3, 0xa9, 0x99, 0x41, 0x87, 0x5b,
  0x71, 0x7d, 0xda, 0xee, 0x41, 0x62, 0x9b, 0x4c, 0xb6, 0x0c, 0x3f, 0xfd,
  0x8a, 0xda, 0xf9, 0x94, 0xde, 0xdd, 0xe4, 0xcd, 0x3a, 0x64, 0xba, 0x12,
  0x29, 0x06, 0x3e, 0x05, 0x42, 0x13, 0x74, 0x12, 0x0e, 0x44, 0x02, 0x56,
  0x1e, 0x25, 0xbb, 0x35, 0x00, 0x87, 0xb6, 0x4c, 0x82, 0x7a, 0x91, 0x18,
  0x85, 0xe4, 0x26, 0xc8, 0x10, 0x27, 0x00, 0x53, 0x37, 0xbb, 0x76, 0x05,
  0x9c, 0x19, 0xe0, 0xf7, 0xff, 0xa9, 0xbf, 0xfc, 0x48, 0x9b, 0xf5, 0x4f,
  0xdd, 0x2c, 0x99, 0x76, 0x1a, 0xc0, 0x24, 0xc0, 0xbc, 0xfe, 0x3d, 0x36,
  0xe5, 0x6f, 0x94, 0xd4, 0xc4, 0x3b, 0x43, 0x00, 0x45, 0x18, 0xee, 0xf7,
  0x23, 0xab, 0x46, 0xeb, 0x10, 0x54, 0xf6, 0xcd, 0xce, 0x82, 0xc9, 0x5d,
  0xe0, 0x92, 0x22, 0x1a, 0xfc, 0xa1, 0x18, 0x00, 0x6a, 0xd9, 0x58, 0x74,
  0x84, 0xd2, 0xc2, 0x9d, 0x74, 0xf9, 0x18, 0x7f, 0xa8, 0x04, 0x73, 0xc8,
  0xd8, 0x32, 0x66, 0xe2, 0x64, 0xe7, 0xf1, 0xcf, 0xe3, 0x86, 0x85, 0x4d,

  0x97, 0xd5, 0x7d, 0x6e, 0x81, 0x50, 0x99, 0x91, 0xa8, 0x49, 0xbc, 0x9a,
  0xe2, 0x13, 0xc5, 0x7f, 0x61, 0x52, 0xed, 0x9e, 0x3d, 0x30, 0x5a, 0x04,
  0x82, 0x5a, 0x5f, 0xe5, 0xa6, 0x6d, 0x36, 0xa8, 0xf7, 0xfb, 0xff, 0xe4,
  0x44, 0xc0, 0x7f, 0x86, 0xba, 0xef, 0xd9, 0xc5, 0xf1, 0x73, 0x4c, 0xe9,
  0xf7, 0xc3, 0xfa, 0x6e, 0x39, 0x29, 0x17, 0x72, 0xeb, 0x68, 0xef, 0xcd,
  0x06, 0xea, 0xcf, 0x98, 0x46, 0x10, 0xab, 0x1b, 0x7a, 0x00, 0x26, 0x83,
  0x68, 0x6f, 0x0a, 0xd8, 0x61, 0x49, 0x39, 0xe5, 0x82, 0x56, 0xaa, 0x5d,
  0x30, 0xb7, 0xef, 0xf7, 0x89, 0xa2, 0x92, 0x70, 0x6b, 0x5a, 0x69, 0x40,
  0xec, 0x81, 0x66, 0xc6, 0x8b, 0x2c, 0xa3, 0xfb, 0xe7, 0x11, 0x8a, 0xb5,
  0x9e, 0x62, 0xd0, 0x2f, 0xc4, 0x2c, 0xcc, 0x34, 0x3f, 0xa2, 0x6a, 0x92,
  0x5f, 0x7d, 0xc5, 0x3f, 0x1a, 0x5e, 0xd0, 0x8f, 0x24, 0x87, 0x46, 0xa1,
  0x06, 0x88, 0x3a, 0xb5, 0xf2, 0x64, 0x10, 0x29, 0x50, 0x4e, 0x62, 0xa9,
  0x79, 0x94, 0xfa, 0x6e, 0x18, 0x4d, 0x30, 0x4f, 0xbd, 0xd7, 0x1f, 0x33,
  0x20, 0xf2, 0xe6, 0xd7, 0xd9, 0xe6, 0xd1, 0x40, 0x17, 0xc4, 0x99, 0x97,
  0xe8, 0xf8, 0x68, 0xd3, 0x3b, 0x7d, 0x64, 0x16, 0xc6, 0x45, 0xe3, 0x68,
  0xea, 0xe8, 0xbe, 0xe1, 0x38, 0xaa, 0x02, 0x77, 0x8f, 0xa4, 0xfe, 0x90,
  0x73, 0xcd, 0xeb, 0x90, 0xd1, 0x50, 0x39, 0x0e, 0xf2, 0x8d, 0x68, 0xdc,
  0x7b, 0xd6, 0x0a, 0x80, 0x4c, 0x66, 0x5c, 0x7e, 0x93, 0xdb, 0x76, 0x7c,


  0x5b, 0xb2, 0xfa, 0x28, 0x14, 0xbe, 0x79, 0x38, 0x17, 0x27, 0x97, 0xc8,
  0xd4, 0x09, 0xba, 0x75, 0x97, 0x9c, 0x7d, 0x88, 0x79, 0xa2, 0x8e, 0x65,
  0x49, 0x7e, 0xdb, 0x48, 0x9c, 0x39, 0x89, 0xb9, 0xf1, 0x10, 0x1d, 0xfd,
  0x8f, 0x81, 0x9b, 0x0e, 0xfb, 0xb6, 0x86, 0x5e, 0x98, 0x7d, 0x24, 0x90,

  0x97, 0x9b, 0x87, 0xe3, 0xfc, 0xfb, 0x27, 0xa3, 0xfd, 0xdd, 0xe0, 0x50,
  0x9b, 0xd5, 0x47, 0x43, 0x1c, 0xd5, 0xdd, 0x47, 0xca, 0x52, 0xc5, 0x99,
  0x69, 0x54, 0x01, 0x3f, 0xc0, 0xd6, 0x32, 0x7a, 0xc1, 0x7a, 0x45, 0xe3,
  0x80, 0xc8, 0x17, 0x25, 0x9b, 0x6c, 0xf7, 0x2d, 0x43, 0x22, 0xd4, 0x92,
  0xd0, 0xe8, 0x83, 0xe8, 0xec, 0xb4, 0x7b, 0xc0, 0x3d, 0x0a, 0x26, 0x46,
  0x19, 0x28, 0x1f, 0x11, 0xba, 0xb6, 0xc4, 0x64, 0x24, 0x5f, 0x56, 0xe5,
  0x53, 0xbf, 0x21, 0x2a, 0x1e, 0x00, 0x3d, 0x31, 0x32, 0x28, 0xc5, 0xb2,
  0xa3, 0x20, 0xc8, 0x9d, 0xff, 0xc1, 0xff, 0xeb, 0x22, 0x56, 0x9a, 0xec,
  0x08, 0x11, 0x68, 0xa6, 0x49, 0x79, 0x35, 0x5e, 0xfe, 0x41, 0x88, 0x52,
  0xdf, 0xf9, 0x1f, 0x50, 0xd6, 0x0f, 0xa5, 0xd9, 0xed, 0x22, 0x4f, 0x6b,
  0x3b, 0x43, 0x5e, 0x02, 0xae, 0x14, 0x16, 0x2c, 0x78, 0x67, 0xf7, 0xde,
  0x43, 0xce, 0x40, 0x23, 0x05, 0x64, 0xd4, 0xb3, 0x33, 0x9c, 0x38, 0xdc,
  0xdd, 0x99, 0xfe, 0x0d, 0xd1, 0x35, 0x0f, 0x37, 0x7f, 0x5b, 0x81, 0xe1,
  0x76, 0x24, 0x8a, 0x07, 0xed, 0x7c, 0x97, 0xb3, 0xe5, 0x40, 0x0c, 0x0a,
  0x22, 0x27, 0x2c, 0xe6, 0x9e, 0x5b, 0xbb, 0xd3, 0xee, 0xaf, 0xdc, 0x73,
  0xce, 0xb6, 0x08, 0x88, 0x99, 0x06, 0xfd, 0xcc, 0xab, 0x0c, 0x62, 0xad,
  0x94, 0xd6, 0x93, 0x58, 0xd6, 0xa3, 0xa0, 0x02, 0x3f, 0xe1, 0xf3, 0x8f,


  0xf7, 0x23, 0xf4, 0x8f, 0xf4, 0xe1, 0x8f, 0xf9, 0xca, 0xe7, 0x59, 0x27,
  0xe7, 0x68, 0x3b, 0x8a, 0xda, 0x17, 0x61, 0xa8, 0x9c, 0x65, 0x4c, 0x49,
  0x17, 0xf2, 0x03, 0xdc, 0xec, 0x7b, 0x37, 0x73, 0xca, 0xf0, 0x07, 0x70,
  0x08, 0x78, 0x48, 0x11, 0x43, 0x55, 0xd2, 0xd4, 0x3f, 0x40, 0x5e, 0xaf,
  0x47, 0x91, 0x40, 0x54, 0x12, 0x71, 0x97, 0xf9, 0x4b, 0x3a, 0x7c, 0xd6,
  0xbb, 0x24, 0x18, 0x58, 0x76, 0x49, 0x3c, 0xff, 0x56, 0xa7, 0x8d, 0xf6,
  0x42, 0xbc, 0x99, 0xde, 0xb3, 0x24, 0xb7, 0x8c, 0x7b, 0x67, 0x62, 0xbe,
  0xf4, 0xd1, 0x61, 0xb4, 0x27, 0xef, 0xec, 0x87, 0x8d, 0x62, 0xe2, 0xc0,
  0xdb, 0x09, 0xbe, 0x50, 0x69, 0x94, 0x27, 0x92, 0xc4, 0x35, 0xea, 0x24,
  0xa2, 0x60, 0x77, 0xe8, 0xeb, 0x28, 0x3a, 0x07, 0xed, 0x44, 0x5b, 0xfb,
  0x73, 0x70, 0x3f, 0xe4, 0xeb, 0x42, 0xa2, 0x6f, 0x5e, 0x4a, 0xd7, 0x74,
  0x3b, 0x9d, 0x7b, 0xe6, 0xc0, 0x57, 0xe0, 0xfe, 0x59, 0xe0, 0x16, 0x7d,
  0xac, 0xeb, 0x05, 0x91, 0x7a, 0x3e, 0xbf, 0x33, 0x53, 0xaa, 0x7b, 0xc1,
  0x63, 0x7c, 0x01, 0xca, 0xcf, 0xe9, 0x61, 0x79, 0x06, 0xf3, 0x76, 0x0d,
  0x9f, 0xe6, 0x2a, 0xa3, 0xe4, 0x1b, 0x06, 0x07, 0xbf, 0x8f, 0x18, 0x49,

  0x0c, 0xe3, 0xf3, 0x2e, 0xce, 0x27, 0x7c, 0xc2, 0xaa, 0x0b, 0xa3, 0x64,

  0x5f, 0x6c, 0xc1, 0x7b, 0x59, 0x68, 0x6b, 0x24, 0x1a, 0xc4, 0x85, 0xb6,
  0xdb, 0x1b, 0x42, 0x85, 0x88, 0xc1, 0x86, 0xe8, 0xee, 0x7f, 0x84, 0x45,
  0xc9, 0xf1, 0x68, 0xc9, 0x3a, 0xb7, 0x38, 0x49, 0x34, 0x28, 0x88, 0x43,
  0x23, 0xca, 0xc3, 0x53, 0x92, 0x85, 0x8b, 0x08, 0xf8, 0x79, 0x12, 0x03,
  0xb3, 0x40, 0xb7, 0x2b, 0x49, 0xc3, 0xd6, 0xb3, 0xde, 0x29, 0xa5, 0xa6,
  0x74, 0x48, 0xa5, 0xb0, 0x43, 0xfc, 0xa2, 0xd7, 0xc5, 0xea, 0xd2, 0x3d,
  0x9a, 0x5d, 0x49, 0x3e, 0x53, 0x45, 0x4d, 0x72, 0x2a, 0x08, 0xba, 0x92,
  0xbb, 0xa0, 0x4f, 0xa9, 0x2b, 0x8c, 0xe4, 0x79, 0xa6, 0x9b, 0x87, 0xd3,
  0xd9, 0x48, 0xbb, 0x34, 0x98, 0x5a, 0x97, 0x00, 0xf6, 0x2a, 0x3b, 0xa4,
  0x64, 0x84, 0x4a, 0x64, 0xe7, 0x48, 0x98, 0x5a, 0x96, 0x75, 0xe1, 0x97,
  0x5c, 0x18, 0xce, 0xd5, 0x61, 0x5c, 0xff, 0xc2, 0xf5, 0xb6, 0x5c, 0x4a,
  0x98, 0x14, 0x78, 0x54, 0x59, 0x75, 0xb8, 0xd0, 0x7d, 0x82, 0x31, 0xca,


  0x18, 0x64, 0x0d, 0xca, 0xa3, 0xfc, 0x35, 0xfc, 0xc6, 0x2c, 0x4a, 0xd2,
  0x5f, 0xfd, 0x2b, 0x47, 0x47, 0x28, 0x3f, 0xde, 0xa9, 0x1d, 0x8e, 0x32,
  0xd5, 0xca, 0xcd, 0x12, 0x1b, 0x2f, 0xd8, 0x4d, 0x62, 0x48, 0x6b, 0x5d,
  0x35, 0xce, 0x50, 0xb0, 0x2f, 0xb2, 0x10, 0x8e, 0xbe, 0xf7, 0x6e, 0x10,
  0x54, 0xdd, 0x47, 0xdb, 0xcd, 0x83, 0x03, 0x37, 0x65, 0x43, 0x79, 0x1e,
  0x4b, 0x23, 0xcf, 0xc1, 0x0c, 0x18, 0x74, 0xd0, 0x31, 0x2e, 0x7d, 0x3a,
  0xe2, 0xa3, 0xc3, 0x68, 0x1a, 0x03, 0xde, 0x34, 0x9a, 0x56, 0x09, 0xda,
  0xa1, 0x10, 0x4a, 0xbd, 0xe7, 0xa6, 0x11, 0x1a, 0x50, 0xf4, 0x8b, 0x16,
  0xa1, 0xf6, 0x41, 0xf3, 0x87, 0xe1, 0x0e, 0x15, 0xf9, 0x5e, 0xbe, 0xe3,
  0xb3, 0x88, 0xf8, 0xa7, 0x35, 0xff, 0xff, 0x61, 0x9f, 0xd6, 0x1c, 0xf6,
  0x70, 0x2c, 0x6a, 0x64, 0xe2, 0xce, 0x81, 0xc6, 0x4a, 0x29, 0x91, 0xe0,
  0xd2, 0x6b, 0xb5, 0xc2, 0xed, 0x6f, 0x9c, 0x41, 0x63, 0x78, 0x67, 0xbd,
  0x26, 0x8c, 0xec, 0xf9, 0x7d, 0xb2, 0x5c, 0x2a, 0x31, 0xe0, 0x41, 0xb2,
  0xe3, 0x11, 0xb8, 0x64, 0xbb, 0x07, 0x4c, 0xcf, 0xac, 0xec, 0x12, 0xfd,

  0x59, 0xc9, 0x0f, 0xbb, 0x73, 0x72, 0x93, 0xfa, 0x89, 0xb3, 0xe2, 0xf1,
  0x1e, 0x32, 0xa7, 0x9f, 0x2e, 0xd7, 0x3a, 0x82, 0xad, 0x2b, 0xca, 0x5a,
  0xb2, 0xea, 0x21, 0xcc, 0xfe, 0x1e, 0x51, 0xd6, 0x92, 0x56, 0xf7, 0xdf,
  0xd9, 0x3e, 0x51, 0x76, 0x10, 0x65, 0x21, 0x0c, 0xe9, 0xad, 0xff, 0x7b,
  0x83, 0x94, 0x17, 0x08, 0x0b, 0xc3, 0xcc, 0x72, 0xa2, 0x6b, 0x14, 0x56,
  0x92, 0x2d, 0xd7, 0x71, 0x44, 0x46, 0xeb, 0x6e, 0x93, 0x78, 0x06, 0xba,
  0x3a, 0x54, 0x38, 0x8b, 0x4c, 0xfd, 0x22, 0xec, 0x18, 0x19, 0x59, 0x45,
  0xf7, 0x01, 0x0c, 0xf9, 0xc9, 0x51, 0x7c, 0x0d, 0x40, 0x85, 0xff, 0x6d,
  0xd6, 0x10, 0x3a, 0x85, 0x46, 0xce, 0xbe, 0xbf, 0x9f, 0x03, 0x48, 0x9e,
  0xfc, 0x80, 0xfb, 0xd6, 0x72, 0xcd, 0xcf, 0x44, 0x11, 0xa5, 0x1d, 0x76,

  0x37, 0x39, 0x82, 0xd9, 0x59, 0x7b, 0x8f, 0xc5, 0x83, 0xc7, 0x35, 0xb1,
  0x9a, 0x0b, 0x4c, 0xdb, 0x96, 0x43, 0x74, 0xcb, 0x48, 0x2c, 0x7c, 0x4c,
  0x57, 0x2b, 0x91, 0x36, 0xf7, 0x93, 0x3c, 0xc3, 0x36, 0x72, 0x8f, 0x5e,
  0xea, 0x13, 0x05, 0x84, 0xcc, 0xa6, 0x2c, 0x3f, 0xb1, 0x4b, 0x95, 0x53,


  0xb0, 0xa9, 0x16, 0x32, 0x09, 0x91, 0xa2, 0x03, 0x92, 0x5f, 0x24, 0x7a,

  0x6f, 0xf6, 0xc6, 0xe3, 0xaf, 0xf7, 0xb2, 0x66, 0xaa, 0x62, 0x6f, 0xcf,
  0xa5, 0xff, 0x59, 0xf3, 0xfb, 0x9e, 0xe1, 0x20, 0x78, 0xd1, 0xaf, 0x8f,
  0x88, 0xdf, 0xfa, 0xb5, 0x1f, 0x40, 0xfb, 0xd8, 0x84, 0xb6, 0x2d, 0xfa,
  0x0b, 0x2f, 0x53, 0x60, 0xa8, 0x75, 0x75, 0x1d, 0x97, 0x02, 0x26, 0x4d,
  0x3a, 0x1d, 0x9b, 0xa9, 0xf7, 0xdf, 0x6c, 0xb7, 0xb8, 0xe8, 0x52, 0xc8,
  0xb3, 0x42, 0x29, 0x3f, 0xeb, 0xd5, 0x6f, 0x7e, 0x9e, 0x28, 0x7b, 0x72,
  0xe1, 0x64, 0x24, 0x48, 0xdd, 0x3f, 0xe1, 0x15, 0x39, 0x31, 0xd8, 0x4f,
  0xf1, 0x00, 0xa6, 0xfb, 0xe0, 0x29, 0x3f, 0x78, 0xc6, 0x5c, 0xf9, 0x2b,
  0x33, 0xc0, 0x84, 0xe1, 0x9c, 0x96, 0x10, 0x10, 0x98, 0xd5, 0x24, 0xbb,
  0xcc, 0x8b, 0x07, 0x39, 0xf7, 0x34, 0x4b, 0x87, 0xd3, 0x5e, 0xb2, 0xa1,
  0x1d, 0x57, 0x12, 0x80, 0x6b, 0xc9, 0x15, 0xbe, 0x2c, 0xef, 0x9d, 0x5d,
  0x2a, 0x40, 0xdb, 0x24, 0x16, 0x3c, 0xdf, 0xfb, 0x54, 0xe9, 0x87, 0xf2,
  0x78, 0xf2, 0xe9, 0x9a, 0xf2, 0x8f, 0x23, 0x1d, 0xa7, 0x03, 0x37, 0x96,
  0x51, 0xf8, 0xb8, 0xd6, 0xea, 0x9a, 0xc2, 0xf2, 0x3d, 0x67, 0x61, 0xf5,
  0xfa, 0xfb, 0xc8, 0x83, 0x12, 0xaf, 0x17, 0x0b, 0x6b, 0x07, 0xdc, 0x2b,
  0x92, 0x8c, 0x38, 0x5b, 0xe9, 0xf6, 0x10, 0x5d, 0x48, 0x57, 0x4d, 0x22,
  0xd3, 0x81, 0x5e, 0x8c, 0x41, 0xf2, 0x60, 0x52, 0xe0, 0xb2, 0x4c, 0xdd,
  0x5b, 0xc5, 0x0d, 0xd6, 0x44, 0x7e, 0x40, 0x88, 0xd3, 0x2f, 0xd3, 0xa9,
  0x9a, 0x76, 0xf7, 0xcd, 0x2e, 0xe5, 0x4e, 0x73, 0xed, 0x4d, 0x70, 0x48,
  0x14, 0x56, 0xa1, 0xe0, 0xec, 0xa8, 0x87, 0xd9, 0x6e, 0xb9, 0xb6, 0x8c,
  0x76, 0xd1, 0x3d, 0x6f, 0xbf, 0xea, 0xd1, 0xc3, 0x2d, 0x90, 0xa8, 0x41,
  0x8e, 0xb9, 0x62, 0xe6, 0x0f, 0xbf, 0x3e, 0xbf, 0x06, 0x03, 0xd7, 0xca,
  0x09, 0xd2, 0x4a, 0xdd, 0xf5, 0x11, 0x8c, 0x7c, 0x54, 0xd3, 0x3c, 0xd0,
  0x15, 0x82, 0x0c, 0xfd, 0xf6, 0x35, 0xea, 0x32, 0x08, 0x4d, 0xca, 0x5c,
  0xd4, 0xe5, 0xfd, 0x5a, 0xa0, 0x9c, 0x80, 0xd7, 0x28, 0x8a, 0xd0, 0xf5,
  0x59, 0xc0, 0x1a, 0x5b, 0x88, 0xae, 0x0e, 0x87, 0x9f, 0x1e, 0xe0, 0x52,
  0x34, 0x07, 0x18, 0xbf, 0x31, 0xac, 0x9b, 0xb7, 0x35, 0xf5, 0x70, 0x97,
  0x2d, 0x50, 0x2c, 0x32, 0xf7, 0x38, 0xbf, 0xf6, 0x21, 0x44, 0x44, 0x0e,
  0xcf, 0xc8, 0x5d, 0x45, 0xdf, 0x02, 0x35, 0xca, 0x9c, 0xc9, 0xe7, 0x9c,
  0xa6, 0x19, 0xc7, 0x9f, 0xe8, 0x75, 0x57, 0xcc, 0x01, 0x23, 0x94, 0xf4,
  0xc9, 0xe1, 0x7d, 0xae, 0x76, 0x8d, 0x4a, 0x50, 0x06, 0x29, 0x60, 0x03,

  0x16, 0x33, 0x05, 0x05, 0xa3, 0xfa, 0x4f, 0xf6, 0x48, 0x58, 0xa0, 0xfd,


  0xe7, 0x9b, 0x87, 0xd3, 0xfe, 0x1c, 0xbf, 0x22, 0xd2, 0xe8, 0x6d, 0x6a,

  0xee, 0x40, 0xb4, 0xaa, 0xa2, 0x4e, 0xaf, 0x19, 0x61, 0x4c, 0x82, 0x7b,
  0x70, 0x02, 0x13, 0xc7, 0x6f, 0x37, 0xb5, 0x6d, 0x77, 0xac, 0xab, 0x9b,
  0x48, 0x09, 0x89, 0xd1, 0xea, 0x29, 0xba, 0x0d, 0x69, 0x61, 0x2c, 0xea,
  0x14, 0xb5, 0x23, 0xe6, 0x07, 0xd9, 0x6d, 0xc3, 0xc1, 0x05, 0x09, 0xc4,
  0xd0, 0x54, 0x72, 0xa3, 0xd5, 0x21, 0xcf, 0xc2, 0x81, 0x98, 0x46, 0xaa,
  0x2a, 0xa4, 0x68, 0x11, 0x5f, 0xb3, 0xfe, 0xba, 0xdb, 0xd9, 0xe5, 0xa8,
  0xac, 0x72, 0x92, 0x37, 0x48, 0x1a, 0xd5, 0xd1, 0x88, 0xf0, 0x07, 0xe0,
  0x26, 0x64, 0x3d, 0xc6, 0x86, 0x93, 0xc0, 0x5a, 0xa2, 0x70, 0xa4, 0xed,
  0x71, 0x97, 0x20, 0x56, 0xc4, 0xdc, 0xec, 0x98, 0x82, 0x82, 0x1a, 0x6a,
  0xab, 0xbc, 0x12, 0x2d, 0xc2, 0xb1, 0xed, 0x5c, 0x35, 0xe9, 0xc5, 0x2e,
  0xd9, 0xad, 0x95, 0xa2, 0xb0, 0x37, 0x69, 0x85, 0x62, 0xf6, 0xc0, 0x17,
  0x95, 0xd7, 0xf5, 0x1a, 0x07, 0xf6, 0xe6, 0xe4, 0xf4, 0xd8, 0x66, 0xb5,
  0xfd, 0xcf, 0xbd, 0x11, 0x6d, 0x78, 0x35, 0x0d, 0x72, 0xf8, 0xb8, 0x86,
  0xd4, 0x2b, 0x08, 0x96, 0x22, 0xd3, 0x6f, 0x06, 0xdc, 0xf9, 0x12, 0x3f,
  0x6e, 0x55, 0x98, 0x1e, 0xbf, 0xfb, 0xf6, 0xe4, 0xfd, 0xd9, 0xbb, 0xb7,
  0xc7, 0xef, 0x2e, 0x3e, 0xf3, 0xd8, 0x5d, 0xac, 0xaf, 0x43, 0x1d, 0xa6,
  0x17, 0xe4, 0x14, 0x0e, 0xba, 0x41, 0x09, 0x20, 0xf7, 0x57, 0x31, 0xeb,
  0x94, 0x7f, 0x8d, 0xfc, 0xe1, 0xbc, 0x87, 0xd4, 0xb3, 0x4f, 0x89, 0x24,

  0x2b, 0x72, 0xec, 0xcc, 0x28, 0xaa, 0x3a, 0xe2, 0x58, 0x80, 0xed, 0x1d,
  0x4c, 0xad, 0x25, 0x6e, 0x09, 0xca, 0x1b, 0xa9, 0xc0, 0xd4, 0x27, 0xf6,
  0x33, 0xbb, 0x25, 0x1c, 0x05, 0x74, 0xb1, 0xd2, 0xd6, 0x24, 0x1c, 0x71,
  0x7f, 0xe0, 0x12, 0xd0, 0x78, 0x8f, 0x0a, 0xc5, 0xbe, 0x73, 0x6d, 0xe5,
  0xaf, 0xd2, 0xda, 0xc5, 0x5e, 0xc4, 0x71, 0xe3, 0x03, 0xd5, 0x78, 0xb8,
  0xc0, 0x5e, 0x9b, 0xe3, 0x2e, 0x16, 0xb0, 0xb7, 0x8a, 0xbf, 0xaa, 0xb7,
  0xe8, 0xf9, 0xde, 0xde, 0x8f, 0xe8, 0xaf, 0xfd, 0x27, 0x69, 0xb0, 0x1d,
  0x42, 0xa0, 0xd6, 0xde, 0x44, 0x84, 0xe3, 0x7a, 0xd5, 0x85, 0x44, 0xb7,
  0x76, 0x3b, 0xe1, 0x06, 0xfe, 0x78, 0xfe, 0xfe, 0xec, 0xfb, 0xbf, 0xfc,
  0xc2, 0x9f, 0xf0, 0x92, 0xcd, 0xfe, 0x4a, 0x39, 0x98, 0x3a, 0xf8, 0x8f,
  0x3f, 0xeb, 0x6b, 0x1b, 0x3f, 0xd7, 0x1e, 0x7f, 0x20, 0xa1, 0x76, 0x79,
  0x23, 0x08, 0x9c, 0xa3, 0x70, 0x9b, 0xfb, 0x5e, 0x69, 0x19, 0xb7, 0xf3,
  0x70, 0xd8, 0x44, 0x20, 0x96, 0x6f, 0x75, 0x07, 0xcb, 0x23, 0x74, 0xc8,
  0x02, 0x9a, 0x06, 0x15, 0xc5, 0x2e, 0x83, 0x77, 0x20, 0x65, 0xe5, 0x54,
  0x37, 0x3e, 0x40, 0x3d, 0x32, 0x32, 0x52, 0xed, 0x7e, 0xbc, 0x3c, 0x3d,
  0xfd, 0xf9, 0x9b, 0xa0, 0x1d, 0x98, 0xda, 0xdb, 0x80, 0x36, 0xc5, 0x76,
  0x41, 0x43, 0xab, 0xa3, 0xea, 0x15, 0xd8, 0x84, 0x44, 0xfb, 0xee, 0x4c,
  0x66, 0xf3, 0x02, 0xca, 0xf1, 0xb0, 0xce, 0x8c, 0x4a, 0x9b, 0x52, 0xc4,
  0x5f, 0x81, 0xc5, 0x69, 0x62, 0xf5, 0x1e, 0x27, 0x4e, 0x06, 0x48, 0xe7,
  0xfe, 0x43, 0x9c, 0x55, 0xc9, 0xfb, 0xc9, 0x45, 0x71, 0x28, 0x5b, 0x28,
  0x2d, 0x2a, 0x11, 0x77, 0x4b, 0x97, 0x86, 0xdd, 0xf3, 0x58, 0x43, 0x66,
  0xc6, 0x87, 0x20, 0x79, 0x5b, 0xe5, 0xf5, 0x27, 0x14, 0x75, 0xd0, 0x0d,
  0x85, 0x86, 0xa4, 0x35, 0xfc, 0xa4, 0xf2, 0x62, 0x4e, 0x02, 0x32, 0xe2,
  0xea, 0xe9, 0xf2, 0x3a, 0x36, 0x3b, 0x12, 0xba, 0x29, 0x8b, 0x62, 0x72,
  0xa3, 0xb2, 0x13, 0x3a, 0x6d, 0x15, 0x77, 0x09, 0x3e, 0x3b, 0x67, 0x50,
  0xd5, 0x16, 0x66, 0x20, 0x56, 0x96, 0x3e, 0xd0, 0x72, 0x63, 0x7a, 0x80,
  0x3f, 0xdd, 0xd4, 0xd9, 0x62, 0xde, 0x53, 0x61, 0xef, 0x33, 0x0c, 0xc7,
  0x31, 0xb4, 0xc8, 0xdf, 0xf6, 0x8c, 0x77, 0x04, 0x4e, 0x60, 0x1c, 0x88,
  0x2c, 0x84, 0xfe, 0x3a, 0xa1, 0x44, 0x57, 0x12, 0x7d, 0x8b, 0x14, 0x03,
  0x21, 0x09, 0x8d, 0xe3, 0x0b, 0x36, 0x22, 0x7d, 0x5c, 0xcf, 0xf6, 0x8b,
  0x59, 0x58, 0x30, 0x65, 0x58, 0x92, 0x8f, 0xdf, 0xa1, 0x39, 0x79, 0xc3,
  0xdb, 0x44, 0x81, 0x43, 0xf8, 0xa4, 0x5a, 0xcf, 0xc8, 0x6f, 0x1e, 0x32,
  0x5c, 0x0a, 0xcf, 0x57, 0xa6, 0x74, 0x9b, 0x34, 0x94, 0xdb, 0xdb, 0x24,
  0x12, 0xd9, 0x10, 0xc4, 0x22, 0x3a, 0xd9, 0x58, 0x9d, 0x84, 0x37, 0xf1,
  0x70, 0xe4, 0x07, 0xcc, 0x34, 0x12, 0x1b, 0x36, 0x8f, 0x91, 0x13, 0x9e,
  0x11, 0x64, 0xfc, 0xf1, 0xec, 0x44, 0x01, 0xc4, 0xc9, 0xb3, 0x64, 0x3d,
  0x4e, 0xa1, 0xb4, 0xb2, 0x58, 0x10, 0x2e, 0x9e, 0xbe, 0x04, 0x82, 0x43,
  0x31, 0x08, 0x2e, 0x84, 0xdc, 0x88, 0x56, 0x55, 0xbb, 0x96, 0x0e, 0xb9,
  0x58, 0x3b, 0xa2, 0x2d, 0x41, 0x2d, 0x2f, 0xf2, 0xf8, 0x05, 0x44, 0x11,
  0xa1, 0x12, 0x5b, 0x75, 0x20, 0xb5, 0xb2, 0xa8, 0xae, 0x9b, 0x68, 0x95,
  0xb1, 0x6d, 0xc8, 0x68, 0x44, 0xe0, 0xa2, 0xac, 0x63, 0x70, 0x9a, 0x13,
  0x4a, 0x9b, 0xcf, 0xd0, 0x8a, 0x87, 0xaf, 0xbc, 0xf9, 0xef, 0xc5, 0xd9,
  0xab, 0xb3, 0x53, 0xf3, 0x97, 0xe3, 0x37, 0x27, 0xdf, 0x3b, 0xad, 0x40,
  0x3a, 0x67, 0xd9, 0xda, 0x34, 0x8e, 0x9f, 0x03, 0x7a, 0xf1, 0xe9, 0xa0,
  0xc5, 0x8e, 0x39, 0x09, 0x91, 0xf2, 0x0f, 0x5b, 0xc2, 0xbc, 0xdd, 0x5f,
  0xd2, 0xe3, 0x73, 0x24, 0xa7, 0x29, 0x63, 0xd4, 0xc3, 0x1f, 0x49, 0x05,
  0x7a, 0x89, 0xb4, 0x68, 0x1e, 0xd5, 0xd6, 0x52, 0xb8, 0x4d, 0x3e, 0x69,
  0xb1, 0x38, 0x68, 0x56, 0xbe, 0xe6, 0xd0, 0x66, 0x8e, 0x3c, 0x29, 0x24,
  0x61, 0xe4, 0x73, 0x2d, 0x9e, 0x6d, 0xfc, 0x1e, 0xe8, 0x5a, 0x53, 0x25,
  0x5d, 0x67, 0x28, 0x83, 0xc7, 0x47, 0xb5, 0x2f, 0xb2, 0x81, 0xb7, 0x48,
  0x55, 0x78, 0x9b, 0x2a, 0x03, 0x63, 0x44, 0x5e, 0x53, 0x0b, 0xe5, 0xa3,
  0x43, 0x11, 0x44, 0x0a, 0x6e, 0xb8, 0xf6, 0x9a, 0x64, 0x03, 0x24, 0x95,
  0x0f, 0xb9, 0x15, 0xa4, 0xc8, 0x7b, 0x10, 0x3f, 0x42, 0xad, 0xd1, 0x72,
  0x41, 0x2e, 0x53, 0xa2, 0x3f, 0xdc, 0x24, 0x94, 0xa5, 0xd2, 0x57, 0x6d,
  0x33, 0x17, 0x6c, 0x97, 0x06, 0xa5, 0x56, 0xa1, 0x69, 0x45, 0x67, 0x20,
  0xca, 0x7e, 0x5b, 0xe3, 0xa8, 0x37, 0x7c, 0x3a, 0xdc, 0x80, 0x20, 0xeb,
  0x9a, 0xb2, 0xbe, 0xeb, 0x47, 0x9b, 0xc6, 0x20, 0x8d, 0xf0, 0xef, 0xeb,
  0xfc, 0x3a, 0x45, 0x6d, 0x99, 0xb9, 0x2a, 0xc3, 0x21, 0xbf, 0xd4, 0x19,
  0x23, 0xfd, 0x59, 0x83, 0xa4, 0xed, 0x51, 0x1e, 0xff, 0x9c, 0x41, 0x1e,
  0x77, 0xc6, 0xb8, 0xfa, 0x59, 0x83, 0x0c, 0x55, 0x40, 0x18, 0xc5, 0xf8,
  0xfb, 0x93, 0x8b, 0xe4, 0xd5, 0xd9, 0x6b, 0x77, 0xc1, 0x2e, 0x24, 0x1f,

  0x90, 0x48, 0x20, 0x99, 0xac, 0x0b, 0x43, 0x83, 0xd4, 0x2f, 0xc9, 0x36,
  0xa0, 0xe0, 0x3c, 0x45, 0x4a, 0xc2, 0xd1, 0x6e, 0xf6, 0x59, 0x5e, 0x31,
  0x1c, 0x11, 0x25, 0xd6, 0xc0, 0x7b, 0xe3, 0xd5, 0xe8, 0xd2, 0xc3, 0x4b,
  0x02, 0x3a, 0xba, 0x54, 0xf9, 0x4b, 0x37, 0x92, 0xb0, 0xee, 0xd2, 0x4a,
  0x4b, 0x4a, 0x27, 0x29, 0xe1, 0x19, 0x15, 0x5c, 0x1b, 0x49, 0x45, 0x29,
  0x21, 0xf4, 0xb0, 0x0e, 0xe7, 0x23, 0x10, 0x1b, 0xdd, 0x39, 0x6f, 0x74,
  0x26, 0x7e, 0x26, 0xe1, 0x81, 0xe6, 0xfa, 0xb7, 0x28, 0x5d, 0x1a, 0xd0,
  0x41, 0xf8, 0x51, 0x52, 0x37, 0x12, 0x5d, 0xc0, 0x47, 0xa4, 0xed, 0xa2,
  0x9a, 0x2f, 0xdc, 0x86, 0x3a, 0x90, 0xd8, 0x76, 0x08, 0xfb, 0x9d, 0x43,
  0x09, 0x25, 0x18, 0x15, 0x9d, 0xbd, 0x06, 0x92, 0x57, 0x96, 0xff, 0xc3,
  0x53, 0xd0, 0x8f, 0xac, 0x3e, 0x66, 0x56, 0xbe, 0x40, 0x67, 0xe7, 0x19,
  0xdf, 0x88, 0xfa, 0xce, 0x08, 0xf5, 0x5b, 0x18, 0xe4, 0x64, 0x3d, 0x09,
  0xa2, 0x93, 0x7b, 0xf3, 0x91, 0x68, 0x65, 0x16, 0x36, 0xaa, 0xac, 0xac,
  0x3d, 0xaa, 0x96, 0xbc, 0xf3, 0x58, 0x68, 0x85, 0x34, 0x43, 0xd9, 0x66,
  0x75, 0x8e, 0x70, 0x58, 0x78, 0xbd, 0x24, 0x66, 0xa9, 0x5f, 0xd5, 0x8a,

  0x6b, 0x41, 0xe0, 0xf6, 0x3a, 0x09, 0x5a, 0xb4, 0x1f, 0xf3, 0x29, 0xec,
  0xd7, 0x90, 0xbb, 0x28, 0x05, 0x75, 0xe9, 0xae, 0x02, 0x53, 0x6d, 0x8e,

  0x59, 0x89, 0x0d, 0x1c, 0x20, 0x95, 0x97, 0x9a, 0xde, 0xa7, 0x04, 0xf6,
  0x80, 0xde, 0x85, 0x69, 0xc1, 0x95, 0x86, 0x7a, 0x02, 0xf1, 0x9a, 0x3b,
  0x57, 0xf3, 0xf4, 0x98, 0xff, 0x78, 0xa5, 0x3a, 0x9b, 0xd6, 0x0d, 0x25,
  0x56, 0x5d, 0xbb, 0xb0, 0x70, 0x16, 0x62, 0xe2, 0x90, 0x78, 0x9b, 0x42,
  0x0e, 0x71, 0x1d, 0x41, 0x64, 0x13, 0xea, 0x8e, 0x8f, 0xf3, 0x49, 0xe7,
  0x2b, 0xfa, 0x11, 0x46, 0x74, 0x72, 0x5f, 0xf0, 0x7d, 0xf2, 0xba, 0x83,
  0xf2, 0xac, 0x37, 0xda, 0xd3, 0x2e, 0x5d, 0x78, 0x9e, 0x7d, 0x8c, 0x68,
  0x9f, 0xfc, 0x5c, 0x7c, 0x11, 0x19, 0x15, 0x2d, 0x8a, 0xe6, 0x5c, 0x65,
  0xab, 0x85, 0xf0, 0x4c, 0xf9, 0x09, 0x42, 0xc7, 0xf0, 0x27, 0x60, 0x97,
  0xa7, 0x3a, 0x4b, 0xa3, 0x0e, 0xfb, 0xa6, 0xe0, 0x33, 0xf9, 0xac, 0xe1,

  0xbb, 0xac, 0x39, 0x10, 0xea, 0x46, 0x6e, 0xa9, 0x4d, 0x7a, 0xa1, 0xe3,
  0x47, 0x94, 0xde, 0x68, 0x64, 0x53, 0x69, 0xff, 0xad, 0x6f, 0x84, 0x48,
  0x77, 0x2c, 0xbe, 0x9c, 0x2f, 0x19, 0xeb, 0x5d, 0x57, 0x5c, 0xb6, 0xeb,
  0xd0, 0x1d, 0x15, 0x6e, 0x9d, 0x17, 0x5c, 0x11, 0x22, 0xdf, 0x28, 0x79,
  0x5b, 0x06, 0xe8, 0x93, 0xe5, 0xbc, 0x91, 0xca, 0x7b, 0xca, 0x4c, 0xe4,
  0xdd, 0xb9, 0x4a, 0x8b, 0x4b, 0x46, 0x14, 0xf4, 0x06, 0x04, 0x89, 0x5b,
  0x61, 0x68, 0xae, 0x3a, 0xd4, 0x97, 0x22, 0x32, 0xbb, 0x2e, 0x1e, 0xfa,
  0xc1, 0xbe, 0xdd, 0x07, 0xe9, 0x94, 0x85, 0xf2, 0x14, 0xda, 0x88, 0xef,
  0x00, 0x4b, 0x78, 0x93, 0x72, 0x2b, 0x5d, 0xed, 0x37, 0xef, 0x4c, 0x16,
  0x3d, 0x28, 0x0a, 0xac, 0x85, 0x79, 0xd2, 0xc8, 0xdf, 0x49, 0xd9, 0xa9,
  0xc6, 0x99, 0x9e, 0x5c, 0xde, 0x28, 0xd2, 0x6a, 0x00, 0x33, 0xdc, 0xb2,
  0x47, 0x0e, 0xb3, 0x42, 0xbb, 0xa6, 0xca, 0x98, 0x1e, 0x8f, 0x0c, 0xc1,
  0x56, 0x79, 0xd9, 0x1c, 0x0e, 0x34, 0xc4, 0x5b, 0xcf, 0x81, 0x5b, 0xcf,
  0x0d, 0x28, 0xe5, 0xfc, 0xe5, 0x78, 0xac, 0x74, 0xf2, 0x2a, 0x24, 0x09,


  0xf1, 0x59, 0x12, 0x9a, 0x85, 0x02, 0x3a, 0x85, 0xaa, 0xa2, 0x8c, 0xd1,
  0x49, 0x32, 0x38, 0x60, 0x9e, 0xf6, 0x9a, 0x19, 0x73, 0x7c, 0xb9, 0x37,

  0xad, 0x4d, 0x64, 0x0f, 0x76, 0x07, 0x05, 0xe4, 0xb3, 0x68, 0xba, 0x0a,
  0xc7, 0x2b, 0x69, 0x9b, 0x51, 0x8e, 0xac, 0x3c, 0x9e, 0x74, 0x43, 0xc3,
  0x77, 0xf2, 0x56, 0xcf, 0xc2, 0x83, 0xa3, 0xc8, 0xa2, 0xbf, 0xe5, 0x55,
  0x0d, 0xfe, 0x95, 0x45, 0x7f, 0x1b, 0x59, 0xf4, 0x23, 0xfb, 0x2d, 0xfe,
  0xd4, 0xe1, 0xe1, 0x53, 0xa9, 0xaa, 0x60, 0x1f, 0x1d, 0x15, 0xfd, 0x5b,
  0x06, 0xc4, 0x5f, 0xe3, 0x15, 0x9b, 0x07, 0x87, 0x5c, 0x7f, 0x10, 0x7e,
  0xcb, 0xbb, 0xbc, 0xde, 0xa7, 0x1e, 0xbb, 0x65, 0x19, 0xd5, 0x9b, 0xc6,
  0x23, 0xad, 0x9e, 0xf9, 0x4c, 0xc0, 0x7e, 0xd4, 0x98, 0x23, 0x3d, 0xfc,

  0x86, 0x32, 0xa8, 0x9a, 0x78, 0xea, 0xaf, 0x4e, 0xc3, 0xfb, 0xce, 0x13,
  0xeb, 0x46, 0xd9, 0x3b, 0xd4, 0x10, 0xfa, 0x4b, 0xf0, 0xe2, 0x45, 0xb6,
  0xe4, 0x7e, 0x0d, 0x19, 0x81, 0xf5, 0x38, 0x0f, 0x20, 0xd7, 0xdc, 0xcd,
  0xab, 0x14, 0x68, 0xcb, 0x8b, 0xf4, 0x2e, 0x02, 0xb6, 0x25, 0x9e, 0x62,
  0x36, 0x57, 0xcc, 0xfd, 0xbc, 0xcc, 0x0a, 0xb2, 0x14, 0xa0, 0x08, 0x88,
  0xdb, 0x8c, 0xfc, 0xb0, 0x88, 0x9a, 0xcf, 0xad, 0xab, 0x56, 0xbe, 0x1a,
  0xc0, 0x01, 0xd4, 0xd2, 0xc0, 0x90, 0xef, 0x8c, 0x68, 0x09, 0x71, 0x6c,
  0xb8, 0x83, 0xa7, 0x76, 0xdf, 0xec, 0x49, 0x90, 0x67, 0x8b, 0x31, 0x42,
  0xbc, 0xad, 0x53, 0x66, 0xa2, 0x01, 0x01, 0xe9, 0xa3, 0x83, 0x28, 0x5d,
  0x1e, 0x5a, 0xcd, 0x95, 0xa7, 0x20, 0x1e, 0x30, 0x37, 0x3e, 0x27, 0x5e,
  0x27, 0x80, 0xbb, 0xa3, 0xe4, 0x0c, 0x5e, 0xb8, 0x16, 0xc8, 0x38, 0x57,
  0x02, 0xa5, 0xae, 0x68, 0xb4, 0x4d, 0xb8, 0xcf, 0xbc, 0x13, 0xd6, 0x59,
  0x69, 0xf6, 0xcb, 0x9e, 0xb0, 0x59, 0x07, 0xc1, 0xa4, 0xbe, 0xe6, 0x2c,
  0x79, 0x7f, 0x7c, 0xf1, 0x1e, 0x81, 0x5e, 0x62, 0x00, 0x01, 0x48, 0x6a,
  0x5a, 0xed, 0x5a, 0x90, 0x20, 0xe1, 0x66, 0x4e, 0x0f, 0x71, 0x0c, 0x82,
  0xf1, 0xcb, 0xec, 0x79, 0xf3, 0x3f, 0xf5, 0x3d, 0xae, 0x7e, 0xc9, 0xb4,
  0xd6, 0xc4, 0x85, 0x74, 0xda, 0xc8, 0x6a, 0x87, 0x87, 0x2e, 0x0b, 0x09,
  0xbd, 0x8d, 0x59, 0xca, 0x49, 0x26, 0xf9, 0x48, 0x92, 0x36, 0xb5, 0xfa,
  0x42, 0x5b, 0x09, 0xd0, 0x43, 0x9c, 0x8c, 0x5d, 0x56, 0x31, 0xbd, 0x43,
  0x3e, 0x6d, 0x15, 0x00, 0x99, 0x84, 0x5f, 0x98, 0xc0, 0xd5, 0xe0, 0x1e,
  0x07, 0xe5, 0x1a, 0xc0, 0x47, 0xfb, 0xfb, 0x61, 0xde, 0x70, 0x3a, 0x31,
  0x4c, 0x55, 0xb4, 0x39, 0xa9, 0xea, 0xc1, 0x2b, 0xec, 0x35, 0x85, 0x7a,
  0x59, 0x93, 0xad, 0x31, 0x9c, 0x93, 0x1b, 0x93, 0x76, 0x2c, 0x34, 0x2a,

  0x0e, 0x99, 0xc7, 0x7c, 0x87, 0x32, 0x23, 0xd9, 0xb3, 0x36, 0x67, 0xe1,
  0x0a, 0x24, 0xed, 0x9d, 0x9b, 0x6a, 0x92, 0x31, 0x6a, 0x82, 0xc5, 0xfb,
  0x1d, 0xcc, 0x2c, 0xe0, 0xdf, 0x87, 0x8f, 0x23, 0x14, 0x91, 0x8c, 0x2f,


  0xce, 0xde, 0x2b, 0xf6, 0x7e, 0x28, 0x9f, 0x91, 0xf9, 0x40, 0x4f, 0x58,

  0xa8, 0x95, 0x41, 0x08, 0xb9, 0x33, 0xb3, 0xf8, 0x00, 0x16, 0xc6, 0xd4,
  0xfb, 0x2a, 0x73, 0x00, 0xb4, 0xd0, 0x93, 0xb5, 0x7d, 0x2b, 0x80, 0x00,
  0x0a, 0xd9, 0xab, 0xf7, 0xd2, 0x7b, 0x89, 0xaf, 0xd9, 0x19, 0xdf, 0x5f,
  0xae, 0x5f, 0x27, 0x3a, 0x92, 0x4a, 0x76, 0x42, 0xfc, 0x95, 0x74, 0x58,
  0xdb, 0xe9, 0xb3, 0x4b, 0x8b, 0x7c, 0x89, 0xce, 0x1c, 0x24, 0x33, 0x73,
  0x78, 0x59, 0xa4, 0xb5, 0x8c, 0xd1, 0x6d, 0x96, 0xf8, 0x04, 0x43, 0x16,
  0x4b, 0x62, 0x53, 0xca, 0xbe, 0xb0, 0x69, 0x00, 0xeb, 0x5e, 0x56, 0x0a,
  0xd2, 0x2a, 0x82, 0x53, 0x8d, 0x05, 0xa7, 0x67, 0x7b, 0x52, 0xff, 0xfc,
  0xec, 0xfd, 0x45, 0x62, 0x85, 0x3e, 0xbe, 0x8c, 0x1f, 0x75, 0x2e, 0x10,
  0xb5, 0x4c, 0x81, 0xcf, 0xce, 0x95, 0x6d, 0x04, 0x0e, 0x49, 0xb1, 0x09,
  0x9a, 0xce, 0x10, 0x03, 0xb4, 0xd9, 0x9b, 0x95, 0x8c, 0xe5, 0xe3, 0xc2,

  0x8f, 0x82, 0xd2, 0x05, 0x39, 0xd3, 0x87, 0x0c, 0xe6, 0x94, 0xdb, 0xa3,
  0x83, 0x08, 0x65, 0x90, 0x15, 0xfd, 0xfe, 0x78, 0x7c, 0xc1, 0x3b, 0x46,
  0x7f, 0x0b, 0xe6, 0xcd, 0x05, 0xa2, 0xf2, 0xc3, 0xc0, 0x50, 0xb1, 0x94,
  0x41, 0x09, 0x68, 0xc6, 0xda, 0xc0, 0xf8, 0xb6, 0xc0, 0xdd, 0xdb, 0xb1,
  0x23, 0x2f, 0xdb, 0x10, 0x5c, 0x53, 0xe8, 0x04, 0x17, 0x1c, 0x3f, 0xd8,
  0x92, 0x8f, 0x6c, 0x19, 0xc5, 0x8c, 0x2f, 0x44, 0x0b, 0x7e, 0xfd, 0xe8,
  0x91, 0xc7, 0x29, 0x48, 0x4e, 0xc9, 0x00, 0x27, 0xda, 0x26, 0x97, 0x7e,
  0x38, 0x54, 0x52, 0x81, 0xb0, 0x60, 0xa2, 0xe0, 0xe7, 0xdc, 0x38, 0x8f,
  0xa5, 0x44, 0xfd, 0xd4, 0xaa, 0x0a, 0xde, 0x54, 0xe8, 0xc7, 0x9a, 0xf1,
  0x03, 0xb5, 0xad, 0x43, 0x72, 0x47, 0x4c, 0xe9, 0x7f, 0x36, 0x84, 0x6e,
  0xb3, 0x16, 0x79, 0xe9, 0xbe, 0x5c, 0x30, 0xba, 0x56, 0x5e, 0xac, 0x33,
  0xe8, 0x68, 0x69, 0xb5, 0xa0, 0x56, 0x0f, 0x86, 0x87, 0x54, 0x52, 0x40,
  0x76, 0x53, 0xc4, 0x60, 0xa9, 0xbd, 0x6f, 0x88, 0xfc, 0x39, 0x39, 0x3d,
  0x76, 0x27, 0xc5, 0x7d, 0x22, 0x70, 0x83, 0x9d, 0xae, 0x4f, 0xad, 0xed,
  0xad, 0x98, 0x18, 0x25, 0xe7, 0xd4, 0xb3, 0x1c, 0x7a, 0x53, 0xfd, 0xef,
  0x6e, 0x34, 0xbe, 0x24, 0xf0, 0xc0, 0x1b, 0xb1, 0x09, 0x33, 0x25, 0x2f,
  0xcc, 0xc1, 0xe2, 0x27, 0xf4, 0x57, 0x0f, 0xd3, 0x3c, 0x58, 0xee, 0x33,
  0xf7, 0x72, 0x6d, 0x96, 0x62, 0x0c, 0xf4, 0xee, 0x23, 0x8f, 0x84, 0xae,
  0x8c, 0xf5, 0x8e, 0x21, 0x2c, 0x6f, 0xa6, 0xbb, 0x2c, 0xad, 0x62, 0x66,
  0x3c, 0xc2, 0x5c, 0x9f, 0x69, 0xf1, 0x70, 0x6f, 0x28, 0x16, 0x06, 0x2f,

  0x27, 0xb6, 0x81, 0x10, 0xa5, 0x09, 0x93, 0x22, 0x67, 0xc6, 0x2a, 0x88,
  0xd3, 0x2e, 0x6c, 0xae, 0xbd, 0x0d, 0x03, 0x13, 0xaf, 0x9c, 0xe8, 0xb5,
  0xa1, 0x95, 0x74, 0x37, 0xb7, 0xd3, 0x80, 0xfd, 0x11, 0x53, 0xa2, 0x25,
  0x1b, 0x2b, 0xbf, 0x5a, 0xb3, 0x93, 0xfc, 0x64, 0x01, 0xbd, 0x23, 0xa7,
  0x01, 0xc5, 0x03, 0x8c, 0x80, 0xf7, 0x95, 0xff, 0x47, 0x8f, 0xdd, 0x50,
  0x73, 0xaa, 0xe9, 0xb4, 0x63, 0x39, 0xde, 0x63, 0xbb, 0x48, 0x30, 0x02,
  0x03, 0x1e, 0x13, 0x8b, 0x91, 0x9b, 0x75, 0x4f, 0x22, 0xe8, 0x6f, 0xfe,

  0x9e, 0x3c, 0x15, 0xd3, 0x97, 0x6c, 0xdf, 0xe2, 0xce, 0xe5, 0xde, 0x4b,
  0xd3, 0x6e, 0xf6, 0x9b, 0x71, 0xa3, 0x1a, 0xf9, 0x8d, 0x80, 0x30, 0x5e,
  0x89, 0x5f, 0x86, 0x5a, 0x51, 0x05, 0x88, 0x8b, 0xeb, 0xa5, 0xe4, 0xf0,
  0x7a, 0x5f, 0xfa, 0x5c, 0x3c, 0x19, 0x54, 0x79, 0x6e, 0xf1, 0x1a, 0x3d,
  0x2e, 0x5a, 0xaa, 0xc5, 0x6c, 0x61, 0x8c, 0x0c, 0xf1, 0x20, 0xb7, 0xd4,
  0xd6, 0xba, 0x87, 0x18, 0x7b, 0x84, 0x5d, 0x06, 0x51, 0x2c, 0xea, 0xae,
  0x3a, 0x15, 0x4a, 0x0f, 0xfa, 0x8a, 0x36, 0x5c, 0x9e, 0xe3, 0x5f, 0x29,
  0x40, 0x4a, 0xe8, 0x12, 0xaf, 0xb2, 0xbf, 0x41, 0x91, 0x74, 0xfd, 0x5a,
  0x35, 0xa6, 0x9c, 0x16, 0xeb, 0xd4, 0xb3, 0xe5, 0x1f, 0x3d, 0x13, 0x0f,


  0x95, 0xb8, 0x41, 0x28, 0xac, 0x5e, 0x64, 0x4d, 0x10, 0x5e, 0x7c, 0x7c,
  0x60, 0x7d, 0x95, 0x94, 0x31, 0x2b, 0x75, 0x20, 0x7e, 0xde, 0xac, 0x61,
  0x6e, 0xe3, 0xf1, 0xd7, 0xc9, 0xdb, 0xd7, 0x8f, 0x29, 0x9d, 0xe7, 0x32,
  0xab, 0x56, 0x15, 0xa5, 0x70, 0x2a, 0x0d, 0x9f, 0x7d, 0xe3, 0x0d, 0x76,
  0xe8, 0x1c, 0x9f, 0x22, 0x62, 0x73, 0xb9, 0xbd, 0x64, 0x2b, 0x98, 0xf3,
  0xa3, 0xba, 0xe7, 0x4b, 0x45, 0x46, 0x60, 0xef, 0x17, 0xa0, 0x17, 0x04,
  0xac, 0x8a, 0x95, 0x96, 0xcf, 0xba, 0x49, 0xe1, 0x2d, 0x06, 0xf6, 0xf8,
  0xc8, 0x31, 0xb0, 0xea, 0x6e, 0x45, 0x9d, 0x55, 0x8a, 0x4b, 0xb2, 0x0b,

  0x22, 0x37, 0xea, 0x31, 0x33, 0xcd, 0x57, 0x7c, 0xef, 0x49, 0x89, 0x0d,

  0x5f, 0x83, 0x7a, 0x0e, 0x7f, 0xa9, 0xf7, 0xde, 0x63, 0xdf, 0xab, 0x50,
  0x4b, 0x6f, 0x34, 0x69, 0x89, 0x01, 0x1d, 0xc5, 0x7b, 0xf6, 0x89, 0x7d,
  0x96, 0x1c, 0x47, 0x79, 0xe1, 0xb5, 0x30, 0xea, 0x79, 0x43, 0x94, 0x5f,
  0x35, 0x10, 0x34, 0x92, 0xc3, 0x1a, 0x8f, 0xb7, 0xf7, 0xde, 0x2b, 0xcf,
  0xda, 0x4e, 0x13, 0xf4, 0x0f, 0xb0, 0xa4, 0x89, 0x45, 0xa1, 0xb3, 0xac,
  0xe7, 0x66, 0x61, 0x19, 0x7d, 0x4e, 0x69, 0xd0, 0xad, 0xf3, 0x54, 0x26,
  0x98, 0xf9, 0x18, 0x22, 0x7a, 0xd7, 0x99, 0xf6, 0x5f, 0xbd, 0xec, 0x2b,
  0x02, 0x02, 0xb5, 0x7b, 0x1f, 0x39, 0x90, 0x3b, 0x43, 0x7d, 0xa9, 0x2f,
  0x8b, 0xfc, 0x1f, 0x0a, 0x5f, 0x40, 0x02, 0x5a, 0xdb, 0x4f, 0x79, 0x8f,
  0x1f, 0x0a, 0xc3, 0xe0, 0xde, 0xc3, 0x60, 0x8a, 0x14, 0x3c, 0x75, 0x0f,
  0x1c, 0x09, 0xd5, 0x72, 0xf7, 0x38, 0x68, 0xff, 0x94, 0x84, 0x8f, 0xd0,
  0x7d, 0xd6, 0x4a, 0xab, 0x7f, 0xf2, 0x48, 0x74, 0x2e, 0x55, 0x8e, 0x49,

  0xf2, 0xd2, 0x46, 0x2c, 0x00, 0xc9, 0xd8, 0x65, 0xd3, 0x4f, 0x44, 0xec,
  0xc9, 0x51, 0x4a, 0xaf, 0xf5, 0xd4, 0x35, 0xf3, 0xa2, 0xbf, 0xde, 0xe4,
  0x85, 0xa4, 0xba, 0x07, 0xaf, 0x3f, 0xe9, 0x71, 0x3f, 0xd6, 0x2c, 0x33,
  0x8f, 0x41, 0x4b, 0xde, 0xf3, 0x4f, 0xed, 0x4d, 0xf0, 0xc0, 0x3d, 0x15,
  0xc8, 0x70, 0xe0, 0x03, 0x96, 0xea, 0x45, 0x12, 0xff, 0x49, 0xa6, 0x9d,
  0x0e, 0x22, 0xc8, 0xf2, 0x73, 0xfb, 0xf9, 0x45, 0x79, 0x99, 0xf8, 0x98,
  0x2c, 0x4f, 0x98, 0xa4, 0xde, 0xa0, 0x5d, 0x85, 0xb3, 0x0e, 0x8a, 0xe4,
  0xc2, 0x2b, 0x93, 0x75, 0x4f, 0x3f, 0x13, 0xda, 0x50, 0x79, 0x69, 0x8d,
  0xd5, 0xbe, 0x37, 0x9e, 0xee, 0xfb, 0xca, 0xea, 0x8c, 0xa2, 0xb2, 0x5c,
  0xc6, 0xdf, 0xfb, 0x02, 0x53, 0xc6, 0x89, 0x11, 0x23, 0x97, 0x86, 0xa8,
  0xf1, 0x8c, 0x83, 0x32, 0x74, 0x8f, 0x1d, 0xb6, 0x98, 0xee, 0x85, 0xaf,
  0x3e, 0x25, 0x27, 0xaf, 0xbd, 0x07, 0x8f, 0xdc, 0x02, 0xd3, 0x05, 0x69,
  0x03, 0x77, 0xec, 0xa8, 0xaa, 0x93, 0x1d, 0x7a, 0xcb, 0xc3, 0x2c, 0x79,
  0xca, 0x94, 0xf1, 0xae, 0x64, 0xd0, 0x2d, 0xec, 0x7f, 0xf0, 0x0c, 0x93,
  0xc3, 0xab, 0x2b, 0x23, 0xd5, 0xa6, 0x0d, 0x72, 0x42, 0x0b, 0x8d, 0x70,
  0x75, 0xcf, 0xfe, 0xe9, 0x93, 0x0d, 0xcf, 0x8a, 0xd0, 0xac, 0xad, 0xa8,
  0xf7, 0xde, 0x7b, 0x1a, 0x5e, 0x73, 0x35, 0x07, 0xb4, 0x4a, 0x41, 0x6e,
  0x5a, 0xb2, 0x43, 0xe5, 0xd1, 0xff, 0xae, 0x9e, 0xc1, 0x8a, 0xf0, 0x04,
  0xeb, 0x7f, 0xf7, 0xe7, 0xfb, 0xb9, 0x5f, 0xc3, 0xc7, 0x3e, 0xc1, 0x2a,
  0x43, 0x98, 0x60, 0xda, 0x6a, 0x17, 0xe1, 0x32, 0x84, 0xb0, 0x3b, 0xde,
  0x08, 0x7c, 0xe6, 0x46, 0x8f, 0x58, 0x17, 0x8e, 0x73, 0xb0, 0x01, 0x28,
  0x58, 0x04, 0x33, 0x1f, 0x77, 0x92, 0x78, 0xbe, 0x78, 0xa1, 0x3c, 0x1f,
  0xea, 0x7e, 0xe7, 0x1a, 0xd4, 0x57, 0x6b, 0xb6, 0xb8, 0xed, 0x8a, 0x9c,
  0x83, 0xcd, 0x7b, 0xed, 0xd0, 0x71, 0x2f, 0x11, 0xfb, 0x5c, 0x70, 0xf2,
  0x8a, 0xa2, 0xc0, 0x6c, 0x96, 0xdb, 0x26, 0x02, 0x70, 0x8f, 0x57, 0x25,
  0xfb, 0x0c, 0x09, 0x6c, 0x63, 0x27, 0x8d, 0xa7, 0x66, 0x4a, 0x12, 0xb9,
  0xf7, 0x19, 0x51, 0x6d, 0x28, 0xc5, 0xc9, 0x9c, 0xd2, 0x55, 0x36, 0xfd,
  0xa4, 0x57, 0xc6, 0x8e, 0x11, 0x79, 0xeb, 0x91, 0xdd, 0x5a, 0xa2, 0xbe,
  0xf3, 0xf7, 0xc7, 0x5d, 0x23, 0xc0, 0x3d, 0xca, 0x54, 0xf3, 0xfe, 0x62,
  0x7c, 0xfe, 0x9c, 0xe6, 0xcb, 0x61, 0x43, 0x73, 0x21, 0x5e, 0x8d, 0xb3,
  0xbf, 0x4b, 0x99, 0x59, 0xed, 0x9e, 0x7e, 0xd2, 0xf3, 0xf4, 0x58, 0x9c,
  0x7b, 0x27, 0x40, 0x6a, 0x36, 0xe7, 0xe0, 0xbf, 0xc4, 0x44, 0xb3, 0x2e,

  0xd4, 0xbf, 0xcf, 0x2e, 0x30, 0x9a, 0x19, 0xb8, 0x21, 0x85, 0x96, 0xdd,
  0xc3, 0x9f, 0x3b, 0x4f, 0xcd, 0xd5, 0xba, 0xf8, 0x64, 0xf5, 0x45, 0xc1,
  0xd1, 0xd3, 0x03, 0x76, 0x2f, 0x3c, 0xd3, 0xab, 0xe1, 0xf9, 0x41, 0x6d,
  0xde, 0xd3, 0x40, 0x3c, 0x14, 0xe2, 0x7a, 0x94, 0x78, 0xa7, 0xe1, 0xaf,
  0x6b, 0x6f, 0x0f, 0x9e, 0xed, 0x5b, 0xf1, 0x2b, 0x88, 0x3c, 0x9f, 0xb2,
  0x3b, 0x47, 0x75, 0x9a, 0x63, 0xb1, 0xca, 0x0b, 0x72, 0x41, 0xb8, 0x47,
  0xdc, 0x00, 0x07, 0x2d, 0x21, 0xd0, 0x55, 0x37, 0xea, 0x26, 0x6d, 0xd6,
  0x9e, 0x88, 0x79, 0xc6, 0xb4, 0x33, 0xa6, 0xa8, 0xe3, 0x52, 0xe8, 0x35,
  0x2f, 0xd4, 0xdb, 0xd6, 0x71, 0xa1, 0xe9, 0x4b, 0xdf, 0x7f, 0xcf, 0x72,


  0xc4, 0x82, 0xc5, 0x49, 0xe8, 0xca, 0x36, 0x7f, 0x32, 0x7c, 0x97, 0x01,
  0x84, 0xe9, 0x0a, 0x23, 0xe0, 0x53, 0x65, 0xd4, 0x9e, 0x52, 0xd1, 0x6f,
  0x70, 0x79, 0x62, 0xd1, 0xf3, 0xb2, 0x90, 0x98, 0x2d, 0x25, 0x6f, 0xc2,
  0xf3, 0xc9, 0x60, 0xd3, 0xec, 0x0b, 0x33, 0x33, 0x78, 0xf9, 0xe1, 0xe2,
  0xeb, 0xb3, 0xf7, 0xe3, 0x64, 0x8f, 0x4a, 0xdb, 0x2f, 0xde, 0x9f, 0xfc,
  0xf9, 0xc3, 0x85, 0xf9, 0xa7, 0x8e, 0xf4, 0x3a, 0x2d, 0x72, 0x23, 0x9d,
  0xcc, 0x72, 0xb2, 0xc2, 0x10, 0xcb, 0xa5, 0x36, 0x69, 0x62, 0xe8, 0x62,
  0x23, 0x8f, 0xcb, 0x4a, 0x11, 0x4d, 0x28, 0x1f, 0xa5, 0x94, 0x13, 0x67,
  0x54, 0xbf, 0x82, 0x33, 0xfc, 0x4a, 0x67, 0x39, 0xe7, 0x9d, 0xa2, 0x7c,
  0x4d, 0xdb, 0x49, 0x2e, 0xbe, 0x7e, 0xf9, 0xee, 0x9b, 0xb1, 0x76, 0xf0,
  0xf8, 0xee, 0xbb, 0xef, 0xba, 0xc1, 0x5d, 0xe8, 0xb1, 0x57, 0xe9, 0xed,
  0xed, 0xa8, 0xce, 0x3e, 0xfb, 0x6c, 0x7c, 0x7c, 0x9c, 0xbc, 0x3c, 0x1d,
  0x9f, 0x7d, 0xe6, 0x70, 0x1c, 0x76, 0x0e, 0x08, 0xc1, 0xea, 0x32, 0x6b,
  0xcc, 0x5f, 0x3e, 0xfb, 0xec, 0xff, 0x03, 0x4d, 0xda, 0xc1, 0xce, 0xef,


  0x98, 0x02, 0x00,
};
#define BUF_SIZE 0x10000
static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
{
  (void) opaque;
  /* not a typo, keep it calloc() */
  return (voidpf) calloc(items, size);
Changes to jni/curl/src/tool_metalink.c.
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986

987
988
989
990
991
992

993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
  if(res == NULL) {
    return;
  }
  Curl_safefree(res->url);
  Curl_safefree(res);
}

static void delete_metalinkfile(metalinkfile *mlfile)
{
  metalink_resource *res;
  if(mlfile == NULL) {
    return;
  }
  Curl_safefree(mlfile->filename);
  delete_metalink_checksum(mlfile->checksum);
  for(res = mlfile->resource; res;) {
    metalink_resource *next;
    next = res->next;
    delete_metalink_resource(res);
    res = next;
  }
  Curl_safefree(mlfile);
}

void clean_metalink(struct OperationConfig *config)
{

  while(config->metalinkfile_list) {
    metalinkfile *mlfile = config->metalinkfile_list;
    config->metalinkfile_list = config->metalinkfile_list->next;
    delete_metalinkfile(mlfile);
  }
  config->metalinkfile_last = 0;

}

void metalink_cleanup(void)
{
#ifdef HAVE_NSS_CONTEXT
  if(nss_context) {
    NSS_ShutdownContext(nss_context);
    nss_context = NULL;
  }
#endif
}

#endif /* USE_METALINK */







|


















>
|
|
|
|
|
|
>













961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
  if(res == NULL) {
    return;
  }
  Curl_safefree(res->url);
  Curl_safefree(res);
}

void delete_metalinkfile(metalinkfile *mlfile)
{
  metalink_resource *res;
  if(mlfile == NULL) {
    return;
  }
  Curl_safefree(mlfile->filename);
  delete_metalink_checksum(mlfile->checksum);
  for(res = mlfile->resource; res;) {
    metalink_resource *next;
    next = res->next;
    delete_metalink_resource(res);
    res = next;
  }
  Curl_safefree(mlfile);
}

void clean_metalink(struct OperationConfig *config)
{
  if(config) {
    while(config->metalinkfile_list) {
      metalinkfile *mlfile = config->metalinkfile_list;
      config->metalinkfile_list = config->metalinkfile_list->next;
      delete_metalinkfile(mlfile);
    }
    config->metalinkfile_last = 0;
  }
}

void metalink_cleanup(void)
{
#ifdef HAVE_NSS_CONTEXT
  if(nss_context) {
    NSS_ShutdownContext(nss_context);
    nss_context = NULL;
  }
#endif
}

#endif /* USE_METALINK */
Changes to jni/curl/src/tool_metalink.h.
101
102
103
104
105
106
107


108
109
110
111
112
113
114

#include <metalink/metalink.h>

/*
 * Counts the resource in the metalinkfile.
 */
int count_next_metalink_resource(metalinkfile *mlfile);


void clean_metalink(struct OperationConfig *config);

/*
 * Performs final parse operation and extracts information from
 * Metalink and creates metalinkfile structs.
 *
 * This function returns 0 if it succeeds without warnings, or one of







>
>







101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116

#include <metalink/metalink.h>

/*
 * Counts the resource in the metalinkfile.
 */
int count_next_metalink_resource(metalinkfile *mlfile);

void delete_metalinkfile(metalinkfile *mlfile);
void clean_metalink(struct OperationConfig *config);

/*
 * Performs final parse operation and extracts information from
 * Metalink and creates metalinkfile structs.
 *
 * This function returns 0 if it succeeds without warnings, or one of
154
155
156
157
158
159
160

161
162
163
164
165
166
167
168
 * Release resources allocated at global scope.
 */
void metalink_cleanup(void);

#else /* USE_METALINK */

#define count_next_metalink_resource(x)  0

#define clean_metalink(x)  (void)x

/* metalink_cleanup() takes no arguments */
#define metalink_cleanup() Curl_nop_stmt

#endif /* USE_METALINK */

#endif /* HEADER_CURL_TOOL_METALINK_H */







>








156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
 * Release resources allocated at global scope.
 */
void metalink_cleanup(void);

#else /* USE_METALINK */

#define count_next_metalink_resource(x)  0
#define delete_metalinkfile(x)  (void)x
#define clean_metalink(x)  (void)x

/* metalink_cleanup() takes no arguments */
#define metalink_cleanup() Curl_nop_stmt

#endif /* USE_METALINK */

#endif /* HEADER_CURL_TOOL_METALINK_H */
Changes to jni/curl/src/tool_operate.c.
99
100
101
102
103
104
105
106
107
108
109




110
111
112
113
114
115
116
#define CURL_CA_CERT_ERRORMSG                                               \
  "More details here: https://curl.haxx.se/docs/sslcerts.html\n\n"          \
  "curl failed to verify the legitimacy of the server and therefore "       \
  "could not\nestablish a secure connection to it. To learn more about "    \
  "this situation and\nhow to fix it, please visit the web page mentioned " \
  "above.\n"

static CURLcode create_transfers(struct GlobalConfig *global,
                                 struct OperationConfig *config,
                                 CURLSH *share,
                                 bool capath_from_env);





static bool is_fatal_error(CURLcode code)
{
  switch(code) {
  case CURLE_FAILED_INIT:
  case CURLE_OUT_OF_MEMORY:
  case CURLE_UNKNOWN_OPTION:







|
|
|
|
>
>
>
>







99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#define CURL_CA_CERT_ERRORMSG                                               \
  "More details here: https://curl.haxx.se/docs/sslcerts.html\n\n"          \
  "curl failed to verify the legitimacy of the server and therefore "       \
  "could not\nestablish a secure connection to it. To learn more about "    \
  "this situation and\nhow to fix it, please visit the web page mentioned " \
  "above.\n"

static CURLcode single_transfer(struct GlobalConfig *global,
                                struct OperationConfig *config,
                                CURLSH *share,
                                bool capath_from_env,
                                bool *added);
static CURLcode create_transfer(struct GlobalConfig *global,
                                CURLSH *share,
                                bool *added);

static bool is_fatal_error(CURLcode code)
{
  switch(code) {
  case CURLE_FAILED_INIT:
  case CURLE_OUT_OF_MEMORY:
  case CURLE_UNKNOWN_OPTION:
196
197
198
199
200
201
202


203
204
205
206
207
208
209
210
#endif /* __VMS */

#define BUFFER_SIZE (100*1024)

struct per_transfer *transfers; /* first node */
static struct per_transfer *transfersl; /* last node */



static CURLcode add_transfer(struct per_transfer **per)
{
  struct per_transfer *p;
  p = calloc(sizeof(struct per_transfer), 1);
  if(!p)
    return CURLE_OUT_OF_MEMORY;
  if(!transfers)
    /* first entry */







>
>
|







200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
#endif /* __VMS */

#define BUFFER_SIZE (100*1024)

struct per_transfer *transfers; /* first node */
static struct per_transfer *transfersl; /* last node */

/* add_per_transfer creates a new 'per_transfer' node in the linked
   list of transfers */
static CURLcode add_per_transfer(struct per_transfer **per)
{
  struct per_transfer *p;
  p = calloc(sizeof(struct per_transfer), 1);
  if(!p)
    return CURLE_OUT_OF_MEMORY;
  if(!transfers)
    /* first entry */
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
  *per = p;
  all_xfers++; /* count total number of transfers added */
  return CURLE_OK;
}

/* Remove the specified transfer from the list (and free it), return the next
   in line */
static struct per_transfer *del_transfer(struct per_transfer *per)
{
  struct per_transfer *n;
  struct per_transfer *p;
  DEBUGASSERT(transfers);
  DEBUGASSERT(transfersl);
  DEBUGASSERT(per);








|







226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
  *per = p;
  all_xfers++; /* count total number of transfers added */
  return CURLE_OK;
}

/* Remove the specified transfer from the list (and free it), return the next
   in line */
static struct per_transfer *del_per_transfer(struct per_transfer *per)
{
  struct per_transfer *n;
  struct per_transfer *p;
  DEBUGASSERT(transfers);
  DEBUGASSERT(transfersl);
  DEBUGASSERT(per);

312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334



335
336
337
338
339
340
341
    if(S_ISREG(fileinfo.st_mode))
      uploadfilesize = fileinfo.st_size;

    if(uploadfilesize != -1)
      my_setopt(per->curl, CURLOPT_INFILESIZE_LARGE, uploadfilesize);
    per->input.fd = per->infd;
  }
  show_error:
  return result;
}

/*
 * Call this after a transfer has completed.
 */
static CURLcode post_transfer(struct GlobalConfig *global,
                              CURLSH *share,
                              struct per_transfer *per,
                              CURLcode result,
                              bool *retryp)
{
  struct OutStruct *outs = &per->outs;
  CURL *curl = per->curl;
  struct OperationConfig *config = per->config;




  *retryp = FALSE;

  if(per->infdopen)
    close(per->infd);

#ifdef __VMS







<






|
<
|
|
|




>
>
>







318
319
320
321
322
323
324

325
326
327
328
329
330
331

332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
    if(S_ISREG(fileinfo.st_mode))
      uploadfilesize = fileinfo.st_size;

    if(uploadfilesize != -1)
      my_setopt(per->curl, CURLOPT_INFILESIZE_LARGE, uploadfilesize);
    per->input.fd = per->infd;
  }

  return result;
}

/*
 * Call this after a transfer has completed.
 */
static CURLcode post_per_transfer(struct GlobalConfig *global,

                                  struct per_transfer *per,
                                  CURLcode result,
                                  bool *retryp)
{
  struct OutStruct *outs = &per->outs;
  CURL *curl = per->curl;
  struct OperationConfig *config = per->config;

  if(!curl || !config)
    return result;

  *retryp = FALSE;

  if(per->infdopen)
    close(per->infd);

#ifdef __VMS
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
    if(!rv) {
      fprintf(config->global->errors, "Metalink: parsing (%s) OK\n",
              per->this_url);
    }
    else if(rv == -1)
      fprintf(config->global->errors, "Metalink: parsing (%s) FAILED\n",
              per->this_url);
    result = create_transfers(global, config, share, FALSE);
  }
  else if(per->metalink && result == CURLE_OK && !per->metalink_next_res) {
    int rv;
    (void)fflush(outs->stream);
    rv = metalink_check_hash(global, per->mlfile, outs->filename);
    if(!rv)
      per->metalink_next_res = 1;
  }
#else
  (void)share;
#endif /* USE_METALINK */

#ifdef USE_METALINK
  if(outs->metalink_parser)
    metalink_parser_context_delete(outs->metalink_parser);
#endif /* USE_METALINK */








<








<
<







404
405
406
407
408
409
410

411
412
413
414
415
416
417
418


419
420
421
422
423
424
425
    if(!rv) {
      fprintf(config->global->errors, "Metalink: parsing (%s) OK\n",
              per->this_url);
    }
    else if(rv == -1)
      fprintf(config->global->errors, "Metalink: parsing (%s) FAILED\n",
              per->this_url);

  }
  else if(per->metalink && result == CURLE_OK && !per->metalink_next_res) {
    int rv;
    (void)fflush(outs->stream);
    rv = metalink_check_hash(global, per->mlfile, outs->filename);
    if(!rv)
      per->metalink_next_res = 1;
  }


#endif /* USE_METALINK */

#ifdef USE_METALINK
  if(outs->metalink_parser)
    metalink_parser_context_delete(outs->metalink_parser);
#endif /* USE_METALINK */

460
461
462
463
464
465
466

467
468
469
470
471
472
473
      long protocol;
      curl_easy_getinfo(curl, CURLINFO_PROTOCOL, &protocol);
      if((protocol == CURLPROTO_HTTP) || (protocol == CURLPROTO_HTTPS)) {
        /* This was HTTP(S) */
        curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);

        switch(response) {

        case 500: /* Internal Server Error */
        case 502: /* Bad Gateway */
        case 503: /* Service Unavailable */
        case 504: /* Gateway Timeout */
          retry = RETRY_HTTP;
          /*
           * At this point, we have already written data to the output







>







464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
      long protocol;
      curl_easy_getinfo(curl, CURLINFO_PROTOCOL, &protocol);
      if((protocol == CURLPROTO_HTTP) || (protocol == CURLPROTO_HTTPS)) {
        /* This was HTTP(S) */
        curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);

        switch(response) {
        case 429: /* Too Many Requests (RFC6585) */
        case 500: /* Internal Server Error */
        case 502: /* Bad Gateway */
        case 503: /* Service Unavailable */
        case 504: /* Gateway Timeout */
          retry = RETRY_HTTP;
          /*
           * At this point, we have already written data to the output
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
          else
            sleeptime = (long)retry_after * 1000; /* milliseconds */
        }
      }
      warnf(config->global, "Transient problem: %s "
            "Will retry in %ld seconds. "
            "%ld retries left.\n",
            m[retry], per->retry_sleep/1000L, per->retry_numretries);

      per->retry_numretries--;
      tool_go_sleep(sleeptime);
      if(!config->retry_delay) {
        per->retry_sleep *= 2;
        if(per->retry_sleep > RETRY_SLEEP_MAX)
          per->retry_sleep = RETRY_SLEEP_MAX;







|







525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
          else
            sleeptime = (long)retry_after * 1000; /* milliseconds */
        }
      }
      warnf(config->global, "Transient problem: %s "
            "Will retry in %ld seconds. "
            "%ld retries left.\n",
            m[retry], sleeptime/1000L, per->retry_numretries);

      per->retry_numretries--;
      tool_go_sleep(sleeptime);
      if(!config->retry_delay) {
        per->retry_sleep *= 2;
        if(per->retry_sleep > RETRY_SLEEP_MAX)
          per->retry_sleep = RETRY_SLEEP_MAX;
647
648
649
650
651
652
653



















654

655
656
657
658
659

660
661
662
663
664
665

666

667
668
669

670
671
672
673
674
675
676
677
678
679
680
681
682

683
684
685
686
687
688
689


690




691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
  free(per->separator);
  free(per->outfile);
  free(per->uploadfile);

  return CURLE_OK;
}




















/* go through the list of URLs and configs and add transfers */


static CURLcode create_transfers(struct GlobalConfig *global,
                                 struct OperationConfig *config,
                                 CURLSH *share,
                                 bool capath_from_env)

{
  CURLcode result = CURLE_OK;
  struct getout *urlnode;
  metalinkfile *mlfile_last = NULL;
  bool orig_noprogress = global->noprogress;
  bool orig_isatty = global->isatty;

  char *httpgetfields = NULL;


  if(config->postfields) {
    if(config->use_httpget) {

      /* Use the postfields data for a http get */
      httpgetfields = strdup(config->postfields);
      Curl_safefree(config->postfields);
      if(!httpgetfields) {
        helpf(global->errors, "out of memory\n");
        result = CURLE_OUT_OF_MEMORY;
        goto quit_curl;
      }
      if(SetHTTPrequest(config,
                        (config->no_body?HTTPREQ_HEAD:HTTPREQ_GET),
                        &config->httpreq)) {
        result = CURLE_FAILED_INIT;
        goto quit_curl;

      }
    }
    else {
      if(SetHTTPrequest(config, HTTPREQ_SIMPLEPOST, &config->httpreq)) {
        result = CURLE_FAILED_INIT;
        goto quit_curl;
      }


    }




  }

  for(urlnode = config->url_list; urlnode; urlnode = urlnode->next) {
    unsigned long li;
    unsigned long up; /* upload file counter within a single upload glob */
    char *infiles; /* might be a glob pattern */
    char *outfiles;
    unsigned long infilenum;
    URLGlob *inglob;
    bool metalink = FALSE; /* metalink download? */
    metalinkfile *mlfile;
    metalink_resource *mlres;

    outfiles = NULL;
    infilenum = 1;
    inglob = NULL;

    if(urlnode->flags & GETOUT_METALINK) {
      metalink = 1;
      if(mlfile_last == NULL) {
        mlfile_last = config->metalinkfile_list;
      }
      mlfile = mlfile_last;
      mlfile_last = mlfile_last->next;







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>

|
|
|
|
>






>
|
>



>
|
|
|
|
|
|
<
|
|
|
|
|
<
>



|

<
|
>
>
|
>
>
>
>


|
<
<

<
<
|




<
<
<
|







652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704

705
706
707
708
709

710
711
712
713
714
715

716
717
718
719
720
721
722
723
724
725
726


727


728
729
730
731
732



733
734
735
736
737
738
739
740
  free(per->separator);
  free(per->outfile);
  free(per->uploadfile);

  return CURLE_OK;
}

static void single_transfer_cleanup(struct OperationConfig *config)
{
  if(config) {
    struct State *state = &config->state;
    if(state->urls) {
      /* Free list of remaining URLs */
      glob_cleanup(state->urls);
      state->urls = NULL;
    }
    Curl_safefree(state->outfiles);
    Curl_safefree(state->httpgetfields);
    Curl_safefree(state->uploadfile);
    if(state->inglob) {
      /* Free list of globbed upload files */
      glob_cleanup(state->inglob);
      state->inglob = NULL;
    }
  }
}

/* create the next (singular) transfer */

static CURLcode single_transfer(struct GlobalConfig *global,
                                struct OperationConfig *config,
                                CURLSH *share,
                                bool capath_from_env,
                                bool *added)
{
  CURLcode result = CURLE_OK;
  struct getout *urlnode;
  metalinkfile *mlfile_last = NULL;
  bool orig_noprogress = global->noprogress;
  bool orig_isatty = global->isatty;
  struct State *state = &config->state;
  char *httpgetfields = state->httpgetfields;
  *added = FALSE; /* not yet */

  if(config->postfields) {
    if(config->use_httpget) {
      if(!httpgetfields) {
        /* Use the postfields data for a http get */
        httpgetfields = state->httpgetfields = strdup(config->postfields);
        Curl_safefree(config->postfields);
        if(!httpgetfields) {
          helpf(global->errors, "out of memory\n");
          result = CURLE_OUT_OF_MEMORY;

        }
        else if(SetHTTPrequest(config,
                               (config->no_body?HTTPREQ_HEAD:HTTPREQ_GET),
                               &config->httpreq)) {
          result = CURLE_FAILED_INIT;

        }
      }
    }
    else {
      if(SetHTTPrequest(config, HTTPREQ_SIMPLEPOST, &config->httpreq))
        result = CURLE_FAILED_INIT;

    }
    if(result)
      return result;
  }
  if(!state->urlnode) {
    /* first time caller, setup things */
    state->urlnode = config->url_list;
    state->infilenum = 1;
  }

  while(config->state.urlnode) {


    char *infiles; /* might be a glob pattern */


    URLGlob *inglob = state->inglob;
    bool metalink = FALSE; /* metalink download? */
    metalinkfile *mlfile;
    metalink_resource *mlres;




    urlnode = config->state.urlnode;
    if(urlnode->flags & GETOUT_METALINK) {
      metalink = 1;
      if(mlfile_last == NULL) {
        mlfile_last = config->metalinkfile_list;
      }
      mlfile = mlfile_last;
      mlfile_last = mlfile_last->next;
723
724
725
726
727
728
729


730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751

752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770

771
772
773
774
775
776
777
778
779
780
781
782

783
784
785
786

787
788
789
790
791
792
793
794
795
796
797
798
799

800


801
802
803
804
805

806
807
808
809





810
811
812
813
814
815
816
817
818






819
820
821
822

823


824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848

    if(!urlnode->url) {
      /* This node has no URL. Free node data without destroying the
         node itself nor modifying next pointer and continue to next */
      Curl_safefree(urlnode->outfile);
      Curl_safefree(urlnode->infile);
      urlnode->flags = 0;


      continue; /* next URL please */
    }

    /* save outfile pattern before expansion */
    if(urlnode->outfile) {
      outfiles = strdup(urlnode->outfile);
      if(!outfiles) {
        helpf(global->errors, "out of memory\n");
        result = CURLE_OUT_OF_MEMORY;
        break;
      }
    }

    infiles = urlnode->infile;

    if(!config->globoff && infiles) {
      /* Unless explicitly shut off */
      result = glob_url(&inglob, infiles, &infilenum,
                        global->showerror?global->errors:NULL);
      if(result) {
        Curl_safefree(outfiles);
        break;

      }
    }

    /* Here's the loop for uploading multiple files within the same
       single globbed string. If no upload, we enter the loop once anyway. */
    for(up = 0 ; up < infilenum; up++) {

      char *uploadfile; /* a single file, never a glob */
      int separator;
      URLGlob *urls;
      unsigned long urlnum;

      uploadfile = NULL;
      urls = NULL;
      urlnum = 0;

      if(!up && !infiles)
        Curl_nop_stmt;
      else {

        if(inglob) {
          result = glob_next_url(&uploadfile, inglob);
          if(result == CURLE_OUT_OF_MEMORY)
            helpf(global->errors, "out of memory\n");
        }
        else if(!up) {
          uploadfile = strdup(infiles);
          if(!uploadfile) {
            helpf(global->errors, "out of memory\n");
            result = CURLE_OUT_OF_MEMORY;
          }
        }

        if(!uploadfile)
          break;
      }


      if(metalink) {
        /* For Metalink download, we don't use glob. Instead we use
           the number of resources as urlnum. */
        urlnum = count_next_metalink_resource(mlfile);
      }
      else if(!config->globoff) {
        /* Unless explicitly shut off, we expand '{...}' and '[...]'
           expressions and return total number of URLs in pattern set */
        result = glob_url(&urls, urlnode->url, &urlnum,
                          global->showerror?global->errors:NULL);
        if(result) {
          Curl_safefree(uploadfile);
          break;

        }


      }
      else
        urlnum = 1; /* without globbing, this is a single URL */

      /* if multiple files extracted to stdout, insert separators! */

      separator = ((!outfiles || !strcmp(outfiles, "-")) && urlnum > 1);

      /* Here's looping around each globbed URL */
      for(li = 0 ; li < urlnum; li++) {





        struct per_transfer *per;
        struct OutStruct *outs;
        struct InStruct *input;
        struct OutStruct *heads;
        struct HdrCbData *hdrcbdata = NULL;
        CURL *curl = curl_easy_init();

        result = add_transfer(&per);
        if(result || !curl) {






          free(uploadfile);
          curl_easy_cleanup(curl);
          result = CURLE_OUT_OF_MEMORY;
          goto show_error;

        }


        per->config = config;
        per->curl = curl;
        per->uploadfile = uploadfile;

        /* default headers output stream is stdout */
        heads = &per->heads;
        heads->stream = stdout;
        heads->config = config;

        /* Single header file for all URLs */
        if(config->headerfile) {
          /* open file for output: */
          if(strcmp(config->headerfile, "-")) {
            FILE *newfile = fopen(config->headerfile, "wb");
            if(!newfile) {
              warnf(config->global, "Failed to open %s\n", config->headerfile);
              result = CURLE_WRITE_ERROR;
              goto quit_curl;
            }
            else {
              heads->filename = config->headerfile;
              heads->s_isreg = TRUE;
              heads->fopened = TRUE;
              heads->stream = newfile;
            }







>
>




|
|
|








|

|

|
<

>
|
|
|
<
<
<
<
<

<


<
<
<
<
|


>
|
|
|
|
|
|
|
|
|
|
|
|
>
|



>
|
|
|
|
|
|
|
|
|
|
|
<
|
>

>
>


|


>
|


|
>
>
>
>
>






<
|

>
>
>
>
>
>
|
|
|
<
>
|
>
>


<














|







749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777

778
779
780
781
782





783

784
785




786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818

819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844

845
846
847
848
849
850
851
852
853
854
855

856
857
858
859
860
861

862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883

    if(!urlnode->url) {
      /* This node has no URL. Free node data without destroying the
         node itself nor modifying next pointer and continue to next */
      Curl_safefree(urlnode->outfile);
      Curl_safefree(urlnode->infile);
      urlnode->flags = 0;
      config->state.urlnode = urlnode->next;
      state->up = 0;
      continue; /* next URL please */
    }

    /* save outfile pattern before expansion */
    if(urlnode->outfile && !state->outfiles) {
      state->outfiles = strdup(urlnode->outfile);
      if(!state->outfiles) {
        helpf(global->errors, "out of memory\n");
        result = CURLE_OUT_OF_MEMORY;
        break;
      }
    }

    infiles = urlnode->infile;

    if(!config->globoff && infiles && !inglob) {
      /* Unless explicitly shut off */
      result = glob_url(&inglob, infiles, &state->infilenum,
                        global->showerror?global->errors:NULL);
      if(result)

        break;
      config->state.inglob = inglob;
    }

    {





      int separator;

      unsigned long urlnum;





      if(!state->up && !infiles)
        Curl_nop_stmt;
      else {
        if(!state->uploadfile) {
          if(inglob) {
            result = glob_next_url(&state->uploadfile, inglob);
            if(result == CURLE_OUT_OF_MEMORY)
              helpf(global->errors, "out of memory\n");
          }
          else if(!state->up) {
            state->uploadfile = strdup(infiles);
            if(!state->uploadfile) {
              helpf(global->errors, "out of memory\n");
              result = CURLE_OUT_OF_MEMORY;
            }
          }
        }
        if(result)
          break;
      }

      if(!state->urlnum) {
        if(metalink) {
          /* For Metalink download, we don't use glob. Instead we use
             the number of resources as urlnum. */
          urlnum = count_next_metalink_resource(mlfile);
        }
        else if(!config->globoff) {
          /* Unless explicitly shut off, we expand '{...}' and '[...]'
             expressions and return total number of URLs in pattern set */
          result = glob_url(&state->urls, urlnode->url, &state->urlnum,
                            global->showerror?global->errors:NULL);
          if(result)

            break;
          urlnum = state->urlnum;
        }
        else
          urlnum = 1; /* without globbing, this is a single URL */
      }
      else
        urlnum = state->urlnum;

      /* if multiple files extracted to stdout, insert separators! */
      separator = ((!state->outfiles ||
                    !strcmp(state->outfiles, "-")) && urlnum > 1);

      /* Here's looping around each globbed URL */

      if(state->li >= urlnum) {
        state->li = 0;
        state->up++;
      }
      if(state->up < state->infilenum) {
        struct per_transfer *per;
        struct OutStruct *outs;
        struct InStruct *input;
        struct OutStruct *heads;
        struct HdrCbData *hdrcbdata = NULL;
        CURL *curl = curl_easy_init();

        result = add_per_transfer(&per);
        if(result || !curl) {
          curl_easy_cleanup(curl);
          result = CURLE_OUT_OF_MEMORY;
          break;
        }
        if(state->uploadfile) {
          per->uploadfile = strdup(state->uploadfile);
          if(!per->uploadfile) {
            curl_easy_cleanup(curl);
            result = CURLE_OUT_OF_MEMORY;

            break;
          }
        }
        *added = TRUE;
        per->config = config;
        per->curl = curl;


        /* default headers output stream is stdout */
        heads = &per->heads;
        heads->stream = stdout;
        heads->config = config;

        /* Single header file for all URLs */
        if(config->headerfile) {
          /* open file for output: */
          if(strcmp(config->headerfile, "-")) {
            FILE *newfile = fopen(config->headerfile, "wb");
            if(!newfile) {
              warnf(config->global, "Failed to open %s\n", config->headerfile);
              result = CURLE_WRITE_ERROR;
              break;
            }
            else {
              heads->filename = config->headerfile;
              heads->s_isreg = TRUE;
              heads->fopened = TRUE;
              heads->stream = newfile;
            }
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961

        if(metalink) {
          /* For Metalink download, use name in Metalink file as
             filename. */
          per->outfile = strdup(mlfile->filename);
          if(!per->outfile) {
            result = CURLE_OUT_OF_MEMORY;
            goto show_error;
          }
          per->this_url = strdup(mlres->url);
          if(!per->this_url) {
            result = CURLE_OUT_OF_MEMORY;
            goto show_error;
          }
          per->mlfile = mlfile;
        }
        else {
          if(urls) {
            result = glob_next_url(&per->this_url, urls);
            if(result)
              goto show_error;
          }
          else if(!li) {
            per->this_url = strdup(urlnode->url);
            if(!per->this_url) {
              result = CURLE_OUT_OF_MEMORY;
              goto show_error;
            }
          }
          else
            per->this_url = NULL;
          if(!per->this_url)
            break;

          if(outfiles) {
            per->outfile = strdup(outfiles);
            if(!per->outfile) {
              result = CURLE_OUT_OF_MEMORY;
              goto show_error;
            }
          }
        }

        if(((urlnode->flags&GETOUT_USEREMOTE) ||
            (per->outfile && strcmp("-", per->outfile))) &&
           (metalink || !config->use_metalink)) {

          /*
           * We have specified a file name to store the result in, or we have
           * decided we want to use the remote file name.
           */

          if(!per->outfile) {
            /* extract the file name from the URL */
            result = get_url_file_name(&per->outfile, per->this_url);
            if(result)
              goto show_error;
            if(!*per->outfile && !config->content_disposition) {
              helpf(global->errors, "Remote file name has no length!\n");
              result = CURLE_WRITE_ERROR;
              goto quit_urls;
            }
          }
          else if(urls) {
            /* fill '#1' ... '#9' terms from URL pattern */
            char *storefile = per->outfile;
            result = glob_match_url(&per->outfile, storefile, urls);
            Curl_safefree(storefile);
            if(result) {
              /* bad globbing */
              warnf(config->global, "bad output glob!\n");
              goto quit_urls;
            }
          }

          /* Create the directory hierarchy, if not pre-existent to a multiple
             file output call */

          if(config->create_dirs || metalink) {
            result = create_dir_hierarchy(per->outfile, global->errors);
            /* create_dir_hierarchy shows error upon CURLE_WRITE_ERROR */
            if(result == CURLE_WRITE_ERROR)
              goto quit_urls;
            if(result) {
              goto show_error;
            }
          }

          if((urlnode->flags & GETOUT_USEREMOTE)
             && config->content_disposition) {
            /* Our header callback MIGHT set the filename */
            DEBUGASSERT(!outs->filename);
          }







|




|




|
|

|

|



|







|
|


|

















|



|


|


|




|









|
<
|
<
<







904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985

986


987
988
989
990
991
992
993

        if(metalink) {
          /* For Metalink download, use name in Metalink file as
             filename. */
          per->outfile = strdup(mlfile->filename);
          if(!per->outfile) {
            result = CURLE_OUT_OF_MEMORY;
            break;
          }
          per->this_url = strdup(mlres->url);
          if(!per->this_url) {
            result = CURLE_OUT_OF_MEMORY;
            break;
          }
          per->mlfile = mlfile;
        }
        else {
          if(state->urls) {
            result = glob_next_url(&per->this_url, state->urls);
            if(result)
              break;
          }
          else if(!state->li) {
            per->this_url = strdup(urlnode->url);
            if(!per->this_url) {
              result = CURLE_OUT_OF_MEMORY;
              break;
            }
          }
          else
            per->this_url = NULL;
          if(!per->this_url)
            break;

          if(state->outfiles) {
            per->outfile = strdup(state->outfiles);
            if(!per->outfile) {
              result = CURLE_OUT_OF_MEMORY;
              break;
            }
          }
        }

        if(((urlnode->flags&GETOUT_USEREMOTE) ||
            (per->outfile && strcmp("-", per->outfile))) &&
           (metalink || !config->use_metalink)) {

          /*
           * We have specified a file name to store the result in, or we have
           * decided we want to use the remote file name.
           */

          if(!per->outfile) {
            /* extract the file name from the URL */
            result = get_url_file_name(&per->outfile, per->this_url);
            if(result)
              break;
            if(!*per->outfile && !config->content_disposition) {
              helpf(global->errors, "Remote file name has no length!\n");
              result = CURLE_WRITE_ERROR;
              break;
            }
          }
          else if(state->urls) {
            /* fill '#1' ... '#9' terms from URL pattern */
            char *storefile = per->outfile;
            result = glob_match_url(&per->outfile, storefile, state->urls);
            Curl_safefree(storefile);
            if(result) {
              /* bad globbing */
              warnf(config->global, "bad output glob!\n");
              break;
            }
          }

          /* Create the directory hierarchy, if not pre-existent to a multiple
             file output call */

          if(config->create_dirs || metalink) {
            result = create_dir_hierarchy(per->outfile, global->errors);
            /* create_dir_hierarchy shows error upon CURLE_WRITE_ERROR */
            if(result)

              break;


          }

          if((urlnode->flags & GETOUT_USEREMOTE)
             && config->content_disposition) {
            /* Our header callback MIGHT set the filename */
            DEBUGASSERT(!outs->filename);
          }
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
              config->resume_from = 0;
          }

          if(config->resume_from) {
#ifdef __VMS
            /* open file for output, forcing VMS output format into stream
               mode which is needed for stat() call above to always work. */
            FILE *file = fopen(outfile, config->resume_from?"ab":"wb",
                               "ctx=stm", "rfm=stmlf", "rat=cr", "mrs=0");
#else
            /* open file for output: */
            FILE *file = fopen(per->outfile, config->resume_from?"ab":"wb");
#endif
            if(!file) {
              helpf(global->errors, "Can't open '%s'!\n", per->outfile);
              result = CURLE_WRITE_ERROR;
              goto quit_urls;
            }
            outs->fopened = TRUE;
            outs->stream = file;
            outs->init = config->resume_from;
          }
          else {
            outs->stream = NULL; /* open when needed */
          }
          outs->filename = per->outfile;
          outs->s_isreg = TRUE;
        }

        if(per->uploadfile && !stdin_upload(per->uploadfile)) {
          /*
           * We have specified a file to upload and it isn't "-".
           */
          char *nurl = add_file_name_to_url(per->this_url, per->uploadfile);
          if(!nurl) {
            result = CURLE_OUT_OF_MEMORY;
            goto show_error;
          }
          per->this_url = nurl;
        }
        else if(per->uploadfile && stdin_upload(per->uploadfile)) {
          /* count to see if there are more than one auth bit set
             in the authtype field */
          int authbits = 0;







|



|




|



















|







1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
              config->resume_from = 0;
          }

          if(config->resume_from) {
#ifdef __VMS
            /* open file for output, forcing VMS output format into stream
               mode which is needed for stat() call above to always work. */
            FILE *file = fopen(outfile, "ab",
                               "ctx=stm", "rfm=stmlf", "rat=cr", "mrs=0");
#else
            /* open file for output: */
            FILE *file = fopen(per->outfile, "ab");
#endif
            if(!file) {
              helpf(global->errors, "Can't open '%s'!\n", per->outfile);
              result = CURLE_WRITE_ERROR;
              break;
            }
            outs->fopened = TRUE;
            outs->stream = file;
            outs->init = config->resume_from;
          }
          else {
            outs->stream = NULL; /* open when needed */
          }
          outs->filename = per->outfile;
          outs->s_isreg = TRUE;
        }

        if(per->uploadfile && !stdin_upload(per->uploadfile)) {
          /*
           * We have specified a file to upload and it isn't "-".
           */
          char *nurl = add_file_name_to_url(per->this_url, per->uploadfile);
          if(!nurl) {
            result = CURLE_OUT_OF_MEMORY;
            break;
          }
          per->this_url = nurl;
        }
        else if(per->uploadfile && stdin_upload(per->uploadfile)) {
          /* count to see if there are more than one auth bit set
             in the authtype field */
          int authbits = 0;
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
          global->noprogress = orig_noprogress;
          global->isatty = orig_isatty;
        }

        if(urlnum > 1 && !global->mute) {
          per->separator_err =
            aprintf("\n[%lu/%lu]: %s --> %s",
                    li + 1, urlnum, per->this_url,
                    per->outfile ? per->outfile : "<stdout>");
          if(separator)
            per->separator = aprintf("%s%s", CURLseparator, per->this_url);
        }
        if(httpgetfields) {
          char *urlbuffer;
          /* Find out whether the url contains a file name */







|







1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
          global->noprogress = orig_noprogress;
          global->isatty = orig_isatty;
        }

        if(urlnum > 1 && !global->mute) {
          per->separator_err =
            aprintf("\n[%lu/%lu]: %s --> %s",
                    state->li + 1, urlnum, per->this_url,
                    per->outfile ? per->outfile : "<stdout>");
          if(separator)
            per->separator = aprintf("%s%s", CURLseparator, per->this_url);
        }
        if(httpgetfields) {
          char *urlbuffer;
          /* Find out whether the url contains a file name */
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131

1132
1133
1134
1135
1136
1137
1138
            /* Append  / before the ? to create a well-formed url
               if the url contains a hostname only
            */
            urlbuffer = aprintf("%s/?%s", per->this_url, httpgetfields);

          if(!urlbuffer) {
            result = CURLE_OUT_OF_MEMORY;
            goto show_error;
          }

          Curl_safefree(per->this_url); /* free previous URL */
          per->this_url = urlbuffer; /* use our new URL instead! */
        }

        if(!global->errors)
          global->errors = stderr;

        if((!per->outfile || !strcmp(per->outfile, "-")) &&
           !config->use_ascii) {
          /* We get the output to stdout and we have not got the ASCII/text
             flag, then set stdout to be binary */
          set_binmode(stdout);
        }

        /* explicitly passed to stdout means okaying binary gunk */
        config->terminal_binary_ok =
          (per->outfile && !strcmp(per->outfile, "-"));

        /* avoid having this setopt added to the --libcurl source
           output */
        result = curl_easy_setopt(curl, CURLOPT_SHARE, share);
        if(result)
          goto show_error;


        if(!config->tcp_nodelay)
          my_setopt(curl, CURLOPT_TCP_NODELAY, 0L);

        if(config->tcp_fastopen)
          my_setopt(curl, CURLOPT_TCP_FASTOPEN, 1L);








|




















|
<


<
>







1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159

1160
1161

1162
1163
1164
1165
1166
1167
1168
1169
            /* Append  / before the ? to create a well-formed url
               if the url contains a hostname only
            */
            urlbuffer = aprintf("%s/?%s", per->this_url, httpgetfields);

          if(!urlbuffer) {
            result = CURLE_OUT_OF_MEMORY;
            break;
          }

          Curl_safefree(per->this_url); /* free previous URL */
          per->this_url = urlbuffer; /* use our new URL instead! */
        }

        if(!global->errors)
          global->errors = stderr;

        if((!per->outfile || !strcmp(per->outfile, "-")) &&
           !config->use_ascii) {
          /* We get the output to stdout and we have not got the ASCII/text
             flag, then set stdout to be binary */
          set_binmode(stdout);
        }

        /* explicitly passed to stdout means okaying binary gunk */
        config->terminal_binary_ok =
          (per->outfile && !strcmp(per->outfile, "-"));

        /* Avoid having this setopt added to the --libcurl source output. */

        result = curl_easy_setopt(curl, CURLOPT_SHARE, share);
        if(result)

          break;

        if(!config->tcp_nodelay)
          my_setopt(curl, CURLOPT_TCP_NODELAY, 0L);

        if(config->tcp_fastopen)
          my_setopt(curl, CURLOPT_TCP_FASTOPEN, 1L);

1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264


1265
1266
1267
1268
1269
1270
1271
                        config->postfields);
          my_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE,
                    config->postfieldsize);
          break;
        case HTTPREQ_MIMEPOST:
          result = tool2curlmime(curl, config->mimeroot, &config->mimepost);
          if(result)
            goto show_error;
          my_setopt_mimepost(curl, CURLOPT_MIMEPOST, config->mimepost);
          break;
        default:
          break;
        }



        /* new in libcurl 7.10.6 (default is Basic) */
        if(config->authtype)
          my_setopt_bitmask(curl, CURLOPT_HTTPAUTH, (long)config->authtype);

        my_setopt_slist(curl, CURLOPT_HTTPHEADER, config->headers);








|





>
>







1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
                        config->postfields);
          my_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE,
                    config->postfieldsize);
          break;
        case HTTPREQ_MIMEPOST:
          result = tool2curlmime(curl, config->mimeroot, &config->mimepost);
          if(result)
            break;
          my_setopt_mimepost(curl, CURLOPT_MIMEPOST, config->mimepost);
          break;
        default:
          break;
        }
        if(result)
          break;

        /* new in libcurl 7.10.6 (default is Basic) */
        if(config->authtype)
          my_setopt_bitmask(curl, CURLOPT_HTTPAUTH, (long)config->authtype);

        my_setopt_slist(curl, CURLOPT_HTTPHEADER, config->headers);

1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
          result = res_setopt_str(curl, CURLOPT_CAPATH, config->capath);
          if(result == CURLE_NOT_BUILT_IN) {
            warnf(config->global, "ignoring %s, not supported by libcurl\n",
                  capath_from_env?
                  "SSL_CERT_DIR environment variable":"--capath");
          }
          else if(result)
            goto show_error;
        }
        /* For the time being if --proxy-capath is not set then we use the
           --capath value for it, if any. See #1257 */
        if((config->proxy_capath || config->capath) &&
           !tool_setopt_skip(CURLOPT_PROXY_CAPATH)) {
          result = res_setopt_str(curl, CURLOPT_PROXY_CAPATH,
                                  (config->proxy_capath ?
                                   config->proxy_capath :
                                   config->capath));
          if(result == CURLE_NOT_BUILT_IN) {
            if(config->proxy_capath) {
              warnf(config->global,
                    "ignoring --proxy-capath, not supported by libcurl\n");
            }
          }
          else if(result)
            goto show_error;
        }

        if(config->crlfile)
          my_setopt_str(curl, CURLOPT_CRLFILE, config->crlfile);
        if(config->proxy_crlfile)
          my_setopt_str(curl, CURLOPT_PROXY_CRLFILE, config->proxy_crlfile);
        else if(config->crlfile) /* CURLOPT_PROXY_CRLFILE default is crlfile */







|
















|







1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
          result = res_setopt_str(curl, CURLOPT_CAPATH, config->capath);
          if(result == CURLE_NOT_BUILT_IN) {
            warnf(config->global, "ignoring %s, not supported by libcurl\n",
                  capath_from_env?
                  "SSL_CERT_DIR environment variable":"--capath");
          }
          else if(result)
            break;
        }
        /* For the time being if --proxy-capath is not set then we use the
           --capath value for it, if any. See #1257 */
        if((config->proxy_capath || config->capath) &&
           !tool_setopt_skip(CURLOPT_PROXY_CAPATH)) {
          result = res_setopt_str(curl, CURLOPT_PROXY_CAPATH,
                                  (config->proxy_capath ?
                                   config->proxy_capath :
                                   config->capath));
          if(result == CURLE_NOT_BUILT_IN) {
            if(config->proxy_capath) {
              warnf(config->global,
                    "ignoring --proxy-capath, not supported by libcurl\n");
            }
          }
          else if(result)
            break;
        }

        if(config->crlfile)
          my_setopt_str(curl, CURLOPT_CRLFILE, config->crlfile);
        if(config->proxy_crlfile)
          my_setopt_str(curl, CURLOPT_PROXY_CRLFILE, config->proxy_crlfile);
        else if(config->crlfile) /* CURLOPT_PROXY_CRLFILE default is crlfile */
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
                if(result == CURLE_UNKNOWN_OPTION)
                  /* libssh2 version older than 1.1.1 */
                  result = CURLE_OK;
              }
              Curl_safefree(home);
            }
            if(result)
              goto show_error;
          }
        }

        if(config->no_body || config->remote_time) {
          /* no body or use remote time */
          my_setopt(curl, CURLOPT_FILETIME, 1L);
        }







|







1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
                if(result == CURLE_UNKNOWN_OPTION)
                  /* libssh2 version older than 1.1.1 */
                  result = CURLE_OK;
              }
              Curl_safefree(home);
            }
            if(result)
              break;
          }
        }

        if(config->no_body || config->remote_time) {
          /* no body or use remote time */
          my_setopt(curl, CURLOPT_FILETIME, 1L);
        }
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
          my_setopt(curl, CURLOPT_VERBOSE, 1L);
        }

        /* new in curl 7.9.3 */
        if(config->engine) {
          result = res_setopt_str(curl, CURLOPT_SSLENGINE, config->engine);
          if(result)
            goto show_error;
        }

        /* new in curl 7.10.7, extended in 7.19.4. Modified to use
           CREATE_DIR_RETRY in 7.49.0 */
        my_setopt(curl, CURLOPT_FTP_CREATE_MISSING_DIRS,
                  (long)(config->ftp_create_dirs?
                         CURLFTP_CREATE_DIR_RETRY:







|







1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
          my_setopt(curl, CURLOPT_VERBOSE, 1L);
        }

        /* new in curl 7.9.3 */
        if(config->engine) {
          result = res_setopt_str(curl, CURLOPT_SSLENGINE, config->engine);
          if(result)
            break;
        }

        /* new in curl 7.10.7, extended in 7.19.4. Modified to use
           CREATE_DIR_RETRY in 7.49.0 */
        my_setopt(curl, CURLOPT_FTP_CREATE_MISSING_DIRS,
                  (long)(config->ftp_create_dirs?
                         CURLFTP_CREATE_DIR_RETRY:
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881

1882
1883

1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907



1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920



1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933

1934
1935
1936
1937
1938
1939
1940
1941



1942
1943

1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958




1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020

2021
2022
2023
2024
2025
2026
2027
#endif

#ifdef USE_METALINK
        if(!metalink && config->use_metalink) {
          outs->metalink_parser = metalink_parser_context_new();
          if(outs->metalink_parser == NULL) {
            result = CURLE_OUT_OF_MEMORY;
            goto show_error;
          }
          fprintf(config->global->errors,
                  "Metalink: parsing (%s) metalink/XML...\n", per->this_url);
        }
        else if(metalink)
          fprintf(config->global->errors,
                  "Metalink: fetching (%s) from (%s)...\n",
                  mlfile->filename, per->this_url);
#endif /* USE_METALINK */

        per->metalink = metalink;
        /* initialize retry vars for loop below */
        per->retry_sleep_default = (config->retry_delay) ?
          config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
        per->retry_numretries = config->req_retry;
        per->retry_sleep = per->retry_sleep_default; /* ms */
        per->retrystart = tvnow();

      } /* loop to the next URL */

      show_error:
      quit_urls:


      if(urls) {
        /* Free list of remaining URLs */

        glob_cleanup(urls);
        urls = NULL;
      }

      if(infilenum > 1) {
        /* when file globbing, exit loop upon critical error */
        if(is_fatal_error(result))
          break;
      }
      else if(result)
        /* when not file globbing, exit loop upon any error */
        break;

    } /* loop to the next globbed upload file */

    /* Free loop-local allocated memory */

    Curl_safefree(outfiles);

    if(inglob) {
      /* Free list of globbed upload files */
      glob_cleanup(inglob);
      inglob = NULL;
    }




    /* Free this URL node data without destroying the
       the node itself nor modifying next pointer. */
    Curl_safefree(urlnode->url);
    Curl_safefree(urlnode->outfile);
    Curl_safefree(urlnode->infile);
    urlnode->flags = 0;

  } /* for-loop through all URLs */
  quit_curl:

  /* Free function-local referenced allocated memory */
  Curl_safefree(httpgetfields);




  return result;
}

static long all_added; /* number of easy handles currently added */

/*
 * add_parallel_transfers() sets 'morep' to TRUE if there are more transfers
 * to add even after this call returns. sets 'addedp' to TRUE if one or more
 * transfers were added.
 */
static int add_parallel_transfers(struct GlobalConfig *global,
                                  CURLM *multi,

                                  bool *morep,
                                  bool *addedp)
{
  struct per_transfer *per;
  CURLcode result;
  CURLMcode mcode;
  *addedp = FALSE;
  *morep = FALSE;



  for(per = transfers; per && (all_added < global->parallel_max);
      per = per->next) {

    if(per->added)
      /* already added */
      continue;

    result = pre_transfer(global, per);
    if(result)
      break;

    (void)curl_easy_setopt(per->curl, CURLOPT_PRIVATE, per);
    (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFOFUNCTION, xferinfo_cb);
    (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFODATA, per);

    mcode = curl_multi_add_handle(multi, per->curl);
    if(mcode)
      return CURLE_OUT_OF_MEMORY;




    per->added = TRUE;
    all_added++;
    *addedp = TRUE;
  }
  *morep = per ? TRUE : FALSE;
  return CURLE_OK;
}

static CURLcode parallel_transfers(struct GlobalConfig *global,
                                   CURLSH *share)
{
  CURLM *multi;
  bool done = FALSE;
  CURLMcode mcode = CURLM_OK;
  CURLcode result = CURLE_OK;
  int still_running = 1;
  struct timeval start = tvnow();
  bool more_transfers;
  bool added_transfers;

  multi = curl_multi_init();
  if(!multi)
    return CURLE_OUT_OF_MEMORY;

  result = add_parallel_transfers(global, multi,
                                  &more_transfers, &added_transfers);
  if(result)
    return result;

  while(!done && !mcode && (still_running || more_transfers)) {
    mcode = curl_multi_poll(multi, NULL, 0, 1000, NULL);
    if(!mcode)
      mcode = curl_multi_perform(multi, &still_running);

    progress_meter(global, &start, FALSE);

    if(!mcode) {
      int rc;
      CURLMsg *msg;
      bool removed = FALSE;
      do {
        msg = curl_multi_info_read(multi, &rc);
        if(msg) {
          bool retry;
          struct per_transfer *ended;
          CURL *easy = msg->easy_handle;
          result = msg->data.result;
          curl_easy_getinfo(easy, CURLINFO_PRIVATE, (void *)&ended);
          curl_multi_remove_handle(multi, easy);

          result = post_transfer(global, share, ended, result, &retry);
          if(retry)
            continue;
          progress_finalize(ended); /* before it goes away */
          all_added--; /* one fewer added */
          removed = TRUE;
          (void)del_transfer(ended);
        }
      } while(msg);
      if(removed) {
        /* one or more transfers completed, add more! */
        (void)add_parallel_transfers(global, multi, &more_transfers,

                                     &added_transfers);
        if(added_transfers)
          /* we added new ones, make sure the loop doesn't exit yet */
          still_running = 1;
      }
    }
  }







|


















|
|
<
|
|
>
|
|
>
|
|
<
|
<
<
<
<
<
<
<
<
<
<
<
<

|
|
|
|
|
|
|
>
>
>
|
<
<
<
<
<
<
|
<
|
|
|
<
>
>
>
|










|
|
>
|
|


|



>
>
>


>















>
>
>
>












<











|




|




















|





|




|
>







1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911

1912
1913
1914
1915
1916
1917
1918
1919

1920












1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932






1933

1934
1935
1936

1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998

1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
#endif

#ifdef USE_METALINK
        if(!metalink && config->use_metalink) {
          outs->metalink_parser = metalink_parser_context_new();
          if(outs->metalink_parser == NULL) {
            result = CURLE_OUT_OF_MEMORY;
            break;
          }
          fprintf(config->global->errors,
                  "Metalink: parsing (%s) metalink/XML...\n", per->this_url);
        }
        else if(metalink)
          fprintf(config->global->errors,
                  "Metalink: fetching (%s) from (%s)...\n",
                  mlfile->filename, per->this_url);
#endif /* USE_METALINK */

        per->metalink = metalink;
        /* initialize retry vars for loop below */
        per->retry_sleep_default = (config->retry_delay) ?
          config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
        per->retry_numretries = config->req_retry;
        per->retry_sleep = per->retry_sleep_default; /* ms */
        per->retrystart = tvnow();

        state->li++;
      }

      else {
        /* Free this URL node data without destroying the
           the node itself nor modifying next pointer. */
        Curl_safefree(urlnode->outfile);
        Curl_safefree(urlnode->infile);
        urlnode->flags = 0;
        glob_cleanup(state->urls);
        state->urls = NULL;

        state->urlnum = 0;













        Curl_safefree(state->outfiles);
        Curl_safefree(state->uploadfile);
        if(state->inglob) {
          /* Free list of globbed upload files */
          glob_cleanup(state->inglob);
          state->inglob = NULL;
        }
        config->state.urlnode = urlnode->next;
        state->up = 0;
        continue;
      }






    }

    break;
  }


  if(!*added || result) {
    *added = FALSE;
    single_transfer_cleanup(config);
  }
  return result;
}

static long all_added; /* number of easy handles currently added */

/*
 * add_parallel_transfers() sets 'morep' to TRUE if there are more transfers
 * to add even after this call returns. sets 'addedp' to TRUE if one or more
 * transfers were added.
 */
static CURLcode add_parallel_transfers(struct GlobalConfig *global,
                                       CURLM *multi,
                                       CURLSH *share,
                                       bool *morep,
                                       bool *addedp)
{
  struct per_transfer *per;
  CURLcode result = CURLE_OK;
  CURLMcode mcode;
  *addedp = FALSE;
  *morep = FALSE;
  result = create_transfer(global, share, addedp);
  if(result || !*addedp)
    return result;
  for(per = transfers; per && (all_added < global->parallel_max);
      per = per->next) {
    bool getadded = FALSE;
    if(per->added)
      /* already added */
      continue;

    result = pre_transfer(global, per);
    if(result)
      break;

    (void)curl_easy_setopt(per->curl, CURLOPT_PRIVATE, per);
    (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFOFUNCTION, xferinfo_cb);
    (void)curl_easy_setopt(per->curl, CURLOPT_XFERINFODATA, per);

    mcode = curl_multi_add_handle(multi, per->curl);
    if(mcode)
      return CURLE_OUT_OF_MEMORY;

    result = create_transfer(global, share, &getadded);
    if(result)
      return result;
    per->added = TRUE;
    all_added++;
    *addedp = TRUE;
  }
  *morep = per ? TRUE : FALSE;
  return CURLE_OK;
}

static CURLcode parallel_transfers(struct GlobalConfig *global,
                                   CURLSH *share)
{
  CURLM *multi;

  CURLMcode mcode = CURLM_OK;
  CURLcode result = CURLE_OK;
  int still_running = 1;
  struct timeval start = tvnow();
  bool more_transfers;
  bool added_transfers;

  multi = curl_multi_init();
  if(!multi)
    return CURLE_OUT_OF_MEMORY;

  result = add_parallel_transfers(global, multi, share,
                                  &more_transfers, &added_transfers);
  if(result)
    return result;

  while(!mcode && (still_running || more_transfers)) {
    mcode = curl_multi_poll(multi, NULL, 0, 1000, NULL);
    if(!mcode)
      mcode = curl_multi_perform(multi, &still_running);

    progress_meter(global, &start, FALSE);

    if(!mcode) {
      int rc;
      CURLMsg *msg;
      bool removed = FALSE;
      do {
        msg = curl_multi_info_read(multi, &rc);
        if(msg) {
          bool retry;
          struct per_transfer *ended;
          CURL *easy = msg->easy_handle;
          result = msg->data.result;
          curl_easy_getinfo(easy, CURLINFO_PRIVATE, (void *)&ended);
          curl_multi_remove_handle(multi, easy);

          result = post_per_transfer(global, ended, result, &retry);
          if(retry)
            continue;
          progress_finalize(ended); /* before it goes away */
          all_added--; /* one fewer added */
          removed = TRUE;
          (void)del_per_transfer(ended);
        }
      } while(msg);
      if(removed) {
        /* one or more transfers completed, add more! */
        (void)add_parallel_transfers(global, multi, share,
                                     &more_transfers,
                                     &added_transfers);
        if(added_transfers)
          /* we added new ones, make sure the loop doesn't exit yet */
          still_running = 1;
      }
    }
  }
2043
2044
2045
2046
2047
2048
2049





2050
2051

2052
2053
2054
2055
2056
2057
2058

static CURLcode serial_transfers(struct GlobalConfig *global,
                                 CURLSH *share)
{
  CURLcode returncode = CURLE_OK;
  CURLcode result = CURLE_OK;
  struct per_transfer *per;





  for(per = transfers; per;) {
    bool retry;

    result = pre_transfer(global, per);
    if(result)
      break;

#ifndef CURL_DISABLE_LIBCURL_OPTION
    if(global->libcurl) {
      result = easysrc_perform();







>
>
>
>
>


>







2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092

static CURLcode serial_transfers(struct GlobalConfig *global,
                                 CURLSH *share)
{
  CURLcode returncode = CURLE_OK;
  CURLcode result = CURLE_OK;
  struct per_transfer *per;
  bool added = FALSE;

  result = create_transfer(global, share, &added);
  if(result || !added)
    return result;
  for(per = transfers; per;) {
    bool retry;
    bool bailout = FALSE;
    result = pre_transfer(global, per);
    if(result)
      break;

#ifndef CURL_DISABLE_LIBCURL_OPTION
    if(global->libcurl) {
      result = easysrc_perform();
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080














2081
2082
2083
2084
2085




2086
2087
2088

2089
2090
2091

2092
2093
2094

2095
2096
2097
2098
2099
2100
2101
    else
#endif
      result = curl_easy_perform(per->curl);

    /* store the result of the actual transfer */
    returncode = result;

    result = post_transfer(global, share, per, result, &retry);
    if(retry)
      continue;
    per = del_transfer(per);

    /* Bail out upon critical errors or --fail-early */
    if(result || is_fatal_error(returncode) ||
       (returncode && global->fail_early))














      break;
  }
  if(returncode)
    /* returncode errors have priority */
    result = returncode;




  return result;
}


static CURLcode operate_do(struct GlobalConfig *global,
                           struct OperationConfig *config,
                           CURLSH *share)

{
  CURLcode result = CURLE_OK;
  bool capath_from_env;


  /* Check we have a url */
  if(!config->url_list || !config->url_list->url) {
    helpf(global->errors, "no URL specified!\n");
    return CURLE_FAILED_INIT;
  }








|


<




>
>
>
>
>
>
>
>
>
>
>
>
>
>





>
>
>
>



>
|
|
|
>



>







2100
2101
2102
2103
2104
2105
2106
2107
2108
2109

2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
    else
#endif
      result = curl_easy_perform(per->curl);

    /* store the result of the actual transfer */
    returncode = result;

    result = post_per_transfer(global, per, result, &retry);
    if(retry)
      continue;


    /* Bail out upon critical errors or --fail-early */
    if(result || is_fatal_error(returncode) ||
       (returncode && global->fail_early))
      bailout = TRUE;
    else {
      /* setup the next one just before we delete this */
      result = create_transfer(global, share, &added);
      if(result)
        bailout = TRUE;
    }

    /* Release metalink related resources here */
    delete_metalinkfile(per->mlfile);

    per = del_per_transfer(per);

    if(bailout)
      break;
  }
  if(returncode)
    /* returncode errors have priority */
    result = returncode;

  if(result)
    single_transfer_cleanup(global->current);

  return result;
}

/* setup a transfer for the given config */
static CURLcode transfer_per_config(struct GlobalConfig *global,
                                    struct OperationConfig *config,
                                    CURLSH *share,
                                    bool *added)
{
  CURLcode result = CURLE_OK;
  bool capath_from_env;
  *added = FALSE;

  /* Check we have a url */
  if(!config->url_list || !config->url_list->url) {
    helpf(global->errors, "no URL specified!\n");
    return CURLE_FAILED_INIT;
  }

2176
2177
2178
2179
2180
2181
2182

2183


2184







2185











2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209




2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
      }
#endif
    }
    curl_easy_cleanup(curltls);
  }

  if(!result)

    /* loop through the list of given URLs */


    result = create_transfers(global, config, share, capath_from_env);



















  return result;
}

static CURLcode operate_transfers(struct GlobalConfig *global,
                                  CURLSH *share,
                                  CURLcode result)
{
  /* Save the values of noprogress and isatty to restore them later on */
  bool orig_noprogress = global->noprogress;
  bool orig_isatty = global->isatty;
  struct per_transfer *per;

  /* Time to actually do the transfers */
  if(!result) {
    if(global->parallel)
      result = parallel_transfers(global, share);
    else
      result = serial_transfers(global, share);
  }

  /* cleanup if there are any left */
  for(per = transfers; per;) {
    bool retry;
    (void)post_transfer(global, share, per, result, &retry);




    /* Free list of given URLs */
    clean_getout(per->config);

    /* Release metalink related resources here */
    clean_metalink(per->config);
    per = del_transfer(per);
  }

  /* Reset the global config variables */
  global->noprogress = orig_noprogress;
  global->isatty = orig_isatty;


  return result;
}

CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[])
{
  CURLcode result = CURLE_OK;

  /* Setup proper locale from environment */
#ifdef HAVE_SETLOCALE
  setlocale(LC_ALL, "");
#endif

  /* Parse .curlrc if necessary */
  if((argc == 1) ||
     (!curl_strequal(argv[1], "-q") &&
      !curl_strequal(argv[1], "--disable"))) {
    parseconfig(NULL, config); /* ignore possible failure */

    /* If we had no arguments then make sure a url was specified in .curlrc */
    if((argc < 2) && (!config->first->url_list)) {
      helpf(config->errors, NULL);
      result = CURLE_FAILED_INIT;
    }
  }

  if(!result) {
    /* Parse the command line arguments */
    ParameterError res = parse_args(config, argc, argv);
    if(res) {
      result = CURLE_OK;

      /* Check if we were asked for the help */
      if(res == PARAM_HELP_REQUESTED)
        tool_help();
      /* Check if we were asked for the manual */







>
|
>
>
|
>
>
>
>
>
>
>
|
>
>
>
>
>
>
>
>
>
>
>



|



















|
>
>
>
>





|










|












|


|
|






|







2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
      }
#endif
    }
    curl_easy_cleanup(curltls);
  }

  if(!result)
    result = single_transfer(global, config, share, capath_from_env, added);

  return result;
}

/*
 * 'create_transfer' gets the details and sets up a new transfer if 'added'
 * returns TRUE.
 */
static CURLcode create_transfer(struct GlobalConfig *global,
                                CURLSH *share,
                                bool *added)
{
  CURLcode result = CURLE_OK;
  *added = FALSE;
  while(global->current) {
    result = transfer_per_config(global, global->current, share, added);
    if(!result && !*added) {
      /* when one set is drained, continue to next */
      global->current = global->current->next;
      continue;
    }
    break;
  }
  return result;
}

static CURLcode run_all_transfers(struct GlobalConfig *global,
                                  CURLSH *share,
                                  CURLcode result)
{
  /* Save the values of noprogress and isatty to restore them later on */
  bool orig_noprogress = global->noprogress;
  bool orig_isatty = global->isatty;
  struct per_transfer *per;

  /* Time to actually do the transfers */
  if(!result) {
    if(global->parallel)
      result = parallel_transfers(global, share);
    else
      result = serial_transfers(global, share);
  }

  /* cleanup if there are any left */
  for(per = transfers; per;) {
    bool retry;
    CURLcode result2 = post_per_transfer(global, per, result, &retry);
    if(!result)
      /* don't overwrite the original error */
      result = result2;

    /* Free list of given URLs */
    clean_getout(per->config);

    /* Release metalink related resources here */
    clean_metalink(per->config);
    per = del_per_transfer(per);
  }

  /* Reset the global config variables */
  global->noprogress = orig_noprogress;
  global->isatty = orig_isatty;


  return result;
}

CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[])
{
  CURLcode result = CURLE_OK;

  /* Setup proper locale from environment */
#ifdef HAVE_SETLOCALE
  setlocale(LC_ALL, "");
#endif

  /* Parse .curlrc if necessary */
  if((argc == 1) ||
     (!curl_strequal(argv[1], "-q") &&
      !curl_strequal(argv[1], "--disable"))) {
    parseconfig(NULL, global); /* ignore possible failure */

    /* If we had no arguments then make sure a url was specified in .curlrc */
    if((argc < 2) && (!global->first->url_list)) {
      helpf(global->errors, NULL);
      result = CURLE_FAILED_INIT;
    }
  }

  if(!result) {
    /* Parse the command line arguments */
    ParameterError res = parse_args(global, argc, argv);
    if(res) {
      result = CURLE_OK;

      /* Check if we were asked for the help */
      if(res == PARAM_HELP_REQUESTED)
        tool_help();
      /* Check if we were asked for the manual */
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
      else if(res == PARAM_LIBCURL_UNSUPPORTED_PROTOCOL)
        result = CURLE_UNSUPPORTED_PROTOCOL;
      else
        result = CURLE_FAILED_INIT;
    }
    else {
#ifndef CURL_DISABLE_LIBCURL_OPTION
      if(config->libcurl) {
        /* Initialise the libcurl source output */
        result = easysrc_init();
      }
#endif

      /* Perform the main operations */
      if(!result) {
        size_t count = 0;
        struct OperationConfig *operation = config->first;
        CURLSH *share = curl_share_init();
        if(!share) {
#ifndef CURL_DISABLE_LIBCURL_OPTION
          if(config->libcurl) {
            /* Cleanup the libcurl source output */
            easysrc_cleanup();
          }
#endif
          return CURLE_OUT_OF_MEMORY;
        }








|








|



|







2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
      else if(res == PARAM_LIBCURL_UNSUPPORTED_PROTOCOL)
        result = CURLE_UNSUPPORTED_PROTOCOL;
      else
        result = CURLE_FAILED_INIT;
    }
    else {
#ifndef CURL_DISABLE_LIBCURL_OPTION
      if(global->libcurl) {
        /* Initialise the libcurl source output */
        result = easysrc_init();
      }
#endif

      /* Perform the main operations */
      if(!result) {
        size_t count = 0;
        struct OperationConfig *operation = global->first;
        CURLSH *share = curl_share_init();
        if(!share) {
#ifndef CURL_DISABLE_LIBCURL_OPTION
          if(global->libcurl) {
            /* Cleanup the libcurl source output */
            easysrc_cleanup();
          }
#endif
          return CURLE_OUT_OF_MEMORY;
        }

2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
        do {
          result = get_args(operation, count++);

          operation = operation->next;
        } while(!result && operation);

        /* Set the current operation pointer */
        config->current = config->first;

        /* Setup all transfers */
        while(!result && config->current) {
          result = operate_do(config, config->current, share);
          config->current = config->current->next;
        }

        /* now run! */
        result = operate_transfers(config, share, result);

        curl_share_cleanup(share);
#ifndef CURL_DISABLE_LIBCURL_OPTION
        if(config->libcurl) {
          /* Cleanup the libcurl source output */
          easysrc_cleanup();

          /* Dump the libcurl code if previously enabled */
          dumpeasysrc(config);
        }
#endif
      }
      else
        helpf(config->errors, "out of memory\n");
    }
  }

  return result;
}







|

<
<
<
<
<
<

|



|




|




|





2380
2381
2382
2383
2384
2385
2386
2387
2388






2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
        do {
          result = get_args(operation, count++);

          operation = operation->next;
        } while(!result && operation);

        /* Set the current operation pointer */
        global->current = global->first;







        /* now run! */
        result = run_all_transfers(global, share, result);

        curl_share_cleanup(share);
#ifndef CURL_DISABLE_LIBCURL_OPTION
        if(global->libcurl) {
          /* Cleanup the libcurl source output */
          easysrc_cleanup();

          /* Dump the libcurl code if previously enabled */
          dumpeasysrc(global);
        }
#endif
      }
      else
        helpf(global->errors, "out of memory\n");
    }
  }

  return result;
}
Changes to jni/curl/src/tool_operhlp.c.
33
34
35
36
37
38
39

40
41
42
43
44
45
46
47
48
49
50
51

52
53
54
55
56
57
58
#include "tool_operhlp.h"
#include "tool_metalink.h"

#include "memdebug.h" /* keep this as LAST include */

void clean_getout(struct OperationConfig *config)
{

  struct getout *next;
  struct getout *node = config->url_list;

  while(node) {
    next = node->next;
    Curl_safefree(node->url);
    Curl_safefree(node->outfile);
    Curl_safefree(node->infile);
    Curl_safefree(node);
    node = next;
  }
  config->url_list = NULL;

}

bool output_expected(const char *url, const char *uploadfile)
{
  if(!uploadfile)
    return TRUE;  /* download */
  if(checkprefix("http://", url) || checkprefix("https://", url))







>
|
|

|
|
|
|
|
|
|
|
|
>







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include "tool_operhlp.h"
#include "tool_metalink.h"

#include "memdebug.h" /* keep this as LAST include */

void clean_getout(struct OperationConfig *config)
{
  if(config) {
    struct getout *next;
    struct getout *node = config->url_list;

    while(node) {
      next = node->next;
      Curl_safefree(node->url);
      Curl_safefree(node->outfile);
      Curl_safefree(node->infile);
      Curl_safefree(node);
      node = next;
    }
    config->url_list = NULL;
  }
}

bool output_expected(const char *url, const char *uploadfile)
{
  if(!uploadfile)
    return TRUE;  /* download */
  if(checkprefix("http://", url) || checkprefix("https://", url))
Changes to jni/curl/src/tool_paramhlp.c.
54
55
56
57
58
59
60
61
62
63
64



65
66




67
68
69
70
71
72
73
74
75











76
77
78
79
80
81

82
83
84
85
86
87
88
    node->flags = config->default_node_flags;
  }
  return node;
}

ParameterError file2string(char **bufp, FILE *file)
{
  char *ptr;
  char *string = NULL;

  if(file) {



    char buffer[256];
    size_t stringlen = 0;




    while(fgets(buffer, sizeof(buffer), file)) {
      size_t buflen;
      ptr = strchr(buffer, '\r');
      if(ptr)
        *ptr = '\0';
      ptr = strchr(buffer, '\n');
      if(ptr)
        *ptr = '\0';
      buflen = strlen(buffer);











      ptr = realloc(string, stringlen + buflen + 1);
      if(!ptr) {
        Curl_safefree(string);
        return PARAM_NO_MEM;
      }
      string = ptr;

      strcpy(string + stringlen, buffer);
      stringlen += buflen;
    }
  }
  *bufp = string;
  return PARAM_OK;
}







<

<

>
>
>


>
>
>
>









>
>
>
>
>
>
>
>
>
>
>
|
|
|
|
|
|
>







54
55
56
57
58
59
60

61

62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
    node->flags = config->default_node_flags;
  }
  return node;
}

ParameterError file2string(char **bufp, FILE *file)
{

  char *string = NULL;

  if(file) {
    char *ptr;
    size_t alloc = 512;
    size_t alloc_needed;
    char buffer[256];
    size_t stringlen = 0;
    string = malloc(alloc);
    if(!string)
      return PARAM_NO_MEM;

    while(fgets(buffer, sizeof(buffer), file)) {
      size_t buflen;
      ptr = strchr(buffer, '\r');
      if(ptr)
        *ptr = '\0';
      ptr = strchr(buffer, '\n');
      if(ptr)
        *ptr = '\0';
      buflen = strlen(buffer);
      alloc_needed = stringlen + buflen + 1;
      if(alloc < alloc_needed) {
#if SIZEOF_SIZE_T < 8
        if(alloc >= (size_t)SIZE_T_MAX/2) {
          Curl_safefree(string);
          return PARAM_NO_MEM;
        }
#endif
        /* doubling is enough since the string to add is always max 256 bytes
           and the alloc size start at 512 */
        alloc *= 2;
        ptr = realloc(string, alloc);
        if(!ptr) {
          Curl_safefree(string);
          return PARAM_NO_MEM;
        }
        string = ptr;
      }
      strcpy(string + stringlen, buffer);
      stringlen += buflen;
    }
  }
  *bufp = string;
  return PARAM_OK;
}
Changes to jni/curl/src/tool_setopt.h.
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 * Macros used in operate()
 */

#define SETOPT_CHECK(v,opt) do {                \
    if(!tool_setopt_skip(opt)) {                \
      result = (v);                             \
      if(result)                                \
        goto show_error;                        \
    }                                           \
  } WHILE_FALSE

/* allow removed features to simulate success: */
bool tool_setopt_skip(CURLoption tag);

#ifndef CURL_DISABLE_LIBCURL_OPTION







|







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 * Macros used in operate()
 */

#define SETOPT_CHECK(v,opt) do {                \
    if(!tool_setopt_skip(opt)) {                \
      result = (v);                             \
      if(result)                                \
        break;                                  \
    }                                           \
  } WHILE_FALSE

/* allow removed features to simulate success: */
bool tool_setopt_skip(CURLoption tag);

#ifndef CURL_DISABLE_LIBCURL_OPTION
Changes to jni/curl/src/tool_urlglob.c.
483
484
485
486
487
488
489



490
491
492
493
494
495
496
  return CURLE_OK;
}

void glob_cleanup(URLGlob* glob)
{
  size_t i;
  int elem;




  for(i = 0; i < glob->size; i++) {
    if((glob->pattern[i].type == UPTSet) &&
       (glob->pattern[i].content.Set.elements)) {
      for(elem = glob->pattern[i].content.Set.size - 1;
          elem >= 0;
          --elem) {







>
>
>







483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
  return CURLE_OK;
}

void glob_cleanup(URLGlob* glob)
{
  size_t i;
  int elem;

  if(!glob)
    return;

  for(i = 0; i < glob->size; i++) {
    if((glob->pattern[i].type == UPTSet) &&
       (glob->pattern[i].content.Set.elements)) {
      for(elem = glob->pattern[i].content.Set.size - 1;
          elem >= 0;
          --elem) {
Changes to jni/curl/src/tool_version.h.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include <curl/curlver.h>

#define CURL_NAME "curl"
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
#define CURL_VERSION "7.66.0"
#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
#define CURL_ID CURL_NAME " " CURL_VERSION " (" OS ") "

#endif /* HEADER_CURL_TOOL_VERSION_H */







|






21
22
23
24
25
26
27
28
29
30
31
32
33
34
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include <curl/curlver.h>

#define CURL_NAME "curl"
#define CURL_COPYRIGHT LIBCURL_COPYRIGHT
#define CURL_VERSION "7.67.0"
#define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
#define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
#define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
#define CURL_ID CURL_NAME " " CURL_VERSION " (" OS ") "

#endif /* HEADER_CURL_TOOL_VERSION_H */
Changes to jni/curl/tests/certs/Server-localhost-lastSAN-sv.crl.
1
2
3
4
5
6
7
8
9
10
11
12
-----BEGIN X509 CRL-----
MIIB3DCBxQIBATANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJOTjExMC8GA1UE
CgwoRWRlbCBDdXJsIEFyY3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDEmMCQG
A1UEAwwdTm9ydGhlcm4gTm93aGVyZSBUcnVzdCBBbmNob3IXDTE4MDkwNTIzMjkw
MVoXDTE4MTAwNTIzMjkwMVowGTAXAgYN+LitKqAXDTE4MDkwNTIzMjkwMVqgDjAM
MAoGA1UdFAQDAgEBMA0GCSqGSIb3DQEBBQUAA4IBAQBc8MVCmUUhPb/yJ05wh1EA
rBbLCjTYTDL9DW5YJIoBUKYWi5DGETS5BmgPU3ci6Pfa6eJ51oRurOCJHnL691Gp
Y1d6R5CiM8mtHOPGCAgvvo0x+xJ/GzikxaggTDPA2CZWAFjBApMNdMvGTwurcnW9
0jOl7zsfFoxSDlRqdFw7QW7Axju8vxRpMj6/pVBKmqgM+NUavcVPmRAYlsxCaeNH
cdBviuw4qt3T6eLcb/RNIuCuXcp8a7ysqkGdSS/Pp/drOGZAmugbj1kmjS8b0n1M
9L8wxG0k/TsgKSlWy+wbCJcUiYHgwzTd9i/XEdwxGvOnKFeiCvqShhkEG7QjfHs2
-----END X509 CRL-----



|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
-----BEGIN X509 CRL-----
MIIB3DCBxQIBATANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJOTjExMC8GA1UE
CgwoRWRlbCBDdXJsIEFyY3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDEmMCQG
A1UEAwwdTm9ydGhlcm4gTm93aGVyZSBUcnVzdCBBbmNob3IXDTE5MTEwMjEyNTMy
N1oXDTE5MTIwMjEyNTMyN1owGTAXAgYOTbnGJLAXDTE5MTEwMjEyNTMyNlqgDjAM
MAoGA1UdFAQDAgEBMA0GCSqGSIb3DQEBBQUAA4IBAQClxELmQvUD2S0UcNFbjMe/
vv80HtpnwhTK356DUggVBh+EjvIXT4EakBbxxgDZMkaxJYH70RQ0UPLtB41pfmg3
BS6Gl/0Vn+cAk8w/+dG4DHibdeqSPjIHCaAlkKqHV89Lp7IS6qrD0Bn/L7De6O7c
4xLvRiDvx/cO5uAkX8vOtzKsOU/0U06QSSGK09dRL2mHbaH4FQj2PFMgcDd1GxAQ
saii0bWZ6qLiYkQRtJGAplD+uqOaSSsioqVFy/NjaIip0axNtCG9sBhvp6lTpeiR
Phl04I+WyKoP5f/NTU+fKbWarWka4evPSpRM2o9QYrYb/vj0TMK8lJ3JqgwlLrJ+
-----END X509 CRL-----
Changes to jni/curl/tests/certs/Server-localhost-lastSAN-sv.crt.
1
2
3
4

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 15361901406880 (0xdf8b8ad2aa0)

    Signature Algorithm: sha1WithRSAEncryption
        Issuer:
            countryName               = NN
            organizationName          = Edel Curl Arctic Illudium Research Cloud
            commonName                = Northern Nowhere Trust Anchor
        Validity
            Not Before: Sep  5 23:29:01 2018 GMT
            Not After : Nov 22 23:29:01 2026 GMT
        Subject:
            countryName               = NN
            organizationName          = Edel Curl Arctic Illudium Research Cloud
            commonName                = localhost.nn
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:df:16:15:5f:2a:a4:50:cf:3a:a8:79:6e:22:8d:
                    95:16:b7:4d:7d:d2:1f:4f:6d:2d:7a:7d:dc:8a:4f:
                    53:7b:5f:c9:de:5c:88:6c:a2:74:26:35:1c:78:68:
                    c1:60:25:a7:7b:b6:1a:9a:aa:33:d0:9f:5e:f2:2e:
                    21:04:8c:0d:9a:28:f5:61:40:3c:34:1a:9b:8a:70:
                    81:6d:83:9e:7c:d0:4c:d9:79:dc:37:d9:24:6e:73:
                    c7:61:31:71:e9:f5:97:b7:65:ad:3d:f6:af:20:6f:
                    56:b9:b5:42:b5:3d:96:61:31:eb:0d:4c:e9:f5:31:
                    d3:25:af:40:b3:bb:81:04:7f:1a:ce:21:18:83:52:
                    2d:51:31:ae:82:f9:cb:10:d3:d5:06:af:f8:71:e8:
                    a3:c6:9f:7b:48:da:e2:28:af:1c:ff:41:6d:32:81:
                    45:59:d7:64:e4:b1:d7:c9:86:6a:0b:65:71:66:d6:
                    42:a8:67:fd:83:49:20:75:16:1e:bb:1b:85:5c:7e:
                    e2:8f:5f:1c:81:d3:8a:95:d6:92:5c:9e:7f:a2:10:
                    08:e1:df:ae:69:68:3f:8d:dd:79:4f:da:3f:79:b5:
                    02:97:57:30:67:4d:3d:76:35:b5:4f:d1:5d:35:dd:
                    d4:b5:6b:57:b2:e0:23:35:ad:1a:bf:6f:77:e6:bc:
                    58:ed
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Alternative Name: 
                DNS:localhost1, DNS:localhost2, DNS:localhost
            X509v3 Key Usage: 
                Digital Signature, Key Encipherment, Key Agreement
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication
            X509v3 Subject Key Identifier: 
                7C:9A:EA:9B:92:98:FB:77:25:89:8B:EF:D3:F4:88:34:AF:EA:24:CC
            X509v3 Authority Key Identifier: 
                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE

            X509v3 Basic Constraints: 
                CA:FALSE
    Signature Algorithm: sha1WithRSAEncryption
         0f:97:60:47:2f:22:9f:d4:16:99:5a:ed:f4:b5:54:31:bf:9f:
         a1:bd:2d:8b:eb:c1:24:db:73:30:c7:46:d6:4c:c8:c6:38:0c:
         9a:e6:d6:5e:e8:a7:fb:9f:b6:44:66:73:43:86:46:10:c0:4c:
         40:4e:c1:d7:e4:41:0b:f0:61:f0:6f:45:8c:5a:14:40:42:97:
         c3:03:d0:ff:6d:4a:06:80:65:49:d4:2f:07:9d:86:59:6b:5b:
         9e:bc:0c:46:8a:62:da:c0:22:af:13:6c:0d:9d:54:5e:46:53:
         a5:aa:f2:80:44:c7:07:6e:f7:b0:4c:37:5c:31:08:a0:37:df:
         8a:35:92:3c:8c:91:2f:64:4f:d3:a0:eb:95:b3:4a:9e:f7:ac:
         25:ad:06:13:5c:dd:bd:d5:6b:74:8d:c7:c5:a6:b4:89:27:fd:
         b7:c2:24:a7:6a:b3:64:e6:e6:31:91:35:fc:0e:15:14:38:d6:
         39:b0:c4:b2:c1:c8:c7:ed:25:d7:b0:a9:b9:a0:70:33:42:90:
         86:33:2a:d8:d5:8a:02:e6:ab:8d:92:d6:ae:b4:1d:e9:6c:22:
         a5:2f:1a:48:48:2b:5c:b8:30:01:4b:27:1a:d3:cf:21:77:ab:
         9f:bc:55:34:2e:9f:03:2b:17:0b:c3:44:8e:a8:94:ae:92:a2:
         9a:33:c0:8e
-----BEGIN CERTIFICATE-----
MIID3jCCAsagAwIBAgIGDfi4rSqgMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
Fw0xODA5MDUyMzI5MDFaFw0yNjExMjIyMzI5MDFaMFcxCzAJBgNVBAYTAk5OMTEw
LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQDfFhVfKqRQzzqoeW4ijZUWt0190h9PbS16fdyKT1N7X8neXIhsonQm
NRx4aMFgJad7thqaqjPQn17yLiEEjA2aKPVhQDw0GpuKcIFtg5580EzZedw32SRu
c8dhMXHp9Ze3Za099q8gb1a5tUK1PZZhMesNTOn1MdMlr0Czu4EEfxrOIRiDUi1R
Ma6C+csQ09UGr/hx6KPGn3tI2uIorxz/QW0ygUVZ12TksdfJhmoLZXFm1kKoZ/2D
SSB1Fh67G4VcfuKPXxyB04qV1pJcnn+iEAjh365paD+N3XlP2j95tQKXVzBnTT12
NbVP0V013dS1a1ey4CM1rRq/b3fmvFjtAgMBAAGjgZ4wgZswLAYDVR0RBCUwI4IK
bG9jYWxob3N0MYIKbG9jYWxob3N0MoIJbG9jYWxob3N0MAsGA1UdDwQEAwIDqDAT
BgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQUfJrqm5KY+3cliYvv0/SINK/q
JMwwHwYDVR0jBBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADAN
BgkqhkiG9w0BAQUFAAOCAQEAD5dgRy8in9QWmVrt9LVUMb+fob0ti+vBJNtzMMdG
1kzIxjgMmubWXuin+5+2RGZzQ4ZGEMBMQE7B1+RBC/Bh8G9FjFoUQEKXwwPQ/21K
BoBlSdQvB52GWWtbnrwMRopi2sAirxNsDZ1UXkZTparygETHB273sEw3XDEIoDff
ijWSPIyRL2RP06DrlbNKnvesJa0GE1zdvdVrdI3Hxaa0iSf9t8Ikp2qzZObmMZE1
/A4VFDjWObDEssHIx+0l17CpuaBwM0KQhjMq2NWKAuarjZLWrrQd6WwipS8aSEgr
XLgwAUsnGtPPIXern7xVNC6fAysXC8NEjqiUrpKimjPAjg==
-----END CERTIFICATE-----



|
>
|





|
|






|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|









|





|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|


|


|
|
|
|
|
|

|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            0e:4d:b9:c6:24:b0
        Signature Algorithm: sha256WithRSAEncryption
        Issuer:
            countryName               = NN
            organizationName          = Edel Curl Arctic Illudium Research Cloud
            commonName                = Northern Nowhere Trust Anchor
        Validity
            Not Before: Nov  2 12:53:25 2019 GMT
            Not After : Jan 19 12:53:25 2028 GMT
        Subject:
            countryName               = NN
            organizationName          = Edel Curl Arctic Illudium Research Cloud
            commonName                = localhost.nn
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:bd:97:0e:a7:6d:b6:73:8c:d0:21:6b:f3:36:74:
                    5d:0a:aa:3a:f0:fa:6e:b1:5c:1c:13:74:ca:67:2b:
                    22:03:d1:a6:3c:25:ef:87:4f:e8:38:9f:21:1d:2e:
                    88:12:36:66:82:03:02:4c:f8:17:35:02:95:31:b1:
                    53:40:21:24:2f:00:f0:bf:80:58:16:b1:92:b3:d3:
                    78:bf:78:cb:0a:91:0c:d2:6d:5d:b2:1f:41:73:16:
                    02:7c:1a:cd:16:25:c9:e1:1b:81:bd:84:93:4c:63:
                    ce:38:f4:3e:ad:98:6b:00:89:a8:ba:f5:7e:08:83:
                    f3:9a:f5:98:b8:9f:d6:d8:c7:d4:f3:07:1c:8f:ef:
                    bc:29:10:60:8c:85:8b:4c:7a:73:c7:9f:a8:23:2f:
                    c4:47:f5:18:85:98:fb:27:de:58:93:4b:08:a5:66:
                    c9:df:db:f0:22:f8:64:9f:a1:56:89:97:ab:02:2c:
                    5a:99:f2:6f:bf:72:31:90:22:32:ae:86:25:6b:13:
                    c6:72:ec:df:2e:c8:12:00:c1:e3:38:b4:a0:40:ba:
                    01:61:c2:d7:b1:ef:7d:4b:29:18:e2:fe:28:d0:98:
                    e4:65:3f:4c:34:39:e4:82:a9:ca:b2:3d:c4:91:8f:
                    a0:94:bf:e3:f8:b3:73:48:b7:fe:fa:04:43:e7:b5:
                    bc:bd
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Alternative Name: 
                DNS:localhost1, DNS:localhost2, DNS:localhost
            X509v3 Key Usage: 
                Digital Signature, Key Encipherment, Key Agreement
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication
            X509v3 Subject Key Identifier: 
                4E:54:63:95:A1:58:0C:FA:BD:3E:58:26:AF:AF:A4:F3:66:1A:CB:25
            X509v3 Authority Key Identifier: 
                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE

            X509v3 Basic Constraints: 
                CA:FALSE
    Signature Algorithm: sha256WithRSAEncryption
         2c:f9:48:33:7c:93:ca:3c:9c:58:92:8c:2b:87:61:9f:0d:9c:
         9d:e8:43:43:12:d6:a3:40:71:ec:cb:31:76:80:68:b1:54:d1:
         86:f4:b3:9e:c8:50:62:b4:87:12:be:9b:d6:3c:2b:cf:22:0e:
         66:26:c2:31:dd:1f:c6:97:1e:61:a4:51:ea:68:75:81:66:b9:
         3b:a6:1f:f6:80:ec:6b:aa:65:66:0c:02:ab:c9:57:bd:6a:4e:
         6d:24:30:13:7b:65:17:60:9a:14:37:57:f7:22:66:55:7d:1a:
         1a:5b:27:43:3b:d4:88:bc:2f:d3:d7:bb:d5:3f:9b:25:26:5d:
         39:a0:4c:8a:84:2c:db:04:87:8a:df:49:7d:4b:d2:85:7a:09:
         5e:df:6b:1b:b5:6e:9c:bb:2b:f6:c5:01:19:5a:87:d0:cf:16:
         67:8b:54:41:87:c1:33:c3:21:f6:e5:84:d2:84:5d:da:82:cd:
         39:4d:50:97:f3:83:37:9e:e5:04:0e:dc:c6:20:d1:b3:f6:c7:
         3d:dd:95:be:8c:b9:72:72:7a:71:66:aa:4a:8e:cf:37:38:e8:
         c8:06:69:68:8d:d8:d6:8b:4c:23:50:27:fa:e9:bb:2a:a6:89:
         56:ad:be:4d:bd:be:0c:d7:55:b4:f4:b9:f7:6a:b5:2c:7f:5f:
         9f:df:f6:61
-----BEGIN CERTIFICATE-----
MIID3jCCAsagAwIBAgIGDk25xiSwMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNVBAYT
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
Fw0xOTExMDIxMjUzMjVaFw0yODAxMTkxMjUzMjVaMFcxCzAJBgNVBAYTAk5OMTEw
LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQC9lw6nbbZzjNAha/M2dF0Kqjrw+m6xXBwTdMpnKyID0aY8Je+HT+g4
nyEdLogSNmaCAwJM+Bc1ApUxsVNAISQvAPC/gFgWsZKz03i/eMsKkQzSbV2yH0Fz
FgJ8Gs0WJcnhG4G9hJNMY8449D6tmGsAiai69X4Ig/Oa9Zi4n9bYx9TzBxyP77wp
EGCMhYtMenPHn6gjL8RH9RiFmPsn3liTSwilZsnf2/Ai+GSfoVaJl6sCLFqZ8m+/
cjGQIjKuhiVrE8Zy7N8uyBIAweM4tKBAugFhwtex731LKRji/ijQmORlP0w0OeSC
qcqyPcSRj6CUv+P4s3NIt/76BEPntby9AgMBAAGjgZ4wgZswLAYDVR0RBCUwI4IK
bG9jYWxob3N0MYIKbG9jYWxob3N0MoIJbG9jYWxob3N0MAsGA1UdDwQEAwIDqDAT
BgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQUTlRjlaFYDPq9Plgmr6+k82Ya
yyUwHwYDVR0jBBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADAN
BgkqhkiG9w0BAQsFAAOCAQEALPlIM3yTyjycWJKMK4dhnw2cnehDQxLWo0Bx7Msx
doBosVTRhvSznshQYrSHEr6b1jwrzyIOZibCMd0fxpceYaRR6mh1gWa5O6Yf9oDs
a6plZgwCq8lXvWpObSQwE3tlF2CaFDdX9yJmVX0aGlsnQzvUiLwv09e71T+bJSZd
OaBMioQs2wSHit9JfUvShXoJXt9rG7VunLsr9sUBGVqH0M8WZ4tUQYfBM8Mh9uWE
0oRd2oLNOU1Ql/ODN57lBA7cxiDRs/bHPd2Vvoy5cnJ6cWaqSo7PNzjoyAZpaI3Y
1otMI1An+um7KqaJVq2+Tb2+DNdVtPS592q1LH9fn9/2YQ==
-----END CERTIFICATE-----
Changes to jni/curl/tests/certs/Server-localhost-lastSAN-sv.csr.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-----BEGIN CERTIFICATE REQUEST-----
MIICnDCCAYQCAQAwVzELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB
cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxFTATBgNVBAMMDGxvY2FsaG9z
dC5ubjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN8WFV8qpFDPOqh5
biKNlRa3TX3SH09tLXp93IpPU3tfyd5ciGyidCY1HHhowWAlp3u2GpqqM9CfXvIu
IQSMDZoo9WFAPDQam4pwgW2DnnzQTNl53DfZJG5zx2Excen1l7dlrT32ryBvVrm1
QrU9lmEx6w1M6fUx0yWvQLO7gQR/Gs4hGINSLVExroL5yxDT1Qav+HHoo8afe0ja
4iivHP9BbTKBRVnXZOSx18mGagtlcWbWQqhn/YNJIHUWHrsbhVx+4o9fHIHTipXW
klyef6IQCOHfrmloP43deU/aP3m1ApdXMGdNPXY1tU/RXTXd1LVrV7LgIzWtGr9v
d+a8WO0CAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQCNGbWvnceLjA+R8+p1skgq
0JxCZIUP/E8iOpg0eX2CjtU+9raYMNa7URtWa1kTSfxbuowPn21CSQmQ+1MDZv0Z
UTAADKwXO6dDvXkYY4LwpRIozsz1zx1ulUaYmg4D2FPBIxg9QNLB0ic9+gUYdUEX
Uw7vzxY8ExO99Z6rhJcNZPPYmj97MS/ZmBTZ8jxqjuOQ1R9mIhBvdsYdoDQR8SMK
1b/0qH0F5Ly2iWt+pi+muoz+tYUyiXrIzYGF4+gImYBJEy35Pni/H8mMY62TxbWi
QfhD9S8hxfT733X+UQQlQPToNDYdrmm/WcABOXrm8ESXfKvzs8aCodfCpDYIyxbu
-----END CERTIFICATE REQUEST-----



|
|
|
|
|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-----BEGIN CERTIFICATE REQUEST-----
MIICnDCCAYQCAQAwVzELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB
cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxFTATBgNVBAMMDGxvY2FsaG9z
dC5ubjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL2XDqdttnOM0CFr
8zZ0XQqqOvD6brFcHBN0ymcrIgPRpjwl74dP6DifIR0uiBI2ZoIDAkz4FzUClTGx
U0AhJC8A8L+AWBaxkrPTeL94ywqRDNJtXbIfQXMWAnwazRYlyeEbgb2Ek0xjzjj0
Pq2YawCJqLr1fgiD85r1mLif1tjH1PMHHI/vvCkQYIyFi0x6c8efqCMvxEf1GIWY
+yfeWJNLCKVmyd/b8CL4ZJ+hVomXqwIsWpnyb79yMZAiMq6GJWsTxnLs3y7IEgDB
4zi0oEC6AWHC17HvfUspGOL+KNCY5GU/TDQ55IKpyrI9xJGPoJS/4/izc0i3/voE
Q+e1vL0CAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQCpqiSx7VjqeQ2g8lpHF0Nb
/10H1DqaK7Z3y49xFK3xxKWdxKUdq3Nf7JYlhKpWDYokrkw5W+nhGQILYt6ZD8tN
tBZphyp3rvmTcewEFtbBne5N7OsAaanlBxeCLhnCICGhd+QCqYJKWe+zw8Oc5dCp
SRmWEL5FTu9AavBc0LDx1gNBupDiXGhF+BptOzgfDbijd0aRgy9cYwAQ9kXo4H+y
TH1ZYcSfB0gs7sShiY5FvuGr54Vv0czn+HqrdyWKDGLp7ilPYCT4WXBWfTon9j1H
9NDomhrVme9IGKItYHg+p59WpevklW900X4NZCVspePgNeBOvXYbGqDEN01o1xIG
-----END CERTIFICATE REQUEST-----
Changes to jni/curl/tests/certs/Server-localhost-lastSAN-sv.der.

cannot compute difference between binary files

Changes to jni/curl/tests/certs/Server-localhost-lastSAN-sv.key.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEA3xYVXyqkUM86qHluIo2VFrdNfdIfT20ten3cik9Te1/J3lyI
bKJ0JjUceGjBYCWne7Yamqoz0J9e8i4hBIwNmij1YUA8NBqbinCBbYOefNBM2Xnc
N9kkbnPHYTFx6fWXt2WtPfavIG9WubVCtT2WYTHrDUzp9THTJa9As7uBBH8aziEY
g1ItUTGugvnLENPVBq/4ceijxp97SNriKK8c/0FtMoFFWddk5LHXyYZqC2VxZtZC
qGf9g0kgdRYeuxuFXH7ij18cgdOKldaSXJ5/ohAI4d+uaWg/jd15T9o/ebUCl1cw
Z009djW1T9FdNd3UtWtXsuAjNa0av2935rxY7QIDAQABAoIBAFz/H7mkVQs62AET
Xc4Zp2To1Oz2gwbhRGwju6QMnYh4zfZcLKLctf6XdV7cjIBAMiloKH8BJMh7J2Fd
yXXTzHfPSztXQ8GUtfJoJAw7Kf5t9xtRqXO+mWlR6nOh4RLexng1cpq6Exc6UrTn
0v8qxV2PKaVJwt3r/1FeVWKXb5kne/Ob4LS7c0xnVqc7TGPtxLdS5mU5jrt0ZdZl
tcHulLX24rmxKcNvge6r2EiYuet3vUi1uuLBQbWUJIFRwetDufG/2e2ihOuvCj5s
aYNlRAo0JUwWl7geicRUdxkCpV/Qld7aYldKIcsSzgl6GLpgNpHjUFBbJBGSng0S
vA4CMQECgYEA9tseJG2IuudqDHnpuUxtnlfDJTfYjtBQnYG1ojbd9FUiuihv/B2K
pJ5uuowpKSnXOwaHtzyQ6XJA7JChRcDmJ4rf6R/1B61+1XVasyi2WffTJHbKzUk+
hBAUoGtJIvrChMOnAlQzifP8+b7ec/ghKy87dNlQzQlSunyEW6lAW/UCgYEA51mQ
JOFsasSvioKilsJuFCcFInZCRTEMz7vK9HW2Qnv71b3xeB6aNoJA8zf1Gw9q5clN
Yu+8pkGNsWeone8izTzzpgZGJmM/vLjSdIgaJytStha2FwlQxUjggOjSy1zIdW+v
ROw6OaT2J5+Qw2ruWqSaw2fiDgOpBCJgfg95JhkCgYAy5SppyEuQfXXX7KrLkX5o
Tx/k5Ia5qylzz/Jq53ULkyH9z6iHCnAzUJbzz0INQpsliEsi9FHMT8oi/A7EGulY
7cEMh5I1awfjarawiYxPMFFQC0301U0WXVpjWLtTgu/n/47HZCTcJHnb5AZpUpdE
GBDiHowSOgHcgR+o5lRmoQKBgFaPi0BRW+hi6S9RC5aO7vL5WpF3X/pVjO6Y3Co1
dNlRXHuv0w5XnOmyOK0IDdxvG1cYx6yx+IrYUjTDjTJyjDnwiVVgWZT5Y5qwKIZT
ej2Xlx3sR3s9EAyQ5Pc2pdBTSemuvQxzuqFg2H0g1eBYPRCLMCDW2JzXv8B9QE9K
aNDZAoGAKbVakgVlwrGffJb5c6ZFF9W/WoJYXJRA2/tMqvOcaZwSNq0ySHI/uUyM
3aexymibv5cGsFhtcr8vqxlX0PZ+PF2SRe/L58PmByEXGmyv6UZ/fhOCh8ttmPzt
GIh5PiKOd7RR7ydFY22M2+uW99wMf5jSH6uX1DRATFLxJygbnHA=
-----END RSA PRIVATE KEY-----

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAvZcOp222c4zQIWvzNnRdCqo68PpusVwcE3TKZysiA9GmPCXv
h0/oOJ8hHS6IEjZmggMCTPgXNQKVMbFTQCEkLwDwv4BYFrGSs9N4v3jLCpEM0m1d
sh9BcxYCfBrNFiXJ4RuBvYSTTGPOOPQ+rZhrAImouvV+CIPzmvWYuJ/W2MfU8wcc
j++8KRBgjIWLTHpzx5+oIy/ER/UYhZj7J95Yk0sIpWbJ39vwIvhkn6FWiZerAixa
mfJvv3IxkCIyroYlaxPGcuzfLsgSAMHjOLSgQLoBYcLXse99SykY4v4o0JjkZT9M
NDnkgqnKsj3EkY+glL/j+LNzSLf++gRD57W8vQIDAQABAoIBAQCC0wTKpdtbmtRX
66y1a9B0NolblgPiISRCjLnKPSpIpldmc+r4XTxqLexkvaIppx5PIpJo2FzzOGgJ
FUrUGspkIOr/yil+52PK8OcGgOziyrqlTdB0xDqelpZ6WuggG01WJ2v8gco+0TQR
ewDxOxbDFTq4YARrDdqAmG6dH7baeMDvh6IVe/dkJOVlyh0MA2QP+VR6fDv73jUe
3yW6G+hql9mjZK6Cgz2lWoeW7YXAvWtTXT68/bcZLO64oLyCjBmsbSrBRQN5m9M9
dWJV5B0h02P+uMF5H+EAD3qN5I670iSY3d+FWBpd3cA2arRGWlUXNmCGG3CjLYUS
wGw1lbFhAoGBAPG6JhdXAaH3DN9khp54plbFSIanvjWK8RAEaQgkurwDUL3o1LmC
ObqiCmMTU25HRlwWkwlCxejHfzOEqFdwiX5QuNmYBE6TYHtmnWSJ5ebMG7SOtlIS
9Z4dLNZz8j95OGKb3XI9qR0ItxsmuLgWvrJUayd0UXcU7BTzHCXGx99JAoGBAMjI
0z5+DeTwBhDY1mIUY081FmhrT9PhFHGtRy2OIENW0ZhJ5yE+ygVQssnR+Lr/yl1p
zGC+CM//5wmJ774Xx0reMsh/rgK4Z0Wq47JJFGo0RMfYVmlod0OndtdobDc7ds7t
Q3wIGt2ZXW6BtzMo8KVUuuHL8QwZoZqJNe/7QE3VAoGAGGrRRjJHu/CUoEwrPP66
7rDm7pMrJ4VtbEzFv0jWg/9hvI00T7jT1AJiQjfFibIxbUPqflj8XNMqCi4wQwTf
Hp9QzMoKRVWlvVFUPL+hNXsQoWB5EjlQDjSsPs1ffwHjrDJKYCvSVVh4BooWxqGl
iaX1XPrm77xxTHxyL26w6eECgYA176S3g9stpcCrY+RrInju/R7Q3Arsquj4BIk7
VpOaI0dYdnnNN3XDacMtbec4LKBq6ZHKZyIs5dxldpVdZjvWA8x2ib3v4yNy1o4m
BXWjdfkICjhkRnjLRsAo61cumx22Row7VF4LKzirB9NzvcqvTwyIvWU6T+RWhAdm
OQM0JQKBgC+gmBGfnQShTRYlfpb4RVnDijPpC34AdEO7wdeMcdQK9KfWsLZT5y0w
qoZhW9IPlu1dNRhwHqGHWu2CmQVwFpy5/ccpukCJfyZw7edbb9dIqzKlUWw8Jmmg
C7WKz4z3mKkZrwptFxDu0dpQ644yOP/gnRaLLyP0zn/brmnYz09X
-----END RSA PRIVATE KEY-----
Changes to jni/curl/tests/certs/Server-localhost-lastSAN-sv.pem.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
commonName_value              = localhost.nn

[something]
# The key
# the certificate
# some dhparam
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEA3xYVXyqkUM86qHluIo2VFrdNfdIfT20ten3cik9Te1/J3lyI
bKJ0JjUceGjBYCWne7Yamqoz0J9e8i4hBIwNmij1YUA8NBqbinCBbYOefNBM2Xnc
N9kkbnPHYTFx6fWXt2WtPfavIG9WubVCtT2WYTHrDUzp9THTJa9As7uBBH8aziEY
g1ItUTGugvnLENPVBq/4ceijxp97SNriKK8c/0FtMoFFWddk5LHXyYZqC2VxZtZC
qGf9g0kgdRYeuxuFXH7ij18cgdOKldaSXJ5/ohAI4d+uaWg/jd15T9o/ebUCl1cw
Z009djW1T9FdNd3UtWtXsuAjNa0av2935rxY7QIDAQABAoIBAFz/H7mkVQs62AET
Xc4Zp2To1Oz2gwbhRGwju6QMnYh4zfZcLKLctf6XdV7cjIBAMiloKH8BJMh7J2Fd
yXXTzHfPSztXQ8GUtfJoJAw7Kf5t9xtRqXO+mWlR6nOh4RLexng1cpq6Exc6UrTn
0v8qxV2PKaVJwt3r/1FeVWKXb5kne/Ob4LS7c0xnVqc7TGPtxLdS5mU5jrt0ZdZl
tcHulLX24rmxKcNvge6r2EiYuet3vUi1uuLBQbWUJIFRwetDufG/2e2ihOuvCj5s
aYNlRAo0JUwWl7geicRUdxkCpV/Qld7aYldKIcsSzgl6GLpgNpHjUFBbJBGSng0S
vA4CMQECgYEA9tseJG2IuudqDHnpuUxtnlfDJTfYjtBQnYG1ojbd9FUiuihv/B2K
pJ5uuowpKSnXOwaHtzyQ6XJA7JChRcDmJ4rf6R/1B61+1XVasyi2WffTJHbKzUk+
hBAUoGtJIvrChMOnAlQzifP8+b7ec/ghKy87dNlQzQlSunyEW6lAW/UCgYEA51mQ
JOFsasSvioKilsJuFCcFInZCRTEMz7vK9HW2Qnv71b3xeB6aNoJA8zf1Gw9q5clN
Yu+8pkGNsWeone8izTzzpgZGJmM/vLjSdIgaJytStha2FwlQxUjggOjSy1zIdW+v
ROw6OaT2J5+Qw2ruWqSaw2fiDgOpBCJgfg95JhkCgYAy5SppyEuQfXXX7KrLkX5o
Tx/k5Ia5qylzz/Jq53ULkyH9z6iHCnAzUJbzz0INQpsliEsi9FHMT8oi/A7EGulY
7cEMh5I1awfjarawiYxPMFFQC0301U0WXVpjWLtTgu/n/47HZCTcJHnb5AZpUpdE
GBDiHowSOgHcgR+o5lRmoQKBgFaPi0BRW+hi6S9RC5aO7vL5WpF3X/pVjO6Y3Co1
dNlRXHuv0w5XnOmyOK0IDdxvG1cYx6yx+IrYUjTDjTJyjDnwiVVgWZT5Y5qwKIZT
ej2Xlx3sR3s9EAyQ5Pc2pdBTSemuvQxzuqFg2H0g1eBYPRCLMCDW2JzXv8B9QE9K
aNDZAoGAKbVakgVlwrGffJb5c6ZFF9W/WoJYXJRA2/tMqvOcaZwSNq0ySHI/uUyM
3aexymibv5cGsFhtcr8vqxlX0PZ+PF2SRe/L58PmByEXGmyv6UZ/fhOCh8ttmPzt
GIh5PiKOd7RR7ydFY22M2+uW99wMf5jSH6uX1DRATFLxJygbnHA=
-----END RSA PRIVATE KEY-----
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 15361901406880 (0xdf8b8ad2aa0)

    Signature Algorithm: sha1WithRSAEncryption
        Issuer:
            countryName               = NN
            organizationName          = Edel Curl Arctic Illudium Research Cloud
            commonName                = Northern Nowhere Trust Anchor
        Validity
            Not Before: Sep  5 23:29:01 2018 GMT
            Not After : Nov 22 23:29:01 2026 GMT
        Subject:
            countryName               = NN
            organizationName          = Edel Curl Arctic Illudium Research Cloud
            commonName                = localhost.nn
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:df:16:15:5f:2a:a4:50:cf:3a:a8:79:6e:22:8d:
                    95:16:b7:4d:7d:d2:1f:4f:6d:2d:7a:7d:dc:8a:4f:
                    53:7b:5f:c9:de:5c:88:6c:a2:74:26:35:1c:78:68:
                    c1:60:25:a7:7b:b6:1a:9a:aa:33:d0:9f:5e:f2:2e:
                    21:04:8c:0d:9a:28:f5:61:40:3c:34:1a:9b:8a:70:
                    81:6d:83:9e:7c:d0:4c:d9:79:dc:37:d9:24:6e:73:
                    c7:61:31:71:e9:f5:97:b7:65:ad:3d:f6:af:20:6f:
                    56:b9:b5:42:b5:3d:96:61:31:eb:0d:4c:e9:f5:31:
                    d3:25:af:40:b3:bb:81:04:7f:1a:ce:21:18:83:52:
                    2d:51:31:ae:82:f9:cb:10:d3:d5:06:af:f8:71:e8:
                    a3:c6:9f:7b:48:da:e2:28:af:1c:ff:41:6d:32:81:
                    45:59:d7:64:e4:b1:d7:c9:86:6a:0b:65:71:66:d6:
                    42:a8:67:fd:83:49:20:75:16:1e:bb:1b:85:5c:7e:
                    e2:8f:5f:1c:81:d3:8a:95:d6:92:5c:9e:7f:a2:10:
                    08:e1:df:ae:69:68:3f:8d:dd:79:4f:da:3f:79:b5:
                    02:97:57:30:67:4d:3d:76:35:b5:4f:d1:5d:35:dd:
                    d4:b5:6b:57:b2:e0:23:35:ad:1a:bf:6f:77:e6:bc:
                    58:ed
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Alternative Name: 
                DNS:localhost1, DNS:localhost2, DNS:localhost
            X509v3 Key Usage: 
                Digital Signature, Key Encipherment, Key Agreement
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication
            X509v3 Subject Key Identifier: 
                7C:9A:EA:9B:92:98:FB:77:25:89:8B:EF:D3:F4:88:34:AF:EA:24:CC
            X509v3 Authority Key Identifier: 
                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE

            X509v3 Basic Constraints: 
                CA:FALSE
    Signature Algorithm: sha1WithRSAEncryption
         0f:97:60:47:2f:22:9f:d4:16:99:5a:ed:f4:b5:54:31:bf:9f:
         a1:bd:2d:8b:eb:c1:24:db:73:30:c7:46:d6:4c:c8:c6:38:0c:
         9a:e6:d6:5e:e8:a7:fb:9f:b6:44:66:73:43:86:46:10:c0:4c:
         40:4e:c1:d7:e4:41:0b:f0:61:f0:6f:45:8c:5a:14:40:42:97:
         c3:03:d0:ff:6d:4a:06:80:65:49:d4:2f:07:9d:86:59:6b:5b:
         9e:bc:0c:46:8a:62:da:c0:22:af:13:6c:0d:9d:54:5e:46:53:
         a5:aa:f2:80:44:c7:07:6e:f7:b0:4c:37:5c:31:08:a0:37:df:
         8a:35:92:3c:8c:91:2f:64:4f:d3:a0:eb:95:b3:4a:9e:f7:ac:
         25:ad:06:13:5c:dd:bd:d5:6b:74:8d:c7:c5:a6:b4:89:27:fd:
         b7:c2:24:a7:6a:b3:64:e6:e6:31:91:35:fc:0e:15:14:38:d6:
         39:b0:c4:b2:c1:c8:c7:ed:25:d7:b0:a9:b9:a0:70:33:42:90:
         86:33:2a:d8:d5:8a:02:e6:ab:8d:92:d6:ae:b4:1d:e9:6c:22:
         a5:2f:1a:48:48:2b:5c:b8:30:01:4b:27:1a:d3:cf:21:77:ab:
         9f:bc:55:34:2e:9f:03:2b:17:0b:c3:44:8e:a8:94:ae:92:a2:
         9a:33:c0:8e
-----BEGIN CERTIFICATE-----
MIID3jCCAsagAwIBAgIGDfi4rSqgMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
Fw0xODA5MDUyMzI5MDFaFw0yNjExMjIyMzI5MDFaMFcxCzAJBgNVBAYTAk5OMTEw
LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQDfFhVfKqRQzzqoeW4ijZUWt0190h9PbS16fdyKT1N7X8neXIhsonQm
NRx4aMFgJad7thqaqjPQn17yLiEEjA2aKPVhQDw0GpuKcIFtg5580EzZedw32SRu
c8dhMXHp9Ze3Za099q8gb1a5tUK1PZZhMesNTOn1MdMlr0Czu4EEfxrOIRiDUi1R
Ma6C+csQ09UGr/hx6KPGn3tI2uIorxz/QW0ygUVZ12TksdfJhmoLZXFm1kKoZ/2D
SSB1Fh67G4VcfuKPXxyB04qV1pJcnn+iEAjh365paD+N3XlP2j95tQKXVzBnTT12
NbVP0V013dS1a1ey4CM1rRq/b3fmvFjtAgMBAAGjgZ4wgZswLAYDVR0RBCUwI4IK
bG9jYWxob3N0MYIKbG9jYWxob3N0MoIJbG9jYWxob3N0MAsGA1UdDwQEAwIDqDAT
BgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQUfJrqm5KY+3cliYvv0/SINK/q
JMwwHwYDVR0jBBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADAN
BgkqhkiG9w0BAQUFAAOCAQEAD5dgRy8in9QWmVrt9LVUMb+fob0ti+vBJNtzMMdG
1kzIxjgMmubWXuin+5+2RGZzQ4ZGEMBMQE7B1+RBC/Bh8G9FjFoUQEKXwwPQ/21K
BoBlSdQvB52GWWtbnrwMRopi2sAirxNsDZ1UXkZTparygETHB273sEw3XDEIoDff
ijWSPIyRL2RP06DrlbNKnvesJa0GE1zdvdVrdI3Hxaa0iSf9t8Ikp2qzZObmMZE1
/A4VFDjWObDEssHIx+0l17CpuaBwM0KQhjMq2NWKAuarjZLWrrQd6WwipS8aSEgr
XLgwAUsnGtPPIXern7xVNC6fAysXC8NEjqiUrpKimjPAjg==
-----END CERTIFICATE-----







|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|




|
>
|





|
|






|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|









|





|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|


|


|
|
|
|
|
|

|
|
|
|
|
|
|
|

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
commonName_value              = localhost.nn

[something]
# The key
# the certificate
# some dhparam
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAvZcOp222c4zQIWvzNnRdCqo68PpusVwcE3TKZysiA9GmPCXv
h0/oOJ8hHS6IEjZmggMCTPgXNQKVMbFTQCEkLwDwv4BYFrGSs9N4v3jLCpEM0m1d
sh9BcxYCfBrNFiXJ4RuBvYSTTGPOOPQ+rZhrAImouvV+CIPzmvWYuJ/W2MfU8wcc
j++8KRBgjIWLTHpzx5+oIy/ER/UYhZj7J95Yk0sIpWbJ39vwIvhkn6FWiZerAixa
mfJvv3IxkCIyroYlaxPGcuzfLsgSAMHjOLSgQLoBYcLXse99SykY4v4o0JjkZT9M
NDnkgqnKsj3EkY+glL/j+LNzSLf++gRD57W8vQIDAQABAoIBAQCC0wTKpdtbmtRX
66y1a9B0NolblgPiISRCjLnKPSpIpldmc+r4XTxqLexkvaIppx5PIpJo2FzzOGgJ
FUrUGspkIOr/yil+52PK8OcGgOziyrqlTdB0xDqelpZ6WuggG01WJ2v8gco+0TQR
ewDxOxbDFTq4YARrDdqAmG6dH7baeMDvh6IVe/dkJOVlyh0MA2QP+VR6fDv73jUe
3yW6G+hql9mjZK6Cgz2lWoeW7YXAvWtTXT68/bcZLO64oLyCjBmsbSrBRQN5m9M9
dWJV5B0h02P+uMF5H+EAD3qN5I670iSY3d+FWBpd3cA2arRGWlUXNmCGG3CjLYUS
wGw1lbFhAoGBAPG6JhdXAaH3DN9khp54plbFSIanvjWK8RAEaQgkurwDUL3o1LmC
ObqiCmMTU25HRlwWkwlCxejHfzOEqFdwiX5QuNmYBE6TYHtmnWSJ5ebMG7SOtlIS
9Z4dLNZz8j95OGKb3XI9qR0ItxsmuLgWvrJUayd0UXcU7BTzHCXGx99JAoGBAMjI
0z5+DeTwBhDY1mIUY081FmhrT9PhFHGtRy2OIENW0ZhJ5yE+ygVQssnR+Lr/yl1p
zGC+CM//5wmJ774Xx0reMsh/rgK4Z0Wq47JJFGo0RMfYVmlod0OndtdobDc7ds7t
Q3wIGt2ZXW6BtzMo8KVUuuHL8QwZoZqJNe/7QE3VAoGAGGrRRjJHu/CUoEwrPP66
7rDm7pMrJ4VtbEzFv0jWg/9hvI00T7jT1AJiQjfFibIxbUPqflj8XNMqCi4wQwTf
Hp9QzMoKRVWlvVFUPL+hNXsQoWB5EjlQDjSsPs1ffwHjrDJKYCvSVVh4BooWxqGl
iaX1XPrm77xxTHxyL26w6eECgYA176S3g9stpcCrY+RrInju/R7Q3Arsquj4BIk7
VpOaI0dYdnnNN3XDacMtbec4LKBq6ZHKZyIs5dxldpVdZjvWA8x2ib3v4yNy1o4m
BXWjdfkICjhkRnjLRsAo61cumx22Row7VF4LKzirB9NzvcqvTwyIvWU6T+RWhAdm
OQM0JQKBgC+gmBGfnQShTRYlfpb4RVnDijPpC34AdEO7wdeMcdQK9KfWsLZT5y0w
qoZhW9IPlu1dNRhwHqGHWu2CmQVwFpy5/ccpukCJfyZw7edbb9dIqzKlUWw8Jmmg
C7WKz4z3mKkZrwptFxDu0dpQ644yOP/gnRaLLyP0zn/brmnYz09X
-----END RSA PRIVATE KEY-----
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            0e:4d:b9:c6:24:b0
        Signature Algorithm: sha256WithRSAEncryption
        Issuer:
            countryName               = NN
            organizationName          = Edel Curl Arctic Illudium Research Cloud
            commonName                = Northern Nowhere Trust Anchor
        Validity
            Not Before: Nov  2 12:53:25 2019 GMT
            Not After : Jan 19 12:53:25 2028 GMT
        Subject:
            countryName               = NN
            organizationName          = Edel Curl Arctic Illudium Research Cloud
            commonName                = localhost.nn
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:bd:97:0e:a7:6d:b6:73:8c:d0:21:6b:f3:36:74:
                    5d:0a:aa:3a:f0:fa:6e:b1:5c:1c:13:74:ca:67:2b:
                    22:03:d1:a6:3c:25:ef:87:4f:e8:38:9f:21:1d:2e:
                    88:12:36:66:82:03:02:4c:f8:17:35:02:95:31:b1:
                    53:40:21:24:2f:00:f0:bf:80:58:16:b1:92:b3:d3:
                    78:bf:78:cb:0a:91:0c:d2:6d:5d:b2:1f:41:73:16:
                    02:7c:1a:cd:16:25:c9:e1:1b:81:bd:84:93:4c:63:
                    ce:38:f4:3e:ad:98:6b:00:89:a8:ba:f5:7e:08:83:
                    f3:9a:f5:98:b8:9f:d6:d8:c7:d4:f3:07:1c:8f:ef:
                    bc:29:10:60:8c:85:8b:4c:7a:73:c7:9f:a8:23:2f:
                    c4:47:f5:18:85:98:fb:27:de:58:93:4b:08:a5:66:
                    c9:df:db:f0:22:f8:64:9f:a1:56:89:97:ab:02:2c:
                    5a:99:f2:6f:bf:72:31:90:22:32:ae:86:25:6b:13:
                    c6:72:ec:df:2e:c8:12:00:c1:e3:38:b4:a0:40:ba:
                    01:61:c2:d7:b1:ef:7d:4b:29:18:e2:fe:28:d0:98:
                    e4:65:3f:4c:34:39:e4:82:a9:ca:b2:3d:c4:91:8f:
                    a0:94:bf:e3:f8:b3:73:48:b7:fe:fa:04:43:e7:b5:
                    bc:bd
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Alternative Name: 
                DNS:localhost1, DNS:localhost2, DNS:localhost
            X509v3 Key Usage: 
                Digital Signature, Key Encipherment, Key Agreement
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication
            X509v3 Subject Key Identifier: 
                4E:54:63:95:A1:58:0C:FA:BD:3E:58:26:AF:AF:A4:F3:66:1A:CB:25
            X509v3 Authority Key Identifier: 
                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE

            X509v3 Basic Constraints: 
                CA:FALSE
    Signature Algorithm: sha256WithRSAEncryption
         2c:f9:48:33:7c:93:ca:3c:9c:58:92:8c:2b:87:61:9f:0d:9c:
         9d:e8:43:43:12:d6:a3:40:71:ec:cb:31:76:80:68:b1:54:d1:
         86:f4:b3:9e:c8:50:62:b4:87:12:be:9b:d6:3c:2b:cf:22:0e:
         66:26:c2:31:dd:1f:c6:97:1e:61:a4:51:ea:68:75:81:66:b9:
         3b:a6:1f:f6:80:ec:6b:aa:65:66:0c:02:ab:c9:57:bd:6a:4e:
         6d:24:30:13:7b:65:17:60:9a:14:37:57:f7:22:66:55:7d:1a:
         1a:5b:27:43:3b:d4:88:bc:2f:d3:d7:bb:d5:3f:9b:25:26:5d:
         39:a0:4c:8a:84:2c:db:04:87:8a:df:49:7d:4b:d2:85:7a:09:
         5e:df:6b:1b:b5:6e:9c:bb:2b:f6:c5:01:19:5a:87:d0:cf:16:
         67:8b:54:41:87:c1:33:c3:21:f6:e5:84:d2:84:5d:da:82:cd:
         39:4d:50:97:f3:83:37:9e:e5:04:0e:dc:c6:20:d1:b3:f6:c7:
         3d:dd:95:be:8c:b9:72:72:7a:71:66:aa:4a:8e:cf:37:38:e8:
         c8:06:69:68:8d:d8:d6:8b:4c:23:50:27:fa:e9:bb:2a:a6:89:
         56:ad:be:4d:bd:be:0c:d7:55:b4:f4:b9:f7:6a:b5:2c:7f:5f:
         9f:df:f6:61
-----BEGIN CERTIFICATE-----
MIID3jCCAsagAwIBAgIGDk25xiSwMA0GCSqGSIb3DQEBCwUAMGgxCzAJBgNVBAYT
Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
Fw0xOTExMDIxMjUzMjVaFw0yODAxMTkxMjUzMjVaMFcxCzAJBgNVBAYTAk5OMTEw
LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQC9lw6nbbZzjNAha/M2dF0Kqjrw+m6xXBwTdMpnKyID0aY8Je+HT+g4
nyEdLogSNmaCAwJM+Bc1ApUxsVNAISQvAPC/gFgWsZKz03i/eMsKkQzSbV2yH0Fz
FgJ8Gs0WJcnhG4G9hJNMY8449D6tmGsAiai69X4Ig/Oa9Zi4n9bYx9TzBxyP77wp
EGCMhYtMenPHn6gjL8RH9RiFmPsn3liTSwilZsnf2/Ai+GSfoVaJl6sCLFqZ8m+/
cjGQIjKuhiVrE8Zy7N8uyBIAweM4tKBAugFhwtex731LKRji/ijQmORlP0w0OeSC
qcqyPcSRj6CUv+P4s3NIt/76BEPntby9AgMBAAGjgZ4wgZswLAYDVR0RBCUwI4IK
bG9jYWxob3N0MYIKbG9jYWxob3N0MoIJbG9jYWxob3N0MAsGA1UdDwQEAwIDqDAT
BgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQUTlRjlaFYDPq9Plgmr6+k82Ya
yyUwHwYDVR0jBBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84wCQYDVR0TBAIwADAN
BgkqhkiG9w0BAQsFAAOCAQEALPlIM3yTyjycWJKMK4dhnw2cnehDQxLWo0Bx7Msx
doBosVTRhvSznshQYrSHEr6b1jwrzyIOZibCMd0fxpceYaRR6mh1gWa5O6Yf9oDs
a6plZgwCq8lXvWpObSQwE3tlF2CaFDdX9yJmVX0aGlsnQzvUiLwv09e71T+bJSZd
OaBMioQs2wSHit9JfUvShXoJXt9rG7VunLsr9sUBGVqH0M8WZ4tUQYfBM8Mh9uWE
0oRd2oLNOU1Ql/ODN57lBA7cxiDRs/bHPd2Vvoy5cnJ6cWaqSo7PNzjoyAZpaI3Y
1otMI1An+um7KqaJVq2+Tb2+DNdVtPS592q1LH9fn9/2YQ==
-----END CERTIFICATE-----
Changes to jni/curl/tests/certs/Server-localhost-lastSAN-sv.pub.der.

cannot compute difference between binary files

Changes to jni/curl/tests/certs/Server-localhost-lastSAN-sv.pub.pem.
1
2
3
4
5
6
7
8
9
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3xYVXyqkUM86qHluIo2V
FrdNfdIfT20ten3cik9Te1/J3lyIbKJ0JjUceGjBYCWne7Yamqoz0J9e8i4hBIwN
mij1YUA8NBqbinCBbYOefNBM2XncN9kkbnPHYTFx6fWXt2WtPfavIG9WubVCtT2W
YTHrDUzp9THTJa9As7uBBH8aziEYg1ItUTGugvnLENPVBq/4ceijxp97SNriKK8c
/0FtMoFFWddk5LHXyYZqC2VxZtZCqGf9g0kgdRYeuxuFXH7ij18cgdOKldaSXJ5/
ohAI4d+uaWg/jd15T9o/ebUCl1cwZ009djW1T9FdNd3UtWtXsuAjNa0av2935rxY
7QIDAQAB
-----END PUBLIC KEY-----

|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvZcOp222c4zQIWvzNnRd
Cqo68PpusVwcE3TKZysiA9GmPCXvh0/oOJ8hHS6IEjZmggMCTPgXNQKVMbFTQCEk
LwDwv4BYFrGSs9N4v3jLCpEM0m1dsh9BcxYCfBrNFiXJ4RuBvYSTTGPOOPQ+rZhr
AImouvV+CIPzmvWYuJ/W2MfU8wccj++8KRBgjIWLTHpzx5+oIy/ER/UYhZj7J95Y
k0sIpWbJ39vwIvhkn6FWiZerAixamfJvv3IxkCIyroYlaxPGcuzfLsgSAMHjOLSg
QLoBYcLXse99SykY4v4o0JjkZT9MNDnkgqnKsj3EkY+glL/j+LNzSLf++gRD57W8
vQIDAQAB
-----END PUBLIC KEY-----
Changes to jni/curl/tests/data/Makefile.in.
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
test271 test272 test273 test274 test275 test276 test277 test278 test279 \
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
test334 test335 \
test340 \
\
test350 test351 test352 test353 test354 test355 test356 \
test393 test394 test395 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 \







|







395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
test271 test272 test273 test274 test275 test276 test277 test278 test279 \
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
test334 test335 test336 test337 test338 \
test340 \
\
test350 test351 test352 test353 test354 test355 test356 \
test393 test394 test395 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 \
421
422
423
424
425
426
427
428

429
430
431
432
433
434
435
test590 test591 test592 test593 test594 test595 test596 test597 test598 \
test599 test600 test601 test602 test603 test604 test605 test606 test607 \
test608 test609 test610 test611 test612 test613 test614 test615 test616 \
test617 test618 test619 test620 test621 test622 test623 test624 test625 \
test626 test627 test628 test629 test630 test631 test632 test633 test634 \
test635 test636 test637 test638 test639 test640 test641 test642 \
test643 test644 test645 test646 test647 test648 test649 test650 test651 \
test652 test653 test654 test655 test656 test658 test659 test660 \

\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
\
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
test818 test819 test820 test821 test822 test823 test824 test825 test826 \







|
>







421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
test590 test591 test592 test593 test594 test595 test596 test597 test598 \
test599 test600 test601 test602 test603 test604 test605 test606 test607 \
test608 test609 test610 test611 test612 test613 test614 test615 test616 \
test617 test618 test619 test620 test621 test622 test623 test624 test625 \
test626 test627 test628 test629 test630 test631 test632 test633 test634 \
test635 test636 test637 test638 test639 test640 test641 test642 \
test643 test644 test645 test646 test647 test648 test649 test650 test651 \
test652 test653 test654 test655 test656 test658 test659 test660 test661 \
test662 test663 \
\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
\
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
test818 test819 test820 test821 test822 test823 test824 test825 test826 \
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 \
test1170 test1171 test1172 test1173 test1174 \
\
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 \
test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \







|







468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 test1166 \
test1170 test1171 test1172 test1173 test1174 \
\
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 \
test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
\
test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \
test1533 test1534 test1535 test1536 test1537 test1538 \
test1540 test1541 \
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 \
\
test1590 test1591 test1592 test1593 test1594 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1620 test1621 \
\
test1650 test1651 test1652 test1653 test1654 \
\
test1700 test1701 test1702 \
\
test1800 test1801 \
\
test1900 test1901 test1902 test1903 test1904 test1905 test1906 \
\
test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
test2032 test2033 test2034 test2035 test2036 test2037 test2038 test2039 \
test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \







|




|





|







517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
\
test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \
test1533 test1534 test1535 test1536 test1537 test1538 \
test1540 test1541 \
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 \
\
test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1620 test1621 \
\
test1650 test1651 test1652 test1653 test1654 test1655 \
\
test1700 test1701 test1702 \
\
test1800 test1801 \
\
test1900 test1901 test1902 test1903 test1904 test1905 test1906 test1907 \
\
test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
test2032 test2033 test2034 test2035 test2036 test2037 test2038 test2039 \
test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \
Changes to jni/curl/tests/data/Makefile.inc.
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
test271 test272 test273 test274 test275 test276 test277 test278 test279 \
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
test334 test335 \
test340 \
\
test350 test351 test352 test353 test354 test355 test356 \
test393 test394 test395 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 \







|







53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
test271 test272 test273 test274 test275 test276 test277 test278 test279 \
test280 test281 test282 test283 test284 test285 test286 test287 test288 \
test289 test290 test291 test292 test293 test294 test295 test296 test297 \
test298 test299 test300 test301 test302 test303 test304 test305 test306 \
test307 test308 test309 test310 test311 test312 test313 test314 test315 \
test316 test317 test318 test319 test320 test321 test322 test323 test324 \
test325 test326 test327 test328 test329 test330 test331 test332 test333 \
test334 test335 test336 test337 test338 \
test340 \
\
test350 test351 test352 test353 test354 test355 test356 \
test393 test394 test395 \
\
test400 test401 test402 test403 test404 test405 test406 test407 test408 \
test409 \
79
80
81
82
83
84
85
86

87
88
89
90
91
92
93
test590 test591 test592 test593 test594 test595 test596 test597 test598 \
test599 test600 test601 test602 test603 test604 test605 test606 test607 \
test608 test609 test610 test611 test612 test613 test614 test615 test616 \
test617 test618 test619 test620 test621 test622 test623 test624 test625 \
test626 test627 test628 test629 test630 test631 test632 test633 test634 \
test635 test636 test637 test638 test639 test640 test641 test642 \
test643 test644 test645 test646 test647 test648 test649 test650 test651 \
test652 test653 test654 test655 test656 test658 test659 test660 \

\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
\
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
test818 test819 test820 test821 test822 test823 test824 test825 test826 \







|
>







79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
test590 test591 test592 test593 test594 test595 test596 test597 test598 \
test599 test600 test601 test602 test603 test604 test605 test606 test607 \
test608 test609 test610 test611 test612 test613 test614 test615 test616 \
test617 test618 test619 test620 test621 test622 test623 test624 test625 \
test626 test627 test628 test629 test630 test631 test632 test633 test634 \
test635 test636 test637 test638 test639 test640 test641 test642 \
test643 test644 test645 test646 test647 test648 test649 test650 test651 \
test652 test653 test654 test655 test656 test658 test659 test660 test661 \
test662 test663 \
\
test700 test701 test702 test703 test704 test705 test706 test707 test708 \
test709 test710 test711 test712 test713 test714 test715 test716 test717 \
\
test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 test815 test816 test817 \
test818 test819 test820 test821 test822 test823 test824 test825 test826 \
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 \
test1170 test1171 test1172 test1173 test1174 \
\
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 \
test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \







|







126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
test1104 test1105 test1106 test1107 test1108 test1109 test1110 test1111 \
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 \
test1160 test1161 test1162 test1163 test1164 test1165 test1166 \
test1170 test1171 test1172 test1173 test1174 \
\
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 \
test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 \
test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
\
test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \
test1533 test1534 test1535 test1536 test1537 test1538 \
test1540 test1541 \
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 \
\
test1590 test1591 test1592 test1593 test1594 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1620 test1621 \
\
test1650 test1651 test1652 test1653 test1654 \
\
test1700 test1701 test1702 \
\
test1800 test1801 \
\
test1900 test1901 test1902 test1903 test1904 test1905 test1906 \
\
test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
test2032 test2033 test2034 test2035 test2036 test2037 test2038 test2039 \
test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \







|




|





|







175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
\
test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \
test1533 test1534 test1535 test1536 test1537 test1538 \
test1540 test1541 \
test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
test1558 test1559 test1560 test1561 test1562 test1563 \
\
test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
\
test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
test1608 test1609 test1620 test1621 \
\
test1650 test1651 test1652 test1653 test1654 test1655 \
\
test1700 test1701 test1702 \
\
test1800 test1801 \
\
test1900 test1901 test1902 test1903 test1904 test1905 test1906 test1907 \
\
test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
test2016 test2017 test2018 test2019 test2020 test2021 test2022 test2023 \
test2024 test2025 test2026 test2027 test2028 test2029 test2030 test2031 \
test2032 test2033 test2034 test2035 test2036 test2037 test2038 test2039 \
test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 \
Changes to jni/curl/tests/data/test1002.
61
62
63
64
65
66
67

68
69
70
71
72
73
74
# 
<server>
http
</server>
<features>
!SSPI
crypto

</features>
 <name>
HTTP PUT with Digest auth, resumed upload and modified method, twice
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1002.upload1 -T log/1002 http://%HOSTIP:%HTTPPORT/1002.upload2 -T log/1002 -u auser:apasswd --digest -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>







>







61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# 
<server>
http
</server>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP PUT with Digest auth, resumed upload and modified method, twice
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/1002.upload1 -T log/1002 http://%HOSTIP:%HTTPPORT/1002.upload2 -T log/1002 -u auser:apasswd --digest -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
Changes to jni/curl/tests/data/test1008.
84
85
86
87
88
89
90

91
92
93
94
95
96
97
<server>
http
</server>
<features>
NTLM
!SSPI
debug

</features>
 <name>
HTTP proxy CONNECT auth NTLM with chunked-encoded 407 response
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost







>







84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<server>
http
</server>
<features>
NTLM
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy CONNECT auth NTLM with chunked-encoded 407 response
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
Changes to jni/curl/tests/data/test1010.
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE A
LIST /list/this/path/1010/
EPSV
LIST /list/this/path/1010/
QUIT
</protocol>
</verify>
</testcase>







|

|




45
46
47
48
49
50
51
52
53
54
55
56
57
58
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE A
LIST /list/this/path/1010
EPSV
LIST /list/this/path/1010
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1016.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<features>
file
</features>
 <name>
X-Y range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 1-4 file://localhost/%PWD/log/test1016.txt 
</command>
<file name="log/test1016.txt">
1234567890
</file>
</client>

# Verify data after the test has been "shot"







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<features>
file
</features>
 <name>
X-Y range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 1-4 file://localhost%FILE_PWD/log/test1016.txt 
</command>
<file name="log/test1016.txt">
1234567890
</file>
</client>

# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test1017.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<features>
file
</features>
 <name>
0-Y range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 0-3 file://localhost/%PWD/log/test1017.txt 
</command>
<file name="log/test1017.txt">
1234567890
</file>
</client>

# Verify data after the test has been "shot"







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<features>
file
</features>
 <name>
0-Y range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 0-3 file://localhost%FILE_PWD/log/test1017.txt 
</command>
<file name="log/test1017.txt">
1234567890
</file>
</client>

# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test1018.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<features>
file
</features>
 <name>
X-X range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 4-4 file://localhost/%PWD/log/test1018.txt 
</command>
<file name="log/test1018.txt">
1234567890
</file>
</client>

# Verify data after the test has been "shot"







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<features>
file
</features>
 <name>
X-X range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 4-4 file://localhost%FILE_PWD/log/test1018.txt 
</command>
<file name="log/test1018.txt">
1234567890
</file>
</client>

# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test1019.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<features>
file
</features>
 <name>
X- range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 7- file://localhost/%PWD/log/test1019.txt 
</command>
<file name="log/test1019.txt">
1234567890
1234567890
</file>
</client>








|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<features>
file
</features>
 <name>
X- range on a file:// URL to stdout
 </name>
<command option="no-include">
-r 7- file://localhost%FILE_PWD/log/test1019.txt 
</command>
<file name="log/test1019.txt">
1234567890
1234567890
</file>
</client>

Changes to jni/curl/tests/data/test1020.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<features>
file
</features>
 <name>
-Y range on a file:// URL to stdout
 </name>
<command option="no-include">
-r -9 file://localhost/%PWD/log/test1020.txt 
</command>
<file name="log/test1020.txt">
1234567890
1234567890
</file>
</client>








|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<features>
file
</features>
 <name>
-Y range on a file:// URL to stdout
 </name>
<command option="no-include">
-r -9 file://localhost%FILE_PWD/log/test1020.txt 
</command>
<file name="log/test1020.txt">
1234567890
1234567890
</file>
</client>

Changes to jni/curl/tests/data/test1021.
89
90
91
92
93
94
95

96
97
98
99
100
101
102
<server>
http
</server>
<features>
NTLM
!SSPI
debug

</features>
 <name>
HTTP proxy CONNECT with any proxyauth and proxy offers NTLM and close
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost







>







89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<server>
http
</server>
<features>
NTLM
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy CONNECT with any proxyauth and proxy offers NTLM and close
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
Changes to jni/curl/tests/data/test1059.
22
23
24
25
26
27
28

29
30
31
32
33
34
35
</reply>

#
# Client-side
<client>
<features>
ftp

</features>
<server>
http
</server>
 <name>
HTTP CONNECT with proxytunnel to unsupported FTP URL
 </name>







>







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
</reply>

#
# Client-side
<client>
<features>
ftp
proxy
</features>
<server>
http
</server>
 <name>
HTTP CONNECT with proxytunnel to unsupported FTP URL
 </name>
Changes to jni/curl/tests/data/test1060.
865
866
867
868
869
870
871

872
873
874
875
876
877
878
<client>
<server>
http
</server>
<features>
!SSPI
crypto

</features>
 <name>
HTTP proxy CONNECT auth Digest, large headers and data
 </name>
 <command>
http://test.remote.haxx.se.1060:8990/path/10600002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-digest --proxytunnel
</command>







>







865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
<client>
<server>
http
</server>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP proxy CONNECT auth Digest, large headers and data
 </name>
 <command>
http://test.remote.haxx.se.1060:8990/path/10600002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-digest --proxytunnel
</command>
Changes to jni/curl/tests/data/test1061.
870
871
872
873
874
875
876

877
878
879
880
881
882
883
<client>
<server>
http
</server>
<features>
!SSPI
crypto

</features>
 <name>
HTTP proxy CONNECT auth Digest, large headers and chunked data
 </name>
 <command>
http://test.remote.haxx.se.1061:8990/path/10610002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-digest --proxytunnel
</command>







>







870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
<client>
<server>
http
</server>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP proxy CONNECT auth Digest, large headers and chunked data
 </name>
 <command>
http://test.remote.haxx.se.1061:8990/path/10610002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-digest --proxytunnel
</command>
Changes to jni/curl/tests/data/test1063.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</features>
 <name>
Invalid large X- range on a file://
 </name>
# This range value is 2**32+7, which will be truncated to the valid value 7
# if the large file support is not working correctly
 <command>
-r 4294967303- file://localhost/%PWD/log/test1063.txt 
</command>
<file name="log/test1063.txt">
1234567890
1234567890
</file>
</client>








|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</features>
 <name>
Invalid large X- range on a file://
 </name>
# This range value is 2**32+7, which will be truncated to the valid value 7
# if the large file support is not working correctly
 <command>
-r 4294967303- file://localhost%FILE_PWD/log/test1063.txt 
</command>
<file name="log/test1063.txt">
1234567890
1234567890
</file>
</client>

Changes to jni/curl/tests/data/test1077.
40
41
42
43
44
45
46

47
48
49
50
51
52
53
# Client-side
<client>
<server>
http
</server>
<features>
ftp

</features>
 <name>
FTP over HTTP proxy with downgrade to HTTP 1.0
 </name>
 <command>
-x %HOSTIP:%HTTPPORT ftp://%HOSTIP:%HTTPPORT/we/want/that/page/1077 ftp://%HOSTIP:%HTTPPORT/we/want/that/page/10770002
</command>







>







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Client-side
<client>
<server>
http
</server>
<features>
ftp
proxy
</features>
 <name>
FTP over HTTP proxy with downgrade to HTTP 1.0
 </name>
 <command>
-x %HOSTIP:%HTTPPORT ftp://%HOSTIP:%HTTPPORT/we/want/that/page/1077 ftp://%HOSTIP:%HTTPPORT/we/want/that/page/10770002
</command>
Changes to jni/curl/tests/data/test1078.
41
42
43
44
45
46
47



48
49
50
51
52
53
54
</server>
 <name>
HTTP 1.0 CONNECT with proxytunnel and downgrade GET to HTTP/1.0
 </name>
 <command>
--proxy1.0 %HOSTIP:%PROXYPORT -p http://%HOSTIP.1078:%HTTPPORT/we/want/that/page/1078 http://%HOSTIP.1078:%HTTPPORT/we/want/that/page/1078
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</server>
 <name>
HTTP 1.0 CONNECT with proxytunnel and downgrade GET to HTTP/1.0
 </name>
 <command>
--proxy1.0 %HOSTIP:%PROXYPORT -p http://%HOSTIP.1078:%HTTPPORT/we/want/that/page/1078 http://%HOSTIP.1078:%HTTPPORT/we/want/that/page/1078
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test1087.
76
77
78
79
80
81
82



83
84
85
86
87
88
89
</server>
 <name>
HTTP, proxy with --anyauth and Location: to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/10871000 -x %HOSTIP:%HTTPPORT --user iam:myself --location --anyauth
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
</server>
 <name>
HTTP, proxy with --anyauth and Location: to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/10871000 -x %HOSTIP:%HTTPPORT --user iam:myself --location --anyauth
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test1088.
77
78
79
80
81
82
83



84
85
86
87
88
89
90
</server>
 <name>
HTTP, proxy with --anyauth and Location: to new host using location-trusted
 </name>
 <command>
http://first.host.it.is/we/want/that/page/10881000 -x %HOSTIP:%HTTPPORT --user iam:myself --location-trusted --anyauth
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
</server>
 <name>
HTTP, proxy with --anyauth and Location: to new host using location-trusted
 </name>
 <command>
http://first.host.it.is/we/want/that/page/10881000 -x %HOSTIP:%HTTPPORT --user iam:myself --location-trusted --anyauth
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test1091.
30
31
32
33
34
35
36
37

38
39
40
41
42
43
44

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /tmp

CWD moo
EPSV
TYPE I
SIZE 1091
RETR 1091
QUIT
</protocol>







|
>







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
CWD tmp
CWD moo
EPSV
TYPE I
SIZE 1091
RETR 1091
QUIT
</protocol>
Changes to jni/curl/tests/data/test1092.
26
27
28
29
30
31
32

33
34
35
36
37
38
39
# Client-side
<client>
<server>
http
</server>
<features>
ftp

</features>
 <name>
FTP with type=i over HTTP proxy
 </name>
 <command>
"ftp://%HOSTIP:%HTTPPORT/we/want/that/page/1092;type=i" --use-ascii -x %HOSTIP:%HTTPPORT
</command>







>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# Client-side
<client>
<server>
http
</server>
<features>
ftp
proxy
</features>
 <name>
FTP with type=i over HTTP proxy
 </name>
 <command>
"ftp://%HOSTIP:%HTTPPORT/we/want/that/page/1092;type=i" --use-ascii -x %HOSTIP:%HTTPPORT
</command>
Changes to jni/curl/tests/data/test1098.
25
26
27
28
29
30
31

32
33
34
35
36
37
38
<client>
<server>
http
</server>
<features>
http
ftp

</features>
 <name>
FTP RETR twice over proxy confirming persistent connection
 </name>

 <command>
ftp://ftp-site/moo/1098 ftp://ftp-site/moo/1098 --proxy http://%HOSTIP:%HTTPPORT







>







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<client>
<server>
http
</server>
<features>
http
ftp
proxy
</features>
 <name>
FTP RETR twice over proxy confirming persistent connection
 </name>

 <command>
ftp://ftp-site/moo/1098 ftp://ftp-site/moo/1098 --proxy http://%HOSTIP:%HTTPPORT
Changes to jni/curl/tests/data/test1104.
57
58
59
60
61
62
63



64
65
66
67
68
69
70
</server>
 <name>
HTTP cookie expiry date at Jan 1 00:00:00 GMT 1970
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1104 -L -x %HOSTIP:%HTTPPORT -c log/cookies1104.jar
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
</server>
 <name>
HTTP cookie expiry date at Jan 1 00:00:00 GMT 1970
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1104 -L -x %HOSTIP:%HTTPPORT -c log/cookies1104.jar
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1106.
20
21
22
23
24
25
26

27
28
29
30
31
32
33
</data>
</reply>

# Client-side
<client>
<features>
ftp

</features>
<server>
http
</server>
 <name>
FTP URL and with ftp_proxy environment variable set
 </name>







>







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</data>
</reply>

# Client-side
<client>
<features>
ftp
proxy
</features>
<server>
http
</server>
 <name>
FTP URL and with ftp_proxy environment variable set
 </name>
Changes to jni/curl/tests/data/test1136.
29
30
31
32
33
34
35

36
37
38
39
40
41
42
</data>
</reply>

# Client-side
<client>
<features>
PSL

</features>
<server>
http
</server>
<name>
Check cookies against PSL
</name>







>







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</data>
</reply>

# Client-side
<client>
<features>
PSL
proxy
</features>
<server>
http
</server>
<name>
Check cookies against PSL
</name>
Changes to jni/curl/tests/data/test1141.
43
44
45
46
47
48
49



50
51
52
53
54
55
56
</server>
 <name>
HTTP redirect to http:/// (three slashes!)
 </name>
 <command>
%HOSTIP:%HTTPPORT/want/1141 -L -x http://%HOSTIP:%HTTPPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
</server>
 <name>
HTTP redirect to http:/// (three slashes!)
 </name>
 <command>
%HOSTIP:%HTTPPORT/want/1141 -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1142.
38
39
40
41
42
43
44



45
46
47
48
49
50
51
</server>
 <name>
HTTP redirect to http://// (four slashes!)
 </name>
 <command>
%HOSTIP:%HTTPPORT/want/1142 -L -x http://%HOSTIP:%HTTPPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</server>
 <name>
HTTP redirect to http://// (four slashes!)
 </name>
 <command>
%HOSTIP:%HTTPPORT/want/1142 -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1149.
53
54
55
56
57
58
59
60
61
62
63
64
CWD path
CWD 1149
EPSV
TYPE A
LIST
CWD /
EPSV
LIST list/this/path/1149/
QUIT
</protocol>
</verify>
</testcase>







|




53
54
55
56
57
58
59
60
61
62
63
64
CWD path
CWD 1149
EPSV
TYPE A
LIST
CWD /
EPSV
LIST list/this/path/1149
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1150.
28
29
30
31
32
33
34



35
36
37
38
39
40
41
</server>
 <name>
HTTP proxy with URLs using different ports
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.example.com.1150:150/path http://test.remote.example.com.1150:1234/path/
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>







>
>
>







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
</server>
 <name>
HTTP proxy with URLs using different ports
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.example.com.1150:150/path http://test.remote.example.com.1150:1234/path/
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>
Changes to jni/curl/tests/data/test1162.
27
28
29
30
31
32
33




34
35
36
37
38
39
40
</tool>
<name>
FTP wildcard with crazy pattern
</name>
<command>
"ftp://%HOSTIP:%FTPPORT/fully_simulated/DOS/[*\\s-'tl"
</command>




</client>
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD fully_simulated







>
>
>
>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
</tool>
<name>
FTP wildcard with crazy pattern
</name>
<command>
"ftp://%HOSTIP:%FTPPORT/fully_simulated/DOS/[*\\s-'tl"
</command>
<setenv>
# Needed for MSYS2 to not convert backslash to forward slash
MSYS2_ARG_CONV_EXCL=ftp://
</setenv>
</client>
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD fully_simulated
Added jni/curl/tests/data/test1166.










































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
cookies
</keywords>
</info>

# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Set-Cookie: trackyou=want; path=/
Content-Length: 68

This server reply is for testing a Location: following with cookies
</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
HTTP response with cookies but not receiving!
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/1166 http://%HOSTIP:%HTTPPORT/want/1166
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /want/1166 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /want/1166 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test1213.
31
32
33
34
35
36
37



38
39
40
41
42
43
44
 </name>
# the thing here is that this sloppy form is accepted and we convert it
# for normal server use, and we need to make sure it gets converted to
# RFC style even for proxies
 <command>
-x %HOSTIP:%HTTPPORT we.want.that.site.com.1213
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 </name>
# the thing here is that this sloppy form is accepted and we convert it
# for normal server use, and we need to make sure it gets converted to
# RFC style even for proxies
 <command>
-x %HOSTIP:%HTTPPORT we.want.that.site.com.1213
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1214.
31
32
33
34
35
36
37



38
39
40
41
42
43
44
 </name>
# the thing here is that this sloppy form is accepted and we convert it
# for normal server use, and we need to make sure it gets converted to
# RFC style even for proxies
 <command>
-x %HOSTIP:%HTTPPORT http://we.want.that.site.com.1214?moo=foo
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 </name>
# the thing here is that this sloppy form is accepted and we convert it
# for normal server use, and we need to make sure it gets converted to
# RFC style even for proxies
 <command>
-x %HOSTIP:%HTTPPORT http://we.want.that.site.com.1214?moo=foo
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1215.
56
57
58
59
60
61
62

63
64
65
66
67
68
69

# Client-side
<client>
<features>
NTLM
!SSPI
debug

</features>
<server>
http
</server>
 <name>
HTTP with server NTLM authorization using a proxy
 </name>







>







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

# Client-side
<client>
<features>
NTLM
!SSPI
debug
proxy
</features>
<server>
http
</server>
 <name>
HTTP with server NTLM authorization using a proxy
 </name>
Changes to jni/curl/tests/data/test1216.
35
36
37
38
39
40
41



42
43
44
45
46
47
48
</command>
<file name="log/injar1216">
example.fake	FALSE	/a	FALSE	2139150993	mooo	indeed
example.fake	FALSE	/b	FALSE	0		moo1	indeed
example.fake	FALSE	/c	FALSE	2139150993	moo2	indeed
example.fake	TRUE	/c	FALSE	2139150993	moo3	indeed
</file>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</command>
<file name="log/injar1216">
example.fake	FALSE	/a	FALSE	2139150993	mooo	indeed
example.fake	FALSE	/b	FALSE	0		moo1	indeed
example.fake	FALSE	/c	FALSE	2139150993	moo2	indeed
example.fake	TRUE	/c	FALSE	2139150993	moo3	indeed
</file>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1218.
28
29
30
31
32
33
34



35
36
37
38
39
40
41
</server>
 <name>
HTTP cookies and domains with same prefix
 </name>
 <command>
http://example.fake/c/1218 http://example.fake/c/1218 http://bexample.fake/c/1218 -b nonexisting -x %HOSTIP:%HTTPPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
</server>
 <name>
HTTP cookies and domains with same prefix
 </name>
 <command>
http://example.fake/c/1218 http://example.fake/c/1218 http://bexample.fake/c/1218 -b nonexisting -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1220.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
file
</server>
 <name>
file:// URLs with query string
 </name>
<command option="no-include">
file://localhost/%PWD/log/test1220.txt?a_query=foobar#afragment
</command>
<file name="log/test1220.txt">
contents in a single file
</file>
</client>

# Verify data after the test has been "shot"







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<server>
file
</server>
 <name>
file:// URLs with query string
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/test1220.txt?a_query=foobar#afragment
</command>
<file name="log/test1220.txt">
contents in a single file
</file>
</client>

# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test1225.
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
PWD
CWD /
CWD foo
EPSV
TYPE I
SIZE 1225
RETR 1225
CWD /
CWD /
CWD foo
CWD bar
EPSV
SIZE 1225
RETR 1225
QUIT







<







40
41
42
43
44
45
46

47
48
49
50
51
52
53
PWD
CWD /
CWD foo
EPSV
TYPE I
SIZE 1225
RETR 1225

CWD /
CWD foo
CWD bar
EPSV
SIZE 1225
RETR 1225
QUIT
Changes to jni/curl/tests/data/test1228.
27
28
29
30
31
32
33



34
35
36
37
38
39
40
</server>
 <name>
HTTP cookie path match
 </name>
 <command>
http://example.fake/hoge/1228 http://example.fake/hogege/ -b nonexisting -x %HOSTIP:%HTTPPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</server>
 <name>
HTTP cookie path match
 </name>
 <command>
http://example.fake/hoge/1228 http://example.fake/hogege/ -b nonexisting -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1230.
39
40
41
42
43
44
45

46
47
48
49
50
51
52
</reply>

#
# Client-side
<client>
<features>
ipv6

</features>
<server>
http-proxy
http-ipv6
http
</server>
 <name>







>







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</reply>

#
# Client-side
<client>
<features>
ipv6
proxy
</features>
<server>
http-proxy
http-ipv6
http
</server>
 <name>
Changes to jni/curl/tests/data/test1232.
37
38
39
40
41
42
43



44
45
46
47
48
49
50
</server>
 <name>
HTTP URL with dotdot removal from path using an HTTP proxy
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1232:8990/../../hej/but/who/../1232?stupid=me/../1232#soo/../1232 http://test.remote.haxx.se.1232:8990/../../hej/but/who/../12320001#/../12320001
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</server>
 <name>
HTTP URL with dotdot removal from path using an HTTP proxy
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1232:8990/../../hej/but/who/../1232?stupid=me/../1232#soo/../1232 http://test.remote.haxx.se.1232:8990/../../hej/but/who/../12320001#/../12320001
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test1233.
1
2
3
4

5
6
7
8
9
10
11
<testcase>
<info>
<keywords>
FTP

</keywords>
</info>

# Server-side
<reply>
<servercmd>
# Assuming there's nothing listening on port 1




>







1
2
3
4
5
6
7
8
9
10
11
12
<testcase>
<info>
<keywords>
FTP
connect to non-listen
</keywords>
</info>

# Server-side
<reply>
<servercmd>
# Assuming there's nothing listening on port 1
Changes to jni/curl/tests/data/test1241.
36
37
38
39
40
41
42



43
44
45
46
47
48
49
</server>
 <name>
HTTP _without_ dotdot removal
 </name>
 <command>
--path-as-is --proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1241:8990/../../hej/but/who/../1241?stupid=me/../1241#soo/../1241 http://test.remote.haxx.se.1241:8990/../../hej/but/who/../12410001#/../12410001
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</server>
 <name>
HTTP _without_ dotdot removal
 </name>
 <command>
--path-as-is --proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1241:8990/../../hej/but/who/../1241?stupid=me/../1241#soo/../1241 http://test.remote.haxx.se.1241:8990/../../hej/but/who/../12410001#/../12410001
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test1246.
36
37
38
39
40
41
42



43
44
45
46
47
48
49
</server>
 <name>
URL with '#' at end of host name instead of '/'
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1246:%HTTPPORT#@127.0.0.1/tricked.html no-scheme-url.com.1246:%HTTPPORT#@127.127.127.127/again.html
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</server>
 <name>
URL with '#' at end of host name instead of '/'
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1246:%HTTPPORT#@127.0.0.1/tricked.html no-scheme-url.com.1246:%HTTPPORT#@127.127.127.127/again.html
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test1253.
31
32
33
34
35
36
37



38
39
40
41
42
43
44
</name>
<setenv>
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/1253 --proxy http://%HOSTIP:%HTTPPORT --noproxy %HOSTIP
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
</name>
<setenv>
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/1253 --proxy http://%HOSTIP:%HTTPPORT --noproxy %HOSTIP
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1254.
31
32
33
34
35
36
37



38
39
40
41
42
43
44
</name>
<setenv>
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/1254 --proxy http://%HOSTIP:%HTTPPORT --noproxy ""
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
</name>
<setenv>
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/1254 --proxy http://%HOSTIP:%HTTPPORT --noproxy ""
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1256.
32
33
34
35
36
37
38



39
40
41
42
43
44
45
<setenv>
http_proxy=http://%HOSTIP:%HTTPPORT
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/1256 --noproxy %HOSTIP
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<setenv>
http_proxy=http://%HOSTIP:%HTTPPORT
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/1256 --noproxy %HOSTIP
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1257.
32
33
34
35
36
37
38



39
40
41
42
43
44
45
<setenv>
http_proxy=http://%HOSTIP:%HTTPPORT
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/1257 --noproxy ""
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<setenv>
http_proxy=http://%HOSTIP:%HTTPPORT
NO_PROXY=example.com
</setenv>
<command>
http://somewhere.example.com/1257 --noproxy ""
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1287.
56
57
58
59
60
61
62



63
64
65
66
67
68
69
</server>
<name>
HTTP over proxy-tunnel ignore TE and CL in CONNECT 2xx responses
</name>
<command>
-v --proxytunnel -x %HOSTIP:%PROXYPORT http://test.1287:%HTTPPORT/we/want/that/page/1287
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
</server>
<name>
HTTP over proxy-tunnel ignore TE and CL in CONNECT 2xx responses
</name>
<command>
-v --proxytunnel -x %HOSTIP:%PROXYPORT http://test.1287:%HTTPPORT/we/want/that/page/1287
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test1288.
40
41
42
43
44
45
46



47
48
49
50
51
52
53
</server>
<name>
Suppress proxy CONNECT response headers
</name>
<command>
--proxytunnel --suppress-connect-headers --dump-header - --include --write-out "\nCONNECT CODE: %{http_connect}\nRECEIVED HEADER BYTE TOTAL: %{size_header}\n" --proxy %HOSTIP:%PROXYPORT http://%HOSTIP.1288:%HTTPPORT/we/want/that/page/1288
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
</server>
<name>
Suppress proxy CONNECT response headers
</name>
<command>
--proxytunnel --suppress-connect-headers --dump-header - --include --write-out "\nCONNECT CODE: %{http_connect}\nRECEIVED HEADER BYTE TOTAL: %{size_header}\n" --proxy %HOSTIP:%PROXYPORT http://%HOSTIP.1288:%HTTPPORT/we/want/that/page/1288
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test1314.
52
53
54
55
56
57
58



59
60
61
62
63
64
65
</server>
 <name>
HTTP Location: following a // prefixed url
 </name>
 <command>
http://firstplace.example.com/want/1314 -L -x http://%HOSTIP:%HTTPPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>







>
>
>







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
</server>
 <name>
HTTP Location: following a // prefixed url
 </name>
 <command>
http://firstplace.example.com/want/1314 -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>
Changes to jni/curl/tests/data/test1319.
46
47
48
49
50
51
52

53
54
55
56
57
58
59
<client>
<server>
pop3
http-proxy
</server>
<features>
http

</features>
 <name>
POP3 fetch tunneled through HTTP proxy
 </name>
 <command>
pop3://pop.1319:%POP3PORT/1319 -p -x %HOSTIP:%PROXYPORT -u user:secret
</command>







>







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<client>
<server>
pop3
http-proxy
</server>
<features>
http
proxy
</features>
 <name>
POP3 fetch tunneled through HTTP proxy
 </name>
 <command>
pop3://pop.1319:%POP3PORT/1319 -p -x %HOSTIP:%PROXYPORT -u user:secret
</command>
Changes to jni/curl/tests/data/test1320.
23
24
25
26
27
28
29

30
31
32
33
34
35
36
<client>
<server>
smtp
http-proxy
</server>
<features>
http

</features>
 <name>
SMTP send tunneled through HTTP proxy
 </name>
<stdin>
From: different
To: another







>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<client>
<server>
smtp
http-proxy
</server>
<features>
http
proxy
</features>
 <name>
SMTP send tunneled through HTTP proxy
 </name>
<stdin>
From: different
To: another
Changes to jni/curl/tests/data/test1321.
42
43
44
45
46
47
48

49
50
51
52
53
54
55
<client>
<server>
imap
http-proxy
</server>
<features>
http

</features>
 <name>
IMAP FETCH tunneled through HTTP proxy
 </name>
 <command>
'imap://imap.1321:%IMAPPORT/1321/;MAILINDEX=1' -u user:secret -p -x %HOSTIP:%PROXYPORT
</command>







>







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<client>
<server>
imap
http-proxy
</server>
<features>
http
proxy
</features>
 <name>
IMAP FETCH tunneled through HTTP proxy
 </name>
 <command>
'imap://imap.1321:%IMAPPORT/1321/;MAILINDEX=1' -u user:secret -p -x %HOSTIP:%PROXYPORT
</command>
Changes to jni/curl/tests/data/test1329.
13
14
15
16
17
18
19



20
21
22
23
24
25
26
</server>
 <name>
/-prefixed proxy name
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/1329 -x "/server"
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
# 5 == CURLE_COULDNT_RESOLVE_PROXY
<errorcode>







>
>
>







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
</server>
 <name>
/-prefixed proxy name
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/1329 -x "/server"
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
# 5 == CURLE_COULDNT_RESOLVE_PROXY
<errorcode>
Changes to jni/curl/tests/data/test1331.
60
61
62
63
64
65
66



67
68
69
70
71
72
73
</server>
 <name>
HTTP --proxy-anyauth and 407 with cookies
 </name>
 <command>
-U myname:mypassword -x %HOSTIP:%HTTPPORT http://z.x.com/1331 --proxy-anyauth -c log/dump1331
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</server>
 <name>
HTTP --proxy-anyauth and 407 with cookies
 </name>
 <command>
-U myname:mypassword -x %HOSTIP:%HTTPPORT http://z.x.com/1331 --proxy-anyauth -c log/dump1331
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1415.
42
43
44
45
46
47
48



49
50
51
52
53
54
55
</name>
<setenv>
TZ=GMT
</setenv>
<command>
http://example.com/we/want/1415 -b none -c log/jar1415.txt -x %HOSTIP:%HTTPPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
</name>
<setenv>
TZ=GMT
</setenv>
<command>
http://example.com/we/want/1415 -b none -c log/jar1415.txt -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test1421.
31
32
33
34
35
36
37



38
39
40
41
42
43
44
</server>
 <name>
Re-using HTTP proxy connection for two different host names
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1421:8990/ http://different.remote.haxx.se.1421:8990
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 200 OK







>
>
>







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
</server>
 <name>
Re-using HTTP proxy connection for two different host names
 </name>
 <command>
--proxy http://%HOSTIP:%HTTPPORT http://test.remote.haxx.se.1421:8990/ http://different.remote.haxx.se.1421:8990
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<stdout>
HTTP/1.1 200 OK
Changes to jni/curl/tests/data/test1428.
48
49
50
51
52
53
54



55
56
57
58
59
60
61
</server>
 <name>
HTTP over proxy-tunnel with --proxy-header and --header
 </name>
 <command>
http://test.1428:%HTTPPORT/we/want/that/page/1428 -p -x %HOSTIP:%PROXYPORT --user 'iam:my:;self' --header "header-type: server" --proxy-header "header-type: proxy"
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</server>
 <name>
HTTP over proxy-tunnel with --proxy-header and --header
 </name>
 <command>
http://test.1428:%HTTPPORT/we/want/that/page/1428 -p -x %HOSTIP:%PROXYPORT --user 'iam:my:;self' --header "header-type: server" --proxy-header "header-type: proxy"
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test143.
28
29
30
31
32
33
34
35

36
37
38
39
40
41
42

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /tmp

CWD moo
EPSV
TYPE A
SIZE 143
RETR 143
QUIT
</protocol>







|
>







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /
CWD tmp
CWD moo
EPSV
TYPE A
SIZE 143
RETR 143
QUIT
</protocol>
Changes to jni/curl/tests/data/test1445.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<precheck>
perl %SRCDIR/libtest/test613.pl prepare %PWD/log/test1445.dir
</precheck>
 <name>
file:// with --remote-time
 </name>
 <command>
file://localhost/%PWD/log/test1445.dir/plainfile.txt --remote-time
</command>
<postcheck>
perl %SRCDIR/libtest/test613.pl postprocess %PWD/log/test1445.dir && \
perl -e 'exit((stat("log/curl1445.out"))[9] != 946728000)'
</postcheck>
</client>








|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<precheck>
perl %SRCDIR/libtest/test613.pl prepare %PWD/log/test1445.dir
</precheck>
 <name>
file:// with --remote-time
 </name>
 <command>
file://localhost%FILE_PWD/log/test1445.dir/plainfile.txt --remote-time
</command>
<postcheck>
perl %SRCDIR/libtest/test613.pl postprocess %PWD/log/test1445.dir && \
perl -e 'exit((stat("log/curl1445.out"))[9] != 946728000)'
</postcheck>
</client>

Changes to jni/curl/tests/data/test1447.
14
15
16
17
18
19
20

21
22
23
24
25
26
27
# Client-side
<client>
<server>
none
</server>
<features>
http

</features>
 <name>
Provide illegal proxy name 
 </name>
 <command>
--proxy "http://a:b@/x" http://%HOSTIP:%HTTPPORT
</command>







>







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Client-side
<client>
<server>
none
</server>
<features>
http
proxy
</features>
 <name>
Provide illegal proxy name 
 </name>
 <command>
--proxy "http://a:b@/x" http://%HOSTIP:%HTTPPORT
</command>
Changes to jni/curl/tests/data/test1455.
35
36
37
38
39
40
41



42
43
44
45
46
47
48
</server>
<name>
HTTP GET when PROXY Protocol enabled
</name>
<command>
http://%HOSTIP:%HTTPPORT/1455 --haproxy-protocol
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
</server>
<name>
HTTP GET when PROXY Protocol enabled
</name>
<command>
http://%HOSTIP:%HTTPPORT/1455 --haproxy-protocol
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test1456.
38
39
40
41
42
43
44



45
46
47
48
49
50
51
</server>
 <name>
HTTP-IPv6 GET with PROXY protocol
 </name>
 <command>
-g "http://%HOST6IP:%HTTP6PORT/1456" --local-port 44444 --haproxy-protocol
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:







>
>
>







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
</server>
 <name>
HTTP-IPv6 GET with PROXY protocol
 </name>
 <command>
-g "http://%HOST6IP:%HTTP6PORT/1456" --local-port 44444 --haproxy-protocol
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:
Changes to jni/curl/tests/data/test1509.
49
50
51
52
53
54
55
56


57
58
59
60
61
62
63
http
http-proxy
</server>
# tool is what to use instead of 'curl'
<tool>
lib1509
</tool>



 <name>
simple multi http:// through proxytunnel with authentication info
 </name>
 <command>
http://the.old.moo.1509:%HTTPPORT/1509 %HOSTIP:%PROXYPORT
</command>
<file name="log/test1509.txt">







|
>
>







49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
http
http-proxy
</server>
# tool is what to use instead of 'curl'
<tool>
lib1509
</tool>
<features>
proxy
</features>
 <name>
simple multi http:// through proxytunnel with authentication info
 </name>
 <command>
http://the.old.moo.1509:%HTTPPORT/1509 %HOSTIP:%PROXYPORT
</command>
<file name="log/test1509.txt">
Changes to jni/curl/tests/data/test1525.
45
46
47
48
49
50
51



52
53
54
55
56
57
58
</tool>
 <name>
CURLOPT_PROXYHEADER is ignored CURLHEADER_UNIFIED
 </name>
 <command>
 http://the.old.moo.1525:%HTTPPORT/1525 %HOSTIP:%PROXYPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.1525:%HTTPPORT HTTP/1.1
Host: the.old.moo.1525:%HTTPPORT







>
>
>







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
</tool>
 <name>
CURLOPT_PROXYHEADER is ignored CURLHEADER_UNIFIED
 </name>
 <command>
 http://the.old.moo.1525:%HTTPPORT/1525 %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.1525:%HTTPPORT HTTP/1.1
Host: the.old.moo.1525:%HTTPPORT
Changes to jni/curl/tests/data/test1526.
47
48
49
50
51
52
53



54
55
56
57
58
59
60
</tool>
 <name>
CURLOPT_PROXYHEADER: separate host/proxy headers
 </name>
 <command>
 http://the.old.moo.1526:%HTTPPORT/1526 %HOSTIP:%PROXYPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.1526:%HTTPPORT HTTP/1.1
Host: the.old.moo.1526:%HTTPPORT







>
>
>







47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
</tool>
 <name>
CURLOPT_PROXYHEADER: separate host/proxy headers
 </name>
 <command>
 http://the.old.moo.1526:%HTTPPORT/1526 %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.1526:%HTTPPORT HTTP/1.1
Host: the.old.moo.1526:%HTTPPORT
Changes to jni/curl/tests/data/test1527.
46
47
48
49
50
51
52



53
54
55
56
57
58
59
</tool>
 <name>
Check same headers are generated with CURLOPT_HEADEROPT == CURLHEADER_UNIFIED
 </name>
 <command>
 http://the.old.moo.1527:%HTTPPORT/1527 %HOSTIP:%PROXYPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.1527:%HTTPPORT HTTP/1.1
Host: the.old.moo.1527:%HTTPPORT







>
>
>







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
</tool>
 <name>
Check same headers are generated with CURLOPT_HEADEROPT == CURLHEADER_UNIFIED
 </name>
 <command>
 http://the.old.moo.1527:%HTTPPORT/1527 %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
CONNECT the.old.moo.1527:%HTTPPORT HTTP/1.1
Host: the.old.moo.1527:%HTTPPORT
Changes to jni/curl/tests/data/test1528.
39
40
41
42
43
44
45



46
47
48
49
50
51
52
</tool>
 <name>
Separately specified proxy/server headers sent in a proxy GET
 </name>
 <command>
 http://the.old.moo:%HTTPPORT/1528 %HOSTIP:%PROXYPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
GET http://the.old.moo:%HTTPPORT/1528 HTTP/1.1
Host: the.old.moo:%HTTPPORT







>
>
>







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</tool>
 <name>
Separately specified proxy/server headers sent in a proxy GET
 </name>
 <command>
 http://the.old.moo:%HTTPPORT/1528 %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<proxy>
GET http://the.old.moo:%HTTPPORT/1528 HTTP/1.1
Host: the.old.moo:%HTTPPORT
Changes to jni/curl/tests/data/test1529.
27
28
29
30
31
32
33



34
35
36
37
38
39
40
</tool>
 <name>
HTTP request-injection in URL sent over proxy
 </name>
 <command>
 "http://the.old.moo:%HTTPPORT/1529" %HOSTIP:%PROXYPORT
</command>



</client>

# it should be detected and an error should be reported
<verify>
# 3 == CURLE_URL_MALFORMAT
<errorcode>
3







>
>
>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</tool>
 <name>
HTTP request-injection in URL sent over proxy
 </name>
 <command>
 "http://the.old.moo:%HTTPPORT/1529" %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

# it should be detected and an error should be reported
<verify>
# 3 == CURLE_URL_MALFORMAT
<errorcode>
3
Changes to jni/curl/tests/data/test1591.
15
16
17
18
19
20
21
22

23
24
25
26
27
28
29
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
</data>
</reply>
# Client-side
<client>
<features>
HTTP

</features>
<server>
http
</server>
<name>
HTTP PUT with trailers at the end
</name>







<
>







15
16
17
18
19
20
21

22
23
24
25
26
27
28
29
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
</data>
</reply>
# Client-side
<client>
<features>

http
</features>
<server>
http
</server>
<name>
HTTP PUT with trailers at the end
</name>
Added jni/curl/tests/data/test1595.






































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP replaced headers
CURLOPT_TIMECONDITION
If-Modified-Since
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 503 Error
Date: Thu, 11 Jul 2019 02:26:59 GMT
Server: test-server/swsclose

</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP Retry-After header extraction (without header)
</name>
<tool>
lib1594
</tool>
<command>
http://%HOSTIP:%HTTPPORT/1595
</command>
</client>

<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1595 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stdout>
Retry-After: 0
</stdout>
</verify>
</testcase>
Added jni/curl/tests/data/test1596.








































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP replaced headers
CURLOPT_TIMECONDITION
If-Modified-Since
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 429 Too Many Requests
Date: Thu, 11 Jul 2019 02:26:59 GMT
Server: test-server/swsclose
Retry-After: Thu, 11 Jul 2024 02:26:59 GMT

</data>
</reply>
# Client-side
<client>
<server>
http
</server>
<name>
HTTP Retry-After header parsing using a date
</name>
<tool>
lib1596
</tool>
<command>
http://%HOSTIP:%HTTPPORT/1596
</command>
</client>

<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1596 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stdout>
Retry-After: 172066
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test16.
29
30
31
32
33
34
35



36
37
38
39
40
41
42
</server>
 <name>
HTTP with proxy authorization
 </name>
 <command>
 -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x %HOSTIP:%HTTPPORT http://we.want.that.site.com/16
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
</server>
 <name>
HTTP with proxy authorization
 </name>
 <command>
 -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x %HOSTIP:%HTTPPORT http://we.want.that.site.com/16
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test162.
24
25
26
27
28
29
30

31
32
33
34
35
36
37
</reply>

# Client-side
<client>
<features>
NTLM
!SSPI

</features>
<server>
http
</server>
 <name>
HTTP GET asking for --proxy-ntlm when some other authentication is required
 </name>







>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</reply>

# Client-side
<client>
<features>
NTLM
!SSPI
proxy
</features>
<server>
http
</server>
 <name>
HTTP GET asking for --proxy-ntlm when some other authentication is required
 </name>
Changes to jni/curl/tests/data/test165.
25
26
27
28
29
30
31

32
33
34
35
36
37
38
# Client-side
<client>
<server>
http
</server>
<features>
idn

</features>
<setenv>
LC_ALL=
LC_CTYPE=en_US.UTF-8
</setenv>
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'







>







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Client-side
<client>
<server>
http
</server>
<features>
idn
proxy
</features>
<setenv>
LC_ALL=
LC_CTYPE=en_US.UTF-8
</setenv>
<precheck>
perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
Changes to jni/curl/tests/data/test1654.
49
50
51
52
53
54
55

56
57
58
h1 example.com 443 h3 shiny.example.com 8443 "20121231 00:00:01" 0 1
h3 example.com 443 h3 shiny.example.com 8443 "20131231 00:00:00" 0 1
h1 example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0
h1 2.example.org 8080 h3 2.example.org 8080 "20190125 22:34:21" 0 0
h1 3.example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0
h1 3.example.org 8080 h3 yesyes.com 8080 "20190125 22:34:21" 0 0
h2 example.org 80 h2 example.com 443 "20190124 22:36:21" 0 0

</file>
</verify>
</testcase>







>



49
50
51
52
53
54
55
56
57
58
59
h1 example.com 443 h3 shiny.example.com 8443 "20121231 00:00:01" 0 1
h3 example.com 443 h3 shiny.example.com 8443 "20131231 00:00:00" 0 1
h1 example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0
h1 2.example.org 8080 h3 2.example.org 8080 "20190125 22:34:21" 0 0
h1 3.example.org 8080 h2 example.com 8080 "20190125 22:34:21" 0 0
h1 3.example.org 8080 h3 yesyes.com 8080 "20190125 22:34:21" 0 0
h2 example.org 80 h2 example.com 443 "20190124 22:36:21" 0 0
h2 example.net 80 h2 example.net 443 "20190124 22:37:21" 0 0
</file>
</verify>
</testcase>
Added jni/curl/tests/data/test1655.




















































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<testcase>
<info>
<keywords>
unittest
doh
</keywords>
</info>

#
# Client-side
<client>
<server>
none
</server>
<features>
unittest
</features>
 <name>
unit test for doh_encode
 </name>
<tool>
unit1655
</tool>
</client>

</testcase>
Changes to jni/curl/tests/data/test167.
41
42
43
44
45
46
47

48
49
50
51
52
53
54
<client>
<server>
http
</server>
<features>
!SSPI
crypto

</features>
 <name>
HTTP with proxy-requiring-Basic to site-requiring-Digest
 </name>
 <command>
http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --digest --user digest:alot
</command>







>







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<client>
<server>
http
</server>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP with proxy-requiring-Basic to site-requiring-Digest
 </name>
 <command>
http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --digest --user digest:alot
</command>
Changes to jni/curl/tests/data/test168.
55
56
57
58
59
60
61

62
63
64
65
66
67
68
<client>
<server>
http
</server>
<features>
!SSPI
crypto

</features>
 <name>
HTTP with proxy-requiring-Digest to site-requiring-Digest
 </name>
 <command>
http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-digest --digest --user digest:alot
</command>







>







55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<client>
<server>
http
</server>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP with proxy-requiring-Digest to site-requiring-Digest
 </name>
 <command>
http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-digest --digest --user digest:alot
</command>
Changes to jni/curl/tests/data/test169.
75
76
77
78
79
80
81

82
83
84
85
86
87
88
<server>
http
</server>
<features>
NTLM
!SSPI
debug

</features>
 <name>
HTTP with proxy-requiring-NTLM to site-requiring-Digest
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost







>







75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<server>
http
</server>
<features>
NTLM
!SSPI
debug
proxy
</features>
 <name>
HTTP with proxy-requiring-NTLM to site-requiring-Digest
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
Changes to jni/curl/tests/data/test170.
16
17
18
19
20
21
22

23
24
25
26
27
28
29
<client>
<server>
http
</server>
<features>
NTLM
!SSPI

</features>
 <name>
HTTP POST with --proxy-ntlm and no SSL with no response
 </name>
 <command>
http://a.galaxy.far.far.away/170 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-ntlm -F "dummy=value"
</command>







>







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<client>
<server>
http
</server>
<features>
NTLM
!SSPI
proxy
</features>
 <name>
HTTP POST with --proxy-ntlm and no SSL with no response
 </name>
 <command>
http://a.galaxy.far.far.away/170 --proxy http://%HOSTIP:%HTTPPORT --proxy-user foo:bar --proxy-ntlm -F "dummy=value"
</command>
Changes to jni/curl/tests/data/test171.
29
30
31
32
33
34
35



36
37
38
39
40
41
42
</server>
 <name>
HTTP, get cookie with dot prefixed full domain
 </name>
 <command>
-c log/jar171 -x %HOSTIP:%HTTPPORT http://z.x.com/171
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
</server>
 <name>
HTTP, get cookie with dot prefixed full domain
 </name>
 <command>
-c log/jar171 -x %HOSTIP:%HTTPPORT http://z.x.com/171
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test179.
34
35
36
37
38
39
40



41
42
43
44
45
46
47
http://supertrooper.fake/c/179 -b log/injar179 -x %HOSTIP:%HTTPPORT
</command>
<file name="log/injar179">
supertrooper.fake	FALSE	/a	FALSE	2139150993	mooo	indeed
supertrooper.fake	FALSE	/b	FALSE	0		moo1	indeed
supertrooper.fake	FALSE	/c	FALSE	2139150993	moo2	indeed
</file>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
http://supertrooper.fake/c/179 -b log/injar179 -x %HOSTIP:%HTTPPORT
</command>
<file name="log/injar179">
supertrooper.fake	FALSE	/a	FALSE	2139150993	mooo	indeed
supertrooper.fake	FALSE	/b	FALSE	0		moo1	indeed
supertrooper.fake	FALSE	/c	FALSE	2139150993	moo2	indeed
</file>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test183.
26
27
28
29
30
31
32



33
34
35
36
37
38
39
</server>
 <name>
HTTP GET two URLs over a single proxy with persistent connection
 </name>
 <command>
http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://%HOSTIP:%HTTPPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>







>
>
>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
</server>
 <name>
HTTP GET two URLs over a single proxy with persistent connection
 </name>
 <command>
http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>
Changes to jni/curl/tests/data/test184.
46
47
48
49
50
51
52



53
54
55
56
57
58
59
</server>
 <name>
HTTP replace Host: when following Location: to new host
 </name>
 <command>
http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://%HOSTIP:%HTTPPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>







>
>
>







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
</server>
 <name>
HTTP replace Host: when following Location: to new host
 </name>
 <command>
http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>
Changes to jni/curl/tests/data/test185.
46
47
48
49
50
51
52



53
54
55
56
57
58
59
</server>
 <name>
HTTP replace Host: when following Location: on the same host
 </name>
 <command>
http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://%HOSTIP:%HTTPPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>







>
>
>







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
</server>
 <name>
HTTP replace Host: when following Location: on the same host
 </name>
 <command>
http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>
Changes to jni/curl/tests/data/test19.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<features>
http
</features>
 <name>
attempt connect to non-listening socket
 </name>
 <command>
%HOSTIP:60000
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
7







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<features>
http
</features>
 <name>
attempt connect to non-listening socket
 </name>
 <command>
%HOSTIP:2
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
7
Changes to jni/curl/tests/data/test1904.
49
50
51
52
53
54
55



56
57
58
59
60
61
62
</server>
 <name>
HTTP CONNECT with 204 response
 </name>
 <command>
http://test.1904:%HTTPPORT/we/want/that/page/1904 -p --proxy %HOSTIP:%PROXYPORT
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
</server>
 <name>
HTTP CONNECT with 204 response
 </name>
 <command>
http://test.1904:%HTTPPORT/we/want/that/page/1904 -p --proxy %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Added jni/curl/tests/data/test1907.










































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<testcase>
<info>
<keywords>
CURLINFO_EFFECTIVE_URL
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Funny-head: yesyes swsclose
Content-Length: 0

</data>
</reply>

# Client-side
<client>
<server>
http
</server>
 <name>
CURLINFO_EFFECTIVE_URL with non-scheme URL
 </name>
<tool>
lib1907
</tool>

<command>
%HOSTIP:%HTTPPORT/hello/../1907
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /1907 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

</protocol>
<stdout>
Effective URL: http://%HOSTIP:%HTTPPORT/1907
</stdout>
</verify>
</testcase>
Changes to jni/curl/tests/data/test200.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<server>
file
</server>
 <name>
basic file:// file
 </name>
<command option="no-include">
file://localhost/%PWD/log/test200.txt
</command>
<file name="log/test200.txt">
foo
   bar
bar
   foo
moo







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<server>
file
</server>
 <name>
basic file:// file
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/test200.txt
</command>
<file name="log/test200.txt">
foo
   bar
bar
   foo
moo
Changes to jni/curl/tests/data/test2000.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
ftp
file
</server>
 <name>
FTP RETR followed by FILE
 </name>
<command option="no-include">
ftp://%HOSTIP:%FTPPORT/2000 file://localhost/%PWD/log/test2000.txt
</command>
<file name="log/test2000.txt">
foo
   bar
bar
   foo
moo







|







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
ftp
file
</server>
 <name>
FTP RETR followed by FILE
 </name>
<command option="no-include">
ftp://%HOSTIP:%FTPPORT/2000 file://localhost%FILE_PWD/log/test2000.txt
</command>
<file name="log/test2000.txt">
foo
   bar
bar
   foo
moo
Changes to jni/curl/tests/data/test2001.
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
ftp
file
</server>
 <name>
HTTP GET followed by FTP RETR followed by FILE
 </name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/20010001 ftp://%HOSTIP:%FTPPORT/20010002 file://localhost/%PWD/log/test2001.txt
</command>
<file name="log/test2001.txt">
foo
   bar
bar
   foo
moo







|







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
ftp
file
</server>
 <name>
HTTP GET followed by FTP RETR followed by FILE
 </name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/20010001 ftp://%HOSTIP:%FTPPORT/20010002 file://localhost%FILE_PWD/log/test2001.txt
</command>
<file name="log/test2001.txt">
foo
   bar
bar
   foo
moo
Changes to jni/curl/tests/data/test2002.
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
file
tftp
</server>
 <name>
HTTP GET followed by FTP RETR followed by FILE followed by TFTP RRQ
 </name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/20020001 ftp://%HOSTIP:%FTPPORT/20020002 file://localhost/%PWD/log/test2002.txt tftp://%HOSTIP:%TFTPPORT//20020003
</command>
<file name="log/test2002.txt">
foo
   bar
bar
   foo
moo







|







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
file
tftp
</server>
 <name>
HTTP GET followed by FTP RETR followed by FILE followed by TFTP RRQ
 </name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/20020001 ftp://%HOSTIP:%FTPPORT/20020002 file://localhost%FILE_PWD/log/test2002.txt tftp://%HOSTIP:%TFTPPORT//20020003
</command>
<file name="log/test2002.txt">
foo
   bar
bar
   foo
moo
Changes to jni/curl/tests/data/test2003.
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
file
tftp
</server>
 <name>
HTTP GET followed by FTP RETR followed by FILE followed by TFTP RRQ then again in reverse order
 </name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/20030001 ftp://%HOSTIP:%FTPPORT/20030002 file://localhost/%PWD/log/test2003.txt tftp://%HOSTIP:%TFTPPORT//20030003 tftp://%HOSTIP:%TFTPPORT//20030003 file://localhost/%PWD/log/test2003.txt ftp://%HOSTIP:%FTPPORT/20030002 http://%HOSTIP:%HTTPPORT/20030001
</command>
<file name="log/test2003.txt">
foo
   bar
bar
   foo
moo







|







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
file
tftp
</server>
 <name>
HTTP GET followed by FTP RETR followed by FILE followed by TFTP RRQ then again in reverse order
 </name>
<command option="no-include">
http://%HOSTIP:%HTTPPORT/20030001 ftp://%HOSTIP:%FTPPORT/20030002 file://localhost%FILE_PWD/log/test2003.txt tftp://%HOSTIP:%TFTPPORT//20030003 tftp://%HOSTIP:%TFTPPORT//20030003 file://localhost%FILE_PWD/log/test2003.txt ftp://%HOSTIP:%FTPPORT/20030002 http://%HOSTIP:%HTTPPORT/20030001
</command>
<file name="log/test2003.txt">
foo
   bar
bar
   foo
moo
Changes to jni/curl/tests/data/test2004.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
tftp
sftp
</server>
 <name>
TFTP RRQ followed by SFTP retrieval followed by FILE followed by SCP retrieval then again in reverse order
 </name>
<command option="no-include">
--key curl_client_key --pubkey curl_client_key.pub -u %USER: tftp://%HOSTIP:%TFTPPORT//2004 sftp://%HOSTIP:%SSHPORT%POSIX_PWD/log/test2004.txt file://localhost/%PWD/log/test2004.txt scp://%HOSTIP:%SSHPORT%POSIX_PWD/log/test2004.txt file://localhost/%PWD/log/test2004.txt sftp://%HOSTIP:%SSHPORT%POSIX_PWD/log/test2004.txt tftp://%HOSTIP:%TFTPPORT//2004 --insecure
</command>
<file name="log/test2004.txt">
This is test data
for several protocols
</file>
</client>








|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
tftp
sftp
</server>
 <name>
TFTP RRQ followed by SFTP retrieval followed by FILE followed by SCP retrieval then again in reverse order
 </name>
<command option="no-include">
--key curl_client_key --pubkey curl_client_key.pub -u %USER: tftp://%HOSTIP:%TFTPPORT//2004 sftp://%HOSTIP:%SSHPORT%POSIX_PWD/log/test2004.txt file://localhost%FILE_PWD/log/test2004.txt scp://%HOSTIP:%SSHPORT%POSIX_PWD/log/test2004.txt file://localhost%FILE_PWD/log/test2004.txt sftp://%HOSTIP:%SSHPORT%POSIX_PWD/log/test2004.txt tftp://%HOSTIP:%TFTPPORT//2004 --insecure
</command>
<file name="log/test2004.txt">
This is test data
for several protocols
</file>
</client>

Changes to jni/curl/tests/data/test2005.
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

</protocol>
<file1 name="log/download2005">
Data delivered from an HTTP resource
</file1>
<file2 name="log/stdout2005">
</file2>
<file3 name="log/stderr2005">
Metalink: parsing (file://%PWD/log/test2005.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2005.metalink) OK
Metalink: fetching (log/download2005) from (http://%HOSTIP:%HTTPPORT/2005)...
Metalink: fetching (log/download2005) from (http://%HOSTIP:%HTTPPORT/2005) OK
Metalink: validating (log/download2005)...
Metalink: validating (log/download2005) [sha-256] OK
</file3>







|







74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

</protocol>
<file1 name="log/download2005">
Data delivered from an HTTP resource
</file1>
<file2 name="log/stdout2005">
</file2>
<file3 name="log/stderr2005" mode="text">
Metalink: parsing (file://%PWD/log/test2005.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2005.metalink) OK
Metalink: fetching (log/download2005) from (http://%HOSTIP:%HTTPPORT/2005)...
Metalink: fetching (log/download2005) from (http://%HOSTIP:%HTTPPORT/2005) OK
Metalink: validating (log/download2005)...
Metalink: validating (log/download2005) [sha-256] OK
</file3>
Changes to jni/curl/tests/data/test2006.
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
Content-Type: text/html
Content-Disposition: filename=name2006; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2006">
</file3>
<file4 name="log/stderr2006">
Metalink: parsing (file://%PWD/log/test2006.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2006.metalink) OK
Metalink: fetching (log/download2006) from (http://%HOSTIP:%HTTPPORT/2006)...
Metalink: fetching (log/download2006) from (http://%HOSTIP:%HTTPPORT/2006) OK
Metalink: validating (log/download2006)...
Metalink: validating (log/download2006) [sha-256] OK
</file4>







|







94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
Content-Type: text/html
Content-Disposition: filename=name2006; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2006">
</file3>
<file4 name="log/stderr2006" mode="text">
Metalink: parsing (file://%PWD/log/test2006.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2006.metalink) OK
Metalink: fetching (log/download2006) from (http://%HOSTIP:%HTTPPORT/2006)...
Metalink: fetching (log/download2006) from (http://%HOSTIP:%HTTPPORT/2006) OK
Metalink: validating (log/download2006)...
Metalink: validating (log/download2006) [sha-256] OK
</file4>
Changes to jni/curl/tests/data/test2007.
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
Content-Type: text/html
Content-Disposition: filename=name2007; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2007">
</file3>
<file4 name="log/stderr2007">
Metalink: parsing (file://%PWD/log/test2007.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2007.metalink) OK
Metalink: fetching (log/download2007) from (http://%HOSTIP:%HTTPPORT/2007)...
Metalink: fetching (log/download2007) from (http://%HOSTIP:%HTTPPORT/2007) OK
Metalink: validating (log/download2007)...
Metalink: validating (log/download2007) [sha-256] OK
</file4>







|







98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
Content-Type: text/html
Content-Disposition: filename=name2007; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2007">
</file3>
<file4 name="log/stderr2007" mode="text">
Metalink: parsing (file://%PWD/log/test2007.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2007.metalink) OK
Metalink: fetching (log/download2007) from (http://%HOSTIP:%HTTPPORT/2007)...
Metalink: fetching (log/download2007) from (http://%HOSTIP:%HTTPPORT/2007) OK
Metalink: validating (log/download2007)...
Metalink: validating (log/download2007) [sha-256] OK
</file4>
Changes to jni/curl/tests/data/test2008.
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
Content-Type: text/html
Content-Disposition: filename=name2008; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2008">
</file3>
<file4 name="log/stderr2008">
Metalink: parsing (file://%PWD/log/test2008.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2008.metalink) OK
Metalink: fetching (log/download2008) from (http://%HOSTIP:%HTTPPORT/2008)...
Metalink: fetching (log/download2008) from (http://%HOSTIP:%HTTPPORT/2008) OK
Metalink: validating (log/download2008)...
Metalink: validating (log/download2008) [sha-256] OK
</file4>







|







90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
Content-Type: text/html
Content-Disposition: filename=name2008; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2008">
</file3>
<file4 name="log/stderr2008" mode="text">
Metalink: parsing (file://%PWD/log/test2008.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2008.metalink) OK
Metalink: fetching (log/download2008) from (http://%HOSTIP:%HTTPPORT/2008)...
Metalink: fetching (log/download2008) from (http://%HOSTIP:%HTTPPORT/2008) OK
Metalink: validating (log/download2008)...
Metalink: validating (log/download2008) [sha-256] OK
</file4>
Changes to jni/curl/tests/data/test2009.
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
Content-Type: text/html
Content-Disposition: filename=name2009; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2009">
</file3>
<file4 name="log/stderr2009">
Metalink: parsing (file://%PWD/log/test2009.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2009.metalink) OK
Metalink: fetching (log/download2009) from (http://%HOSTIP:%HTTPPORT/2009)...
Metalink: fetching (log/download2009) from (http://%HOSTIP:%HTTPPORT/2009) OK
Metalink: validating (log/download2009)...
Metalink: validating (log/download2009) [sha-256] OK
</file4>







|







91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
Content-Type: text/html
Content-Disposition: filename=name2009; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2009">
</file3>
<file4 name="log/stderr2009" mode="text">
Metalink: parsing (file://%PWD/log/test2009.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2009.metalink) OK
Metalink: fetching (log/download2009) from (http://%HOSTIP:%HTTPPORT/2009)...
Metalink: fetching (log/download2009) from (http://%HOSTIP:%HTTPPORT/2009) OK
Metalink: validating (log/download2009)...
Metalink: validating (log/download2009) [sha-256] OK
</file4>
Changes to jni/curl/tests/data/test2010.
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
Content-Type: text/html
Content-Disposition: filename=name2010; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2010">
</file3>
<file4 name="log/stderr2010">
Metalink: parsing (file://%PWD/log/test2010.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2010.metalink) OK
Metalink: fetching (log/download2010) from (http://%HOSTIP:%HTTPPORT/2010)...
Metalink: fetching (log/download2010) from (http://%HOSTIP:%HTTPPORT/2010) OK
Metalink: validating (log/download2010)...
Metalink: validating (log/download2010) [sha-256] OK
</file4>







|







90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
Content-Type: text/html
Content-Disposition: filename=name2010; charset=funny; option=strange
Funny-head: yesyes

</file2>
<file3 name="log/stdout2010">
</file3>
<file4 name="log/stderr2010" mode="text">
Metalink: parsing (file://%PWD/log/test2010.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2010.metalink) OK
Metalink: fetching (log/download2010) from (http://%HOSTIP:%HTTPPORT/2010)...
Metalink: fetching (log/download2010) from (http://%HOSTIP:%HTTPPORT/2010) OK
Metalink: validating (log/download2010)...
Metalink: validating (log/download2010) [sha-256] OK
</file4>
Changes to jni/curl/tests/data/test2011.
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

</protocol>
<file1 name="log/download2011">
Data delivered from an HTTP resource
</file1>
<file2 name="log/stdout2011">
</file2>
<file3 name="log/stderr2011">
Metalink: parsing (file://%PWD/log/test2011.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2011.metalink) OK
Metalink: fetching (log/download2011) from (http://%HOSTIP:%HTTPPORT/2011)...
Metalink: fetching (log/download2011) from (http://%HOSTIP:%HTTPPORT/2011) OK
Metalink: validating (log/download2011)...
Metalink: validating (log/download2011) [sha-256] FAILED (digest mismatch)
</file3>







|







74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

</protocol>
<file1 name="log/download2011">
Data delivered from an HTTP resource
</file1>
<file2 name="log/stdout2011">
</file2>
<file3 name="log/stderr2011" mode="text">
Metalink: parsing (file://%PWD/log/test2011.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2011.metalink) OK
Metalink: fetching (log/download2011) from (http://%HOSTIP:%HTTPPORT/2011)...
Metalink: fetching (log/download2011) from (http://%HOSTIP:%HTTPPORT/2011) OK
Metalink: validating (log/download2011)...
Metalink: validating (log/download2011) [sha-256] FAILED (digest mismatch)
</file3>
Changes to jni/curl/tests/data/test2012.
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87

</protocol>
<file1 name="log/download2012">
Some contents delivered from an HTTP resource
</file1>
<file2 name="log/stdout2012">
</file2>
<file3 name="log/stderr2012">
Metalink: parsing (file://%PWD/log/test2012.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2012.metalink) WARNING (digest missing)
Metalink: fetching (log/download2012) from (http://%HOSTIP:%HTTPPORT/2012)...
Metalink: fetching (log/download2012) from (http://%HOSTIP:%HTTPPORT/2012) OK
Metalink: validating (log/download2012)...
Metalink: validating (log/download2012) FAILED (digest missing)
</file3>







|







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87

</protocol>
<file1 name="log/download2012">
Some contents delivered from an HTTP resource
</file1>
<file2 name="log/stdout2012">
</file2>
<file3 name="log/stderr2012" mode="text">
Metalink: parsing (file://%PWD/log/test2012.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2012.metalink) WARNING (digest missing)
Metalink: fetching (log/download2012) from (http://%HOSTIP:%HTTPPORT/2012)...
Metalink: fetching (log/download2012) from (http://%HOSTIP:%HTTPPORT/2012) OK
Metalink: validating (log/download2012)...
Metalink: validating (log/download2012) FAILED (digest missing)
</file3>
Changes to jni/curl/tests/data/test2013.
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2013">
</file1>
<file2 name="log/stderr2013">
Metalink: parsing (file://%PWD/log/test2013.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2013.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2013.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>







|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2013">
</file1>
<file2 name="log/stderr2013" mode="text">
Metalink: parsing (file://%PWD/log/test2013.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2013.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2013.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
Changes to jni/curl/tests/data/test2014.
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2014">
</file1>
<file2 name="log/stderr2014">
Metalink: parsing (file://%PWD/log/test2014.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2014.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2014.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>







|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2014">
</file1>
<file2 name="log/stderr2014" mode="text">
Metalink: parsing (file://%PWD/log/test2014.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2014.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2014.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
Changes to jni/curl/tests/data/test2015.
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2015">
</file1>
<file2 name="log/stderr2015">
Metalink: parsing (file://%PWD/log/test2015.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2015.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2015.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>







|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2015">
</file1>
<file2 name="log/stderr2015" mode="text">
Metalink: parsing (file://%PWD/log/test2015.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2015.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2015.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
Changes to jni/curl/tests/data/test2016.
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2016">
</file1>
<file2 name="log/stderr2016">
Metalink: parsing (file://%PWD/log/test2016.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2016.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2016.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>







|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2016">
</file1>
<file2 name="log/stderr2016" mode="text">
Metalink: parsing (file://%PWD/log/test2016.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2016.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2016.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
Changes to jni/curl/tests/data/test2017.
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2017">
</file1>
<file2 name="log/stderr2017">
Metalink: parsing (file://%PWD/log/test2017.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2017.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2017.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>







|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2017">
</file1>
<file2 name="log/stderr2017" mode="text">
Metalink: parsing (file://%PWD/log/test2017.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2017.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2017.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
Changes to jni/curl/tests/data/test2018.
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2018">
</file1>
<file2 name="log/stderr2018">
Metalink: parsing (file://%PWD/log/test2018.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2018.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2018.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>







|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2018">
</file1>
<file2 name="log/stderr2018" mode="text">
Metalink: parsing (file://%PWD/log/test2018.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2018.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2018.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
Changes to jni/curl/tests/data/test2019.
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2019">
</file1>
<file2 name="log/stderr2019">
Metalink: parsing (file://%PWD/log/test2019.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2019.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2019.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>







|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2019">
</file1>
<file2 name="log/stderr2019" mode="text">
Metalink: parsing (file://%PWD/log/test2019.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2019.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2019.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
Changes to jni/curl/tests/data/test202.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<server>
file
</server>
 <name>
two file:// URLs to stdout
 </name>
<command option="no-include">
file://localhost/%PWD/log/test202.txt FILE://localhost/%PWD/log/test202.txt
</command>
<file name="log/test202.txt">
contents in a single file
</file>
</client>

# Verify data after the test has been "shot"







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<server>
file
</server>
 <name>
two file:// URLs to stdout
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/test202.txt FILE://localhost%FILE_PWD/log/test202.txt
</command>
<file name="log/test202.txt">
contents in a single file
</file>
</client>

# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test2020.
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2020">
</file1>
<file2 name="log/stderr2020">
Metalink: parsing (file://%PWD/log/test2020.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2020.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2020.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>







|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2020">
</file1>
<file2 name="log/stderr2020" mode="text">
Metalink: parsing (file://%PWD/log/test2020.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2020.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2020.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
Changes to jni/curl/tests/data/test2021.
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2021">
</file1>
<file2 name="log/stderr2021">
Metalink: parsing (file://%PWD/log/test2021.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2021.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2021.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>







|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2021">
</file1>
<file2 name="log/stderr2021" mode="text">
Metalink: parsing (file://%PWD/log/test2021.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2021.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2021.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
Changes to jni/curl/tests/data/test2022.
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2022">
</file1>
<file2 name="log/stderr2022">
Metalink: parsing (file://%PWD/log/test2022.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2022.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2022.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>







|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</client>

#
# Verify data after the test has been "shot"
<verify>
<file1 name="log/stdout2022">
</file1>
<file2 name="log/stderr2022" mode="text">
Metalink: parsing (file://%PWD/log/test2022.metalink) metalink/XML...
Metalink: parsing (file://%PWD/log/test2022.metalink) WARNING (missing or invalid file name)
Metalink: parsing (file://%PWD/log/test2022.metalink) FAILED
</file2>
<stripfile2>
$_ = '' if (($_ !~ /^Metalink: /) && ($_ !~ /error/i) && ($_ !~ /warn/i))
</stripfile2>
Changes to jni/curl/tests/data/test204.
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<server>
file
</server>
 <name>
"upload" with file://
 </name>
<command option="no-include">
file://localhost/%PWD/log/result204.txt -T log/upload204.txt
</command>
<file name="log/upload204.txt">
data
in
file
to
write







|







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<server>
file
</server>
 <name>
"upload" with file://
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/result204.txt -T log/upload204.txt
</command>
<file name="log/upload204.txt">
data
in
file
to
write
Changes to jni/curl/tests/data/test2050.
49
50
51
52
53
54
55



56
57
58
59
60
61
62
 <name>
Connect to specific host via HTTP proxy (switch to tunnel mode automatically)
 </name>

 <command>
http://www.example.com.2050/2050 --connect-to ::connect.example.com.2050:%HTTPPORT -x %HOSTIP:%PROXYPORT
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 <name>
Connect to specific host via HTTP proxy (switch to tunnel mode automatically)
 </name>

 <command>
http://www.example.com.2050/2050 --connect-to ::connect.example.com.2050:%HTTPPORT -x %HOSTIP:%PROXYPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test2055.
47
48
49
50
51
52
53
54


55
56
57
58
59
60
61
http
http-proxy
socks5
</server>
 <name>
Connect to specific host via SOCKS proxy and HTTP proxy (switch to tunnel mode automatically)
 </name>



 <command>
http://www.example.com.2055/2055 --connect-to ::connect.example.com.2055:%HTTPPORT -x %HOSTIP:%PROXYPORT --preproxy socks5://%HOSTIP:%SOCKSPORT
</command>
</client>

#
# Verify data after the test has been "shot"







|
>
>







47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
http
http-proxy
socks5
</server>
 <name>
Connect to specific host via SOCKS proxy and HTTP proxy (switch to tunnel mode automatically)
 </name>
<features>
proxy
</features>
 <command>
http://www.example.com.2055/2055 --connect-to ::connect.example.com.2055:%HTTPPORT -x %HOSTIP:%PROXYPORT --preproxy socks5://%HOSTIP:%SOCKSPORT
</command>
</client>

#
# Verify data after the test has been "shot"
Changes to jni/curl/tests/data/test2058.
62
63
64
65
66
67
68

69
70
71
72
73
74
75
# 
<server>
http
</server>
<features>
!SSPI
crypto

</features>
 <name>
HTTP POST --digest with PUT, resumed upload, modified method and SHA-256
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2058 -u auser:apasswd --digest -T log/2058 -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>







>







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# 
<server>
http
</server>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP POST --digest with PUT, resumed upload, modified method and SHA-256
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2058 -u auser:apasswd --digest -T log/2058 -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
Changes to jni/curl/tests/data/test2059.
62
63
64
65
66
67
68

69
70
71
72
73
74
75
# 
<server>
http
</server>
<features>
!SSPI
crypto

</features>
 <name>
HTTP POST --digest with PUT, resumed upload, modified method, SHA-512-256 and userhash=true
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2059 -u auser:apasswd --digest -T log/2059 -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>







>







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# 
<server>
http
</server>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP POST --digest with PUT, resumed upload, modified method, SHA-512-256 and userhash=true
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2059 -u auser:apasswd --digest -T log/2059 -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
Changes to jni/curl/tests/data/test206.
69
70
71
72
73
74
75

76
77
78
79
80
81
82
<client>
<server>
http
</server>
<features>
!SSPI
crypto

</features>
 <name>
HTTP proxy CONNECT auth Digest
 </name>
 <command>
http://test.remote.haxx.se.206:8990/path/2060002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-digest --proxytunnel
</command>







>







69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<client>
<server>
http
</server>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP proxy CONNECT auth Digest
 </name>
 <command>
http://test.remote.haxx.se.206:8990/path/2060002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user silly:person --proxy-digest --proxytunnel
</command>
Changes to jni/curl/tests/data/test2060.
62
63
64
65
66
67
68

69
70
71
72
73
74
75
# 
<server>
http
</server>
<features>
!SSPI
crypto

</features>
 <name>
HTTP POST --digest with PUT, resumed upload, modified method, SHA-512-256 and userhash=false
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2060 -u auser:apasswd --digest -T log/2060 -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>







>







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# 
<server>
http
</server>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP POST --digest with PUT, resumed upload, modified method, SHA-512-256 and userhash=false
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/2060 -u auser:apasswd --digest -T log/2060 -x  http://%HOSTIP:%HTTPPORT -C 2 -X GET
</command>
Changes to jni/curl/tests/data/test2071.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<server>
file
</server>
 <name>
basic file:// file with "127.0.0.1" hostname
 </name>
<command option="no-include">
file://127.0.0.1/%PWD/log/test2070.txt
</command>
<file name="log/test2070.txt">
foo
   bar
bar
   foo
moo







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<server>
file
</server>
 <name>
basic file:// file with "127.0.0.1" hostname
 </name>
<command option="no-include">
file://127.0.0.1%FILE_PWD/log/test2070.txt
</command>
<file name="log/test2070.txt">
foo
   bar
bar
   foo
moo
Changes to jni/curl/tests/data/test208.
23
24
25
26
27
28
29

30
31
32
33
34
35
36
# Client-side
<client>
<server>
http
</server>
<features>
ftp

</features>
 <name>
HTTP PUT to a FTP URL with username+password - over HTTP proxy
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT ftp://daniel:mysecret@host.com/we/want/208 -T log/test208.txt
</command>







>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Client-side
<client>
<server>
http
</server>
<features>
ftp
proxy
</features>
 <name>
HTTP PUT to a FTP URL with username+password - over HTTP proxy
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT ftp://daniel:mysecret@host.com/we/want/208 -T log/test208.txt
</command>
Changes to jni/curl/tests/data/test209.
75
76
77
78
79
80
81

82
83
84
85
86
87
88
<server>
http
</server>
<features>
NTLM
!SSPI
debug

</features>
 <name>
HTTP proxy CONNECT auth NTLM
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost







>







75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<server>
http
</server>
<features>
NTLM
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy CONNECT auth NTLM
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
Changes to jni/curl/tests/data/test213.
75
76
77
78
79
80
81

82
83
84
85
86
87
88
<server>
http
</server>
<features>
NTLM
!SSPI
debug

</features>
 <name>
HTTP 1.0 proxy CONNECT auth NTLM and then POST
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost







>







75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<server>
http
</server>
<features>
NTLM
!SSPI
debug
proxy
</features>
 <name>
HTTP 1.0 proxy CONNECT auth NTLM and then POST
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
Changes to jni/curl/tests/data/test217.
30
31
32
33
34
35
36



37
38
39
40
41
42
43
</server>
 <name>
HTTP proxy CONNECT to proxy returning 405
 </name>
 <command>
http://test.remote.example.com.217:%HTTPPORT/path/2170002 --proxy http://%HOSTIP:%HTTPPORT --proxytunnel -w "%{http_code} %{http_connect}\n"
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>







>
>
>







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
</server>
 <name>
HTTP proxy CONNECT to proxy returning 405
 </name>
 <command>
http://test.remote.example.com.217:%HTTPPORT/path/2170002 --proxy http://%HOSTIP:%HTTPPORT --proxytunnel -w "%{http_code} %{http_connect}\n"
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent: curl/.*
</strip>
Changes to jni/curl/tests/data/test219.
14
15
16
17
18
19
20

21
22
23
24
25
26
27
# Client-side
<client>
<server>
none
</server>
<features>
http

</features>
 <name>
try using proxy with unsupported scheme
 </name>
 <command>
-x foo://%HOSTIP:%HTTPPORT/219 http://%HOSTIP:%HTTPPORT/219
</command>







>







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Client-side
<client>
<server>
none
</server>
<features>
http
proxy
</features>
 <name>
try using proxy with unsupported scheme
 </name>
 <command>
-x foo://%HOSTIP:%HTTPPORT/219 http://%HOSTIP:%HTTPPORT/219
</command>
Changes to jni/curl/tests/data/test231.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
file
</server>
 <name>
file:// with resume
 </name>
<command option="no-include">
file://localhost/%PWD/log/test231.txt -C 10
</command>
<file name="log/test231.txt">
A01234567
B01234567
C01234567
</file>
</client>







|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<server>
file
</server>
 <name>
file:// with resume
 </name>
<command option="no-include">
file://localhost%FILE_PWD/log/test231.txt -C 10
</command>
<file name="log/test231.txt">
A01234567
B01234567
C01234567
</file>
</client>
Changes to jni/curl/tests/data/test233.
63
64
65
66
67
68
69



70
71
72
73
74
75
76
</server>
 <name>
HTTP, proxy, site+proxy auth and Location: to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/233 -x %HOSTIP:%HTTPPORT --user iam:myself --proxy-user testing:this --location
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</server>
 <name>
HTTP, proxy, site+proxy auth and Location: to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/233 -x %HOSTIP:%HTTPPORT --user iam:myself --proxy-user testing:this --location
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test234.
65
66
67
68
69
70
71



72
73
74
75
76
77
78
</server>
 <name>
HTTP, proxy, site+proxy auth and Location: to new host using location-trusted
 </name>
 <command>
http://first.host.it.is/we/want/that/page/234 -x %HOSTIP:%HTTPPORT --user iam:myself --proxy-user testing:this --location-trusted
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
</server>
 <name>
HTTP, proxy, site+proxy auth and Location: to new host using location-trusted
 </name>
 <command>
http://first.host.it.is/we/want/that/page/234 -x %HOSTIP:%HTTPPORT --user iam:myself --proxy-user testing:this --location-trusted
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test239.
50
51
52
53
54
55
56

57
58
59
60
61
62
63
<server>
http
</server>
<features>
NTLM
!SSPI
debug

</features>
 <name>
HTTP proxy-auth NTLM and then POST
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost







>







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<server>
http
</server>
<features>
NTLM
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy-auth NTLM and then POST
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
Changes to jni/curl/tests/data/test243.
71
72
73
74
75
76
77

78
79
80
81
82
83
84
<server>
http
</server>
<features>
NTLM
!SSPI
debug

</features>
 <name>
HTTP POST with --proxy-anyauth, picking NTLM
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost







>







71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<server>
http
</server>
<features>
NTLM
!SSPI
debug
proxy
</features>
 <name>
HTTP POST with --proxy-anyauth, picking NTLM
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
Changes to jni/curl/tests/data/test244.
43
44
45
46
47
48
49
50
51
52
53
54
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE A
LIST fir#t/third/244/
QUIT
</protocol>
</verify>
</testcase>







|




43
44
45
46
47
48
49
50
51
52
53
54
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE A
LIST fir#t/third/244
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test256.
31
32
33
34
35
36
37



38
39
40
41
42
43
44
 <command option="no-output">
-x http://%HOSTIP:%HTTPPORT http://%HOSTIP:%HTTPPORT/want/256 -C - --no-include -o log/fewl256.txt -U daniel:stenberg
</command>
<file name="log/fewl256.txt">
This text is here to simulate a partly downloaded file to resume
download on.
</file>



</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
33
</errorcode>







>
>
>







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 <command option="no-output">
-x http://%HOSTIP:%HTTPPORT http://%HOSTIP:%HTTPPORT/want/256 -C - --no-include -o log/fewl256.txt -U daniel:stenberg
</command>
<file name="log/fewl256.txt">
This text is here to simulate a partly downloaded file to resume
download on.
</file>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
33
</errorcode>
Changes to jni/curl/tests/data/test257.
69
70
71
72
73
74
75
76


77
78
79
80
81
82
83
</server>
 <name>
HTTP Location: following with --netrc-optional
 </name>
 <command>
http://supersite.com/want/257 -L -x http://%HOSTIP:%HTTPPORT --netrc-optional --netrc-file log/netrc257
</command>



# netrc auth for two out of three sites:
<file name="log/netrc257">
machine supersite.com login user1 password passwd1
machine anotherone.com login user2 password passwd2
</file>
</client>








|
>
>







69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
</server>
 <name>
HTTP Location: following with --netrc-optional
 </name>
 <command>
http://supersite.com/want/257 -L -x http://%HOSTIP:%HTTPPORT --netrc-optional --netrc-file log/netrc257
</command>
<features>
proxy
</features>
# netrc auth for two out of three sites:
<file name="log/netrc257">
machine supersite.com login user1 password passwd1
machine anotherone.com login user2 password passwd2
</file>
</client>

Changes to jni/curl/tests/data/test258.
54
55
56
57
58
59
60

61
62
63
64
65
66
67
<client>
<server>
http
</server>
<features>
!SSPI
crypto

</features>
 <name>
HTTP POST multipart without Expect: header using proxy anyauth (Digest)
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth
</command>







>







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<client>
<server>
http
</server>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP POST multipart without Expect: header using proxy anyauth (Digest)
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth
</command>
Changes to jni/curl/tests/data/test259.
50
51
52
53
54
55
56

57
58
59
60
61
62
63
<client>
<server>
http
</server>
<features>
!SSPI
crypto

</features>
 <name>
HTTP POST multipart with Expect: header using proxy anyauth (Digest)
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue"
</command>







>







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<client>
<server>
http
</server>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP POST multipart with Expect: header using proxy anyauth (Digest)
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue"
</command>
Changes to jni/curl/tests/data/test263.
21
22
23
24
25
26
27

28
29
30
31
32
33
34
</reply>

#
# Client-side
<client>
<features>
ipv6

</features>
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with proxy specified using IPv6-numerical address
 </name>







>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
</reply>

#
# Client-side
<client>
<features>
ipv6
proxy
</features>
<server>
http-ipv6
</server>
 <name>
HTTP-IPv6 GET with proxy specified using IPv6-numerical address
 </name>
Changes to jni/curl/tests/data/test264.
26
27
28
29
30
31
32



33
34
35
36
37
38
39
</server>
 <name>
HTTP with proxy string including http:// and user+password
 </name>
 <command>
http://we.want.that.site.com/264 -x http://f%61ke:user@%HOSTIP:%HTTPPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
</server>
 <name>
HTTP with proxy string including http:// and user+password
 </name>
 <command>
http://we.want.that.site.com/264 -x http://f%61ke:user@%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test265.
76
77
78
79
80
81
82

83
84
85
86
87
88
89
<server>
http
</server>
<features>
NTLM
!SSPI
debug

</features>
 <name>
HTTP proxy CONNECT auth NTLM and then POST, response-body in the 407
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost







>







76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<server>
http
</server>
<features>
NTLM
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy CONNECT auth NTLM and then POST, response-body in the 407
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
Changes to jni/curl/tests/data/test275.
52
53
54
55
56
57
58



59
60
61
62
63
64
65
</server>
 <name>
HTTP CONNECT with proxytunnel getting two URLs from the same host
 </name>
 <command>
http://remotesite.com.275:%HTTPPORT/we/want/that/page/275 -p -x %HOSTIP:%PROXYPORT --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:%HTTPPORT/we/want/that/page/275
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
</server>
 <name>
HTTP CONNECT with proxytunnel getting two URLs from the same host
 </name>
 <command>
http://remotesite.com.275:%HTTPPORT/we/want/that/page/275 -p -x %HOSTIP:%PROXYPORT --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:%HTTPPORT/we/want/that/page/275
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test278.
26
27
28
29
30
31
32



33
34
35
36
37
38
39
</server>
 <name>
HTTP with proxy string including http:// and user+empty password
 </name>
 <command>
http://we.want.that.site.com/278 -x http://f%61ke:@%HOSTIP:%HTTPPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
</server>
 <name>
HTTP with proxy string including http:// and user+empty password
 </name>
 <command>
http://we.want.that.site.com/278 -x http://f%61ke:@%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test279.
27
28
29
30
31
32
33



34
35
36
37
38
39
40
</server>
 <name>
HTTP with proxy string including http:// and user only
 </name>
 <command>
http://we.want.that.site.com/279 -x http://f%61ke@%HOSTIP:%HTTPPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</server>
 <name>
HTTP with proxy string including http:// and user only
 </name>
 <command>
http://we.want.that.site.com/279 -x http://f%61ke@%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test287.
26
27
28
29
30
31
32



33
34
35
36
37
38
39
</server>
 <name>
HTTP proxy CONNECT with custom User-Agent header
 </name>
 <command>
http://test.remote.example.com.287:%HTTPPORT/path/287 -H "User-Agent: looser/2015" --proxy http://%HOSTIP:%HTTPPORT --proxytunnel --proxy-header "User-Agent: looser/2007"
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.example.com.287:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.287:%HTTPPORT







>
>
>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
</server>
 <name>
HTTP proxy CONNECT with custom User-Agent header
 </name>
 <command>
http://test.remote.example.com.287:%HTTPPORT/path/287 -H "User-Agent: looser/2015" --proxy http://%HOSTIP:%HTTPPORT --proxytunnel --proxy-header "User-Agent: looser/2007"
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
CONNECT test.remote.example.com.287:%HTTPPORT HTTP/1.1
Host: test.remote.example.com.287:%HTTPPORT
Changes to jni/curl/tests/data/test288.
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 <name>
file:// with (unsupported) proxy, authentication and range
 </name>
<setenv>
all_proxy=http://fake:user@%HOSTIP:%HTTPPORT/
</setenv>
<command option="no-include">
file://localhost/%PWD/log/test288.txt
</command>
<file name="log/test288.txt">
foo
   bar
bar
   foo
moo







|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 <name>
file:// with (unsupported) proxy, authentication and range
 </name>
<setenv>
all_proxy=http://fake:user@%HOSTIP:%HTTPPORT/
</setenv>
<command option="no-include">
file://localhost%FILE_PWD/log/test288.txt
</command>
<file name="log/test288.txt">
foo
   bar
bar
   foo
moo
Changes to jni/curl/tests/data/test299.
23
24
25
26
27
28
29

30
31
32
33
34
35
36
# Client-side
<client>
<server>
http
</server>
<features>
ftp

</features>
 <name>
FTP over HTTP proxy with user:pass not in url
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT -u michal:aybabtu ftp://host.com/we/want/299
</command>







>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Client-side
<client>
<server>
http
</server>
<features>
ftp
proxy
</features>
 <name>
FTP over HTTP proxy with user:pass not in url
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT -u michal:aybabtu ftp://host.com/we/want/299
</command>
Changes to jni/curl/tests/data/test317.
63
64
65
66
67
68
69



70
71
72
73
74
75
76
</server>
 <name>
HTTP with custom Authorization: and redirect to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/317 -x %HOSTIP:%HTTPPORT -H "Authorization: s3cr3t" --proxy-user testing:this --location
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</server>
 <name>
HTTP with custom Authorization: and redirect to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/317 -x %HOSTIP:%HTTPPORT -H "Authorization: s3cr3t" --proxy-user testing:this --location
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test318.
63
64
65
66
67
68
69



70
71
72
73
74
75
76
</server>
 <name>
HTTP with custom Authorization: and redirect to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/318 -x %HOSTIP:%HTTPPORT -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</server>
 <name>
HTTP with custom Authorization: and redirect to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/318 -x %HOSTIP:%HTTPPORT -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test330.
61
62
63
64
65
66
67



68
69
70
71
72
73
74
</server>
 <name>
HTTP with custom Cookie: and redirect to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/317 -x %HOSTIP:%HTTPPORT -H "Cookie: test=yes" --location
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
</server>
 <name>
HTTP with custom Cookie: and redirect to new host
 </name>
 <command>
http://first.host.it.is/we/want/that/page/317 -x %HOSTIP:%HTTPPORT -H "Cookie: test=yes" --location
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test331.
37
38
39
40
41
42
43



44
45
46
47
48
49
50
</server>
 <name>
HTTP with cookie using host name 'moo'
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT http://moo/we/want/331 -b none http://moo/we/want/3310002
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</server>
 <name>
HTTP with cookie using host name 'moo'
 </name>
 <command>
-x http://%HOSTIP:%HTTPPORT http://moo/we/want/331 -b none http://moo/we/want/3310002
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test335.
57
58
59
60
61
62
63

64
65
66
67
68
69
70
<client>
<server>
http
</server>
<features>
!SSPI
crypto

</features>
 <name>
HTTP with proxy Digest and site Digest with creds in URLs
 </name>
 <command>
http://digest:alot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@%HOSTIP:%HTTPPORT --proxy-digest --digest
</command>







>







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<client>
<server>
http
</server>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP with proxy Digest and site Digest with creds in URLs
 </name>
 <command>
http://digest:alot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@%HOSTIP:%HTTPPORT --proxy-digest --digest
</command>
Added jni/curl/tests/data/test336.




















































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<testcase>
<info>
<keywords>
FTP
PASV
TYPE A
RETR
</keywords>
</info>
# Server-side
<reply>
<data>
data
    to
      see
that FTP
works
  so does it?
</data>
<datacheck nonewline="yes">
data
</datacheck>
<servercmd>
REPLY EPSV 500 no such command
REPLY SIZE 500 no such command
</servercmd>
</reply>

# Client-side
<client>
<server>
ftp
</server>
 <name>
FTP range download when SIZE doesn't work
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/336 --use-ascii --range 3-6
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE A
SIZE 336
REST 3
RETR 336
ABOR
QUIT
</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test337.




















































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<testcase>
<info>
<keywords>
FTP
PASV
TYPE A
RETR
</keywords>
</info>
# Server-side
<reply>
<data>
data
    to
      see
that FTP
works
  so does it?
</data>
<datacheck nonewline="yes">
data
</datacheck>
<servercmd>
REPLY EPSV 500 no such command
REPLY SIZE 213 file: 213, Size =51
</servercmd>
</reply>

# Client-side
<client>
<server>
ftp
</server>
 <name>
FTP range download with SIZE returning extra crap
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/337 --use-ascii --range 3-6
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPSV
PASV
TYPE A
SIZE 337
REST 3
RETR 337
ABOR
QUIT
</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test338.






























































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# See https://github.com/curl/curl/issues/4499
<testcase>
<info>
<keywords>
HTTP
HTTP GET
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
ETag: "21025-dc7-39462498"
Accept-Ranges: bytes
Content-Length: 6
Content-Type: text/html
Funny-head: yesyes

-foo-
</data>
<servercmd>
connection-monitor
</servercmd>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
ANYAUTH connection reuse of non-authed connection
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/338 --next http://%HOSTIP:%HTTPPORT/338 --anyauth -u foo:moo
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET /338 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

GET /338 HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*

[DISCONNECT]
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test356.
57
58
59
60
61
62
63
64
65
66
67
68
69
70

</protocol>
<stripfile>
# strip out the (dynamic) expire date from the file so that the rest
# matches
s/\"([^\"]*)\"/TIMESTAMP/
</stripfile>
<file name="log/altsvc-356">
# Your alt-svc cache. https://curl.haxx.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h1 %HOSTIP %HTTPPORT h1 nowhere.foo 81 TIMESTAMP 0 0
</file>
</verify>
</testcase>







|






57
58
59
60
61
62
63
64
65
66
67
68
69
70

</protocol>
<stripfile>
# strip out the (dynamic) expire date from the file so that the rest
# matches
s/\"([^\"]*)\"/TIMESTAMP/
</stripfile>
<file name="log/altsvc-356" mode="text">
# Your alt-svc cache. https://curl.haxx.se/docs/alt-svc.html
# This file was generated by libcurl! Edit at your own risk.
h1 %HOSTIP %HTTPPORT h1 nowhere.foo 81 TIMESTAMP 0 0
</file>
</verify>
</testcase>
Changes to jni/curl/tests/data/test43.
52
53
54
55
56
57
58



59
60
61
62
63
64
65
</server>
 <name>
HTTP Location: following over HTTP proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/43 -L -x %HOSTIP:%HTTPPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
</server>
 <name>
HTTP Location: following over HTTP proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/want/43 -L -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test5.
27
28
29
30
31
32
33



34
35
36
37
38
39
40
</server>
 <name>
HTTP over proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/5#5 -x %HOSTIP:%HTTPPORT
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</server>
 <name>
HTTP over proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/5#5 -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test503.
46
47
48
49
50
51
52
53


54
55
56
57
58
59
60
http
http-proxy
</server>
# tool is what to use instead of 'curl'
<tool>
lib503
</tool>



 <name>
simple multi http:// through proxytunnel with authentication info
 </name>
 <command>
http://machine.503:%HTTPPORT/503 %HOSTIP:%PROXYPORT
</command>
<file name="log/test503.txt">







|
>
>







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
http
http-proxy
</server>
# tool is what to use instead of 'curl'
<tool>
lib503
</tool>
<features>
proxy
</features>
 <name>
simple multi http:// through proxytunnel with authentication info
 </name>
 <command>
http://machine.503:%HTTPPORT/503 %HOSTIP:%PROXYPORT
</command>
<file name="log/test503.txt">
Changes to jni/curl/tests/data/test504.
1
2
3
4
5
6
7
8

9
10
11
12
13
14
15
16
17
18
19
20
21
22

23
24
25
26
27
28
29
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
multi
FAILURE

</keywords>
</info>

# Server-side
<reply>
</reply>

# Client-side
<client>
<server>
none
</server>
<features>
http

</features>
# tool is what to use instead of 'curl'
<tool>
lib504
</tool>

 <name>








>














>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<testcase>
<info>
<keywords>
HTTP
HTTP GET
HTTP proxy
multi
FAILURE
connect to non-listen
</keywords>
</info>

# Server-side
<reply>
</reply>

# Client-side
<client>
<server>
none
</server>
<features>
http
proxy
</features>
# tool is what to use instead of 'curl'
<tool>
lib504
</tool>

 <name>
Changes to jni/curl/tests/data/test506.
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129


130
131
132
133
134
135
136
137
138
139
140
141
142
143
144


145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183




184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
lock:   share  [Pigs in space]: 14
unlock: share  [Pigs in space]: 15
*** run 1
CURLOPT_SHARE
lock:   share  [Pigs in space]: 16
unlock: share  [Pigs in space]: 17
PERFORM
lock:   dns    [Pigs in space]: 18
unlock: dns    [Pigs in space]: 19
lock:   dns    [Pigs in space]: 20
unlock: dns    [Pigs in space]: 21
lock:   cookie [Pigs in space]: 22
unlock: cookie [Pigs in space]: 23
lock:   cookie [Pigs in space]: 24
unlock: cookie [Pigs in space]: 25
lock:   cookie [Pigs in space]: 26
unlock: cookie [Pigs in space]: 27
lock:   cookie [Pigs in space]: 28
unlock: cookie [Pigs in space]: 29


run 1: set cookie 1, 2 and 3
lock:   dns    [Pigs in space]: 30
unlock: dns    [Pigs in space]: 31
lock:   dns    [Pigs in space]: 32
unlock: dns    [Pigs in space]: 33
CLEANUP
lock:   cookie [Pigs in space]: 34
unlock: cookie [Pigs in space]: 35
lock:   share  [Pigs in space]: 36
unlock: share  [Pigs in space]: 37
*** run 2
CURLOPT_SHARE
lock:   share  [Pigs in space]: 38
unlock: share  [Pigs in space]: 39
PERFORM


lock:   dns    [Pigs in space]: 40
unlock: dns    [Pigs in space]: 41
lock:   cookie [Pigs in space]: 42
unlock: cookie [Pigs in space]: 43
lock:   cookie [Pigs in space]: 44
unlock: cookie [Pigs in space]: 45
lock:   cookie [Pigs in space]: 46
unlock: cookie [Pigs in space]: 47
run 2: set cookie 4 and 5
lock:   dns    [Pigs in space]: 48
unlock: dns    [Pigs in space]: 49
lock:   dns    [Pigs in space]: 50
unlock: dns    [Pigs in space]: 51
CLEANUP
lock:   cookie [Pigs in space]: 52
unlock: cookie [Pigs in space]: 53
lock:   share  [Pigs in space]: 54
unlock: share  [Pigs in space]: 55
*** run 3
CURLOPT_SHARE
lock:   share  [Pigs in space]: 56
unlock: share  [Pigs in space]: 57
CURLOPT_COOKIEJAR
CURLOPT_COOKIELIST FLUSH
lock:   cookie [Pigs in space]: 58
unlock: cookie [Pigs in space]: 59
PERFORM
lock:   dns    [Pigs in space]: 60
unlock: dns    [Pigs in space]: 61
lock:   cookie [Pigs in space]: 62
unlock: cookie [Pigs in space]: 63
lock:   cookie [Pigs in space]: 64
unlock: cookie [Pigs in space]: 65
lock:   cookie [Pigs in space]: 66
unlock: cookie [Pigs in space]: 67
lock:   cookie [Pigs in space]: 68
unlock: cookie [Pigs in space]: 69
lock:   cookie [Pigs in space]: 70
unlock: cookie [Pigs in space]: 71




run 3: overwrite cookie 1 and 4, set cookie 6 with and without tailmatch
lock:   dns    [Pigs in space]: 72
unlock: dns    [Pigs in space]: 73
lock:   dns    [Pigs in space]: 74
unlock: dns    [Pigs in space]: 75
CLEANUP
lock:   cookie [Pigs in space]: 76
unlock: cookie [Pigs in space]: 77
lock:   share  [Pigs in space]: 78
unlock: share  [Pigs in space]: 79
CURLOPT_SHARE
lock:   share  [Pigs in space]: 80
unlock: share  [Pigs in space]: 81
CURLOPT_COOKIELIST ALL
lock:   cookie [Pigs in space]: 82
unlock: cookie [Pigs in space]: 83
CURLOPT_COOKIEJAR
CURLOPT_COOKIELIST RELOAD
lock:   cookie [Pigs in space]: 84
unlock: cookie [Pigs in space]: 85
lock:   cookie [Pigs in space]: 86
unlock: cookie [Pigs in space]: 87
loaded cookies:
-----------------
  www.host.foo.com	FALSE	/	FALSE	1993463787	test6	six_more
  .www.host.foo.com	TRUE	/	FALSE	1993463787	test6	six
  .host.foo.com	TRUE	/	FALSE	1896263787	test5	five
  .host.foo.com	TRUE	/	FALSE	2061978987	test4	overwritten4
  .foo.com	TRUE	/	FALSE	1896263787	test3	three
  .host.foo.com	TRUE	/	FALSE	1896263787	test2	two
  .foo.com	TRUE	/	FALSE	1993463787	test1	overwritten1
  .host.foo.com	TRUE	/	FALSE	1896263787	injected	yes
-----------------
try SHARE_CLEANUP...
lock:   share  [Pigs in space]: 88
unlock: share  [Pigs in space]: 89
SHARE_CLEANUP failed, correct
CLEANUP
lock:   cookie [Pigs in space]: 90
unlock: cookie [Pigs in space]: 91
lock:   share  [Pigs in space]: 92
unlock: share  [Pigs in space]: 93
SHARE_CLEANUP
lock:   share  [Pigs in space]: 94
unlock: share  [Pigs in space]: 95
GLOBAL_CLEANUP
</stdout>
<file name="log/jar506" mode="text">
# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.








|
|


|
|






>
>

|
|
|
|

|
|
|
|


|
|

>
>
|
|
|
|
|
|
|
|

|
|
|
|

|
|
|
|


|
|


|
|

|
|
<
<
<
<






>
>
>
>

|
|
|
|

|
|
|
|

|
|

|
|


|
|
|
|












|
|


|
|
|
|

|
|







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177




178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
lock:   share  [Pigs in space]: 14
unlock: share  [Pigs in space]: 15
*** run 1
CURLOPT_SHARE
lock:   share  [Pigs in space]: 16
unlock: share  [Pigs in space]: 17
PERFORM
lock:   cookie [Pigs in space]: 18
unlock: cookie [Pigs in space]: 19
lock:   dns    [Pigs in space]: 20
unlock: dns    [Pigs in space]: 21
lock:   dns    [Pigs in space]: 22
unlock: dns    [Pigs in space]: 23
lock:   cookie [Pigs in space]: 24
unlock: cookie [Pigs in space]: 25
lock:   cookie [Pigs in space]: 26
unlock: cookie [Pigs in space]: 27
lock:   cookie [Pigs in space]: 28
unlock: cookie [Pigs in space]: 29
lock:   cookie [Pigs in space]: 30
unlock: cookie [Pigs in space]: 31
run 1: set cookie 1, 2 and 3
lock:   dns    [Pigs in space]: 32
unlock: dns    [Pigs in space]: 33
lock:   dns    [Pigs in space]: 34
unlock: dns    [Pigs in space]: 35
CLEANUP
lock:   cookie [Pigs in space]: 36
unlock: cookie [Pigs in space]: 37
lock:   share  [Pigs in space]: 38
unlock: share  [Pigs in space]: 39
*** run 2
CURLOPT_SHARE
lock:   share  [Pigs in space]: 40
unlock: share  [Pigs in space]: 41
PERFORM
lock:   cookie [Pigs in space]: 42
unlock: cookie [Pigs in space]: 43
lock:   dns    [Pigs in space]: 44
unlock: dns    [Pigs in space]: 45
lock:   cookie [Pigs in space]: 46
unlock: cookie [Pigs in space]: 47
lock:   cookie [Pigs in space]: 48
unlock: cookie [Pigs in space]: 49
lock:   cookie [Pigs in space]: 50
unlock: cookie [Pigs in space]: 51
run 2: set cookie 4 and 5
lock:   dns    [Pigs in space]: 52
unlock: dns    [Pigs in space]: 53
lock:   dns    [Pigs in space]: 54
unlock: dns    [Pigs in space]: 55
CLEANUP
lock:   cookie [Pigs in space]: 56
unlock: cookie [Pigs in space]: 57
lock:   share  [Pigs in space]: 58
unlock: share  [Pigs in space]: 59
*** run 3
CURLOPT_SHARE
lock:   share  [Pigs in space]: 60
unlock: share  [Pigs in space]: 61
CURLOPT_COOKIEJAR
CURLOPT_COOKIELIST FLUSH
lock:   cookie [Pigs in space]: 62
unlock: cookie [Pigs in space]: 63
PERFORM
lock:   dns    [Pigs in space]: 64
unlock: dns    [Pigs in space]: 65




lock:   cookie [Pigs in space]: 66
unlock: cookie [Pigs in space]: 67
lock:   cookie [Pigs in space]: 68
unlock: cookie [Pigs in space]: 69
lock:   cookie [Pigs in space]: 70
unlock: cookie [Pigs in space]: 71
lock:   cookie [Pigs in space]: 72
unlock: cookie [Pigs in space]: 73
lock:   cookie [Pigs in space]: 74
unlock: cookie [Pigs in space]: 75
run 3: overwrite cookie 1 and 4, set cookie 6 with and without tailmatch
lock:   dns    [Pigs in space]: 76
unlock: dns    [Pigs in space]: 77
lock:   dns    [Pigs in space]: 78
unlock: dns    [Pigs in space]: 79
CLEANUP
lock:   cookie [Pigs in space]: 80
unlock: cookie [Pigs in space]: 81
lock:   share  [Pigs in space]: 82
unlock: share  [Pigs in space]: 83
CURLOPT_SHARE
lock:   share  [Pigs in space]: 84
unlock: share  [Pigs in space]: 85
CURLOPT_COOKIELIST ALL
lock:   cookie [Pigs in space]: 86
unlock: cookie [Pigs in space]: 87
CURLOPT_COOKIEJAR
CURLOPT_COOKIELIST RELOAD
lock:   cookie [Pigs in space]: 88
unlock: cookie [Pigs in space]: 89
lock:   cookie [Pigs in space]: 90
unlock: cookie [Pigs in space]: 91
loaded cookies:
-----------------
  www.host.foo.com	FALSE	/	FALSE	1993463787	test6	six_more
  .www.host.foo.com	TRUE	/	FALSE	1993463787	test6	six
  .host.foo.com	TRUE	/	FALSE	1896263787	test5	five
  .host.foo.com	TRUE	/	FALSE	2061978987	test4	overwritten4
  .foo.com	TRUE	/	FALSE	1896263787	test3	three
  .host.foo.com	TRUE	/	FALSE	1896263787	test2	two
  .foo.com	TRUE	/	FALSE	1993463787	test1	overwritten1
  .host.foo.com	TRUE	/	FALSE	1896263787	injected	yes
-----------------
try SHARE_CLEANUP...
lock:   share  [Pigs in space]: 92
unlock: share  [Pigs in space]: 93
SHARE_CLEANUP failed, correct
CLEANUP
lock:   cookie [Pigs in space]: 94
unlock: cookie [Pigs in space]: 95
lock:   share  [Pigs in space]: 96
unlock: share  [Pigs in space]: 97
SHARE_CLEANUP
lock:   share  [Pigs in space]: 98
unlock: share  [Pigs in space]: 99
GLOBAL_CLEANUP
</stdout>
<file name="log/jar506" mode="text">
# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

Changes to jni/curl/tests/data/test523.
37
38
39
40
41
42
43



44
45
46
47
48
49
50
 <name>
HTTP GET with proxy and CURLOPT_PORT
 </name>
# first URL then proxy
 <command>
http://www.example.com:999/523 http://%HOSTIP:%HTTPPORT
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 <name>
HTTP GET with proxy and CURLOPT_PORT
 </name>
# first URL then proxy
 <command>
http://www.example.com:999/523 http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test539.
60
61
62
63
64
65
66
67
68
69
70
71
TYPE I
SIZE 539
RETR 539
SYST
CWD /
EPSV
TYPE A
LIST path/to/the/file/539./
QUIT
</protocol>
</verify>
</testcase>







|




60
61
62
63
64
65
66
67
68
69
70
71
TYPE I
SIZE 539
RETR 539
SYST
CWD /
EPSV
TYPE A
LIST path/to/the/file/539.
QUIT
</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test540.
63
64
65
66
67
68
69

70
71
72
73
74
75
76
# tool is what to use instead of 'curl'
<tool>
lib540
</tool>
<features>
!SSPI
crypto

</features>
 <name>
HTTP proxy auth Digest multi API re-using connection
 </name>
 <command>
http://test.remote.example.com/path/540 http://%HOSTIP:%HTTPPORT silly:person custom.set.host.name
</command>







>







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# tool is what to use instead of 'curl'
<tool>
lib540
</tool>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP proxy auth Digest multi API re-using connection
 </name>
 <command>
http://test.remote.example.com/path/540 http://%HOSTIP:%HTTPPORT silly:person custom.set.host.name
</command>
Changes to jni/curl/tests/data/test547.
74
75
76
77
78
79
80

81
82
83
84
85
86
87
<tool>
lib547
</tool>
<features>
NTLM
!SSPI
debug

</features>
 <name>
HTTP proxy auth NTLM with POST data from read callback
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost







>







74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<tool>
lib547
</tool>
<features>
NTLM
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from read callback
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
Changes to jni/curl/tests/data/test548.
74
75
76
77
78
79
80

81
82
83
84
85
86
87
<tool>
lib548
</tool>
<features>
NTLM
!SSPI
debug

</features>
 <name>
HTTP proxy auth NTLM with POST data from CURLOPT_POSTFIELDS
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost







>







74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<tool>
lib548
</tool>
<features>
NTLM
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from CURLOPT_POSTFIELDS
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
Changes to jni/curl/tests/data/test549.
28
29
30
31
32
33
34

35
36
37
38
39
40
41
# Client-side
<client>
<server>
http
</server>
<features>
ftp

</features>
<tool>
lib549
</tool>
 <name>
FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE
 </name>







>







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Client-side
<client>
<server>
http
</server>
<features>
ftp
proxy
</features>
<tool>
lib549
</tool>
 <name>
FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE
 </name>
Changes to jni/curl/tests/data/test550.
28
29
30
31
32
33
34

35
36
37
38
39
40
41
# Client-side
<client>
<server>
http
</server>
<features>
ftp

</features>
<tool>
lib549
</tool>
 <name>
FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE and ASCII transfer
 </name>







>







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Client-side
<client>
<server>
http
</server>
<features>
ftp
proxy
</features>
<tool>
lib549
</tool>
 <name>
FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE and ASCII transfer
 </name>
Changes to jni/curl/tests/data/test551.
59
60
61
62
63
64
65

66
67
68
69
70
71
72
# tool to use
<tool>
lib547
</tool>
<features>
!SSPI
crypto

</features>
 <name>
HTTP proxy auth Digest with POST data from read callback
 </name>
 <command>
http://test.remote.example.com/path/551 http://%HOSTIP:%HTTPPORT s1lly:pers0n
</command>







>







59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# tool to use
<tool>
lib547
</tool>
<features>
!SSPI
crypto
proxy
</features>
 <name>
HTTP proxy auth Digest with POST data from read callback
 </name>
 <command>
http://test.remote.example.com/path/551 http://%HOSTIP:%HTTPPORT s1lly:pers0n
</command>
Changes to jni/curl/tests/data/test555.
79
80
81
82
83
84
85

86
87
88
89
90
91
92
<tool>
lib555
</tool>
<features>
NTLM
!SSPI
debug

</features>
 <name>
HTTP proxy auth NTLM with POST data from read callback multi-if
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost







>







79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<tool>
lib555
</tool>
<features>
NTLM
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy auth NTLM with POST data from read callback multi-if
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
Changes to jni/curl/tests/data/test561.
29
30
31
32
33
34
35

36
37
38
39
40
41
42
# Client-side
<client>
<server>
http
</server>
<features>
ftp

</features>
<tool>
lib549
</tool>
 <name>
FTP RETR with CURLOPT_PROXY_TRANSFER_MODE, ASCII transfer and type=i
 </name>







>







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# Client-side
<client>
<server>
http
</server>
<features>
ftp
proxy
</features>
<tool>
lib549
</tool>
 <name>
FTP RETR with CURLOPT_PROXY_TRANSFER_MODE, ASCII transfer and type=i
 </name>
Changes to jni/curl/tests/data/test563.
28
29
30
31
32
33
34
35


36
37
38
39
40
41
42
</server>
<tool>
lib562
</tool>
 <name>
FTP type=A URL and CURLOPT_PORT set and proxy
 </name>



<setenv>
ftp_proxy=http://%HOSTIP:%HTTPPORT/
</setenv>
# note that we need quotes around the URL below to make sure the shell doesn't
# treat the semicolon as a separator!
 <command>
"ftp://%HOSTIP:23456/563;type=A" %FTPPORT







|
>
>







28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
</server>
<tool>
lib562
</tool>
 <name>
FTP type=A URL and CURLOPT_PORT set and proxy
 </name>
<features>
proxy
</features>
<setenv>
ftp_proxy=http://%HOSTIP:%HTTPPORT/
</setenv>
# note that we need quotes around the URL below to make sure the shell doesn't
# treat the semicolon as a separator!
 <command>
"ftp://%HOSTIP:23456/563;type=A" %FTPPORT
Changes to jni/curl/tests/data/test564.
34
35
36
37
38
39
40



41
42
43
44
45
46
47
</tool>
 <name>
FTP RETR a file over a SOCKS proxy using the multi interface
 </name>
<command>
ftp://%HOSTIP:%FTPPORT/path/564 %HOSTIP:%SOCKSPORT
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com







>
>
>







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
</tool>
 <name>
FTP RETR a file over a SOCKS proxy using the multi interface
 </name>
<command>
ftp://%HOSTIP:%FTPPORT/path/564 %HOSTIP:%SOCKSPORT
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
Changes to jni/curl/tests/data/test590.
72
73
74
75
76
77
78

79
80
81
82
83
84
85
<tool>
lib590
</tool>
<features>
NTLM
!SSPI
debug

</features>
 <name>
HTTP proxy offers Negotiate+NTLM, use only NTLM
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost







>







72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<tool>
lib590
</tool>
<features>
NTLM
!SSPI
debug
proxy
</features>
 <name>
HTTP proxy offers Negotiate+NTLM, use only NTLM
 </name>
 <setenv>
# we force our own host name, in order to make the test machine independent
CURL_GETHOSTNAME=curlhost
Changes to jni/curl/tests/data/test62.
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
http
</server>
 <name>
HTTP, send cookies when using custom Host:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/62 http://%HOSTIP:%HTTPPORT/we/want?hoge=fuga -b log/jar62.txt -H "Host: www.host.foo.com"
</command>
<file name="log/jar62.txt">
# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_.foo.com	TRUE	/we/want/	FALSE	2147483647	test	yes







|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<server>
http
</server>
 <name>
HTTP, send cookies when using custom Host:
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/62 http://%HOSTIP:%HTTPPORT/we/want/62?hoge=fuga -b log/jar62.txt -H "Host: www.host.foo.com"
</command>
<file name="log/jar62.txt">
# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_.foo.com	TRUE	/we/want/	FALSE	2147483647	test	yes
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
</strip>
<protocol>
GET /we/want/62 HTTP/1.1
Host: www.host.foo.com
Accept: */*
Cookie: test2=yes; test=yes

GET /we/want?hoge=fuga HTTP/1.1
Host: www.host.foo.com
Accept: */*
Cookie: test2=yes; test=yes

</protocol>
</verify>
</testcase>







|







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
</strip>
<protocol>
GET /we/want/62 HTTP/1.1
Host: www.host.foo.com
Accept: */*
Cookie: test2=yes; test=yes

GET /we/want/62?hoge=fuga HTTP/1.1
Host: www.host.foo.com
Accept: */*
Cookie: test2=yes; test=yes

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test63.
29
30
31
32
33
34
35



36
37
38
39
40
41
42
 </name>
<setenv>
http_proxy=http://fake:user@%HOSTIP:%HTTPPORT/
</setenv>
 <command>
http://we.want.that.site.com/63
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>







>
>
>







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 </name>
<setenv>
http_proxy=http://fake:user@%HOSTIP:%HTTPPORT/
</setenv>
 <command>
http://we.want.that.site.com/63
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
Changes to jni/curl/tests/data/test659.
32
33
34
35
36
37
38



39
40
41
42
43
44
45
</tool>
<name>
CURLOPT_CURLU without the path set - over proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT
</command>



</client>

<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>







>
>
>







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
</tool>
<name>
CURLOPT_CURLU without the path set - over proxy
 </name>
 <command>
http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
Added jni/curl/tests/data/test661.


















































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<testcase>
<info>
<keywords>
FTP
</keywords>
</info>

#
# Server-side
<reply>
<data>
</data>
</reply>

# Client-side
<client>
<server>
ftp
</server>
# tool is what to use instead of 'curl'
<tool>
lib661
</tool>

 <name>
Avoid redundant CWDs
 </name>
 <command>
ftp://%HOSTIP:%FTPPORT/
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD /folderA
EPSV
TYPE I
RETR 661
CWD /folderB
EPSV
RETR 661
QUIT
USER anonymous
PASS ftp@example.com
PWD
EPSV
TYPE I
RETR /folderA/661
CWD /folderB
EPSV
RETR 661
EPSV
RETR /folderA/661
QUIT
USER anonymous
PASS ftp@example.com
PWD
SYST
QUIT
USER anonymous
PASS ftp@example.com
PWD
SYST
SYST
QUIT
</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test662.




























































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Location: http://example.net/tes t case=/6620002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

</data>
<data2>
HTTP/1.1 200 OK
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 5

body
</data2>
<datacheck>
HTTP/1.1 302 OK
Location: http://example.net/tes t case=/6620002
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

HTTP/1.1 200 OK
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 5

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with whitespace in absolute Location: URL
 </name>
 <command>
http://example.com/please/gimme/662 -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET http://example.com/please/gimme/662 HTTP/1.1
Host: example.com
Accept: */*
Proxy-Connection: Keep-Alive

GET http://example.net/tes%20t%20case=/6620002 HTTP/1.1
Host: example.net
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Added jni/curl/tests/data/test663.




































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#
# This test is crafted to reproduce oss-fuzz bug
# https://crbug.com/oss-fuzz/17954
#
<testcase>
<info>
<keywords>
HTTP
HTTP GET
followlocation
</keywords>
</info>
#
# Server-side
<reply>
<data>
HTTP/1.1 302 OK
Location: http://example.net/there/it/is/../../tes t case=/6630002? yes no
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

</data>
<data2>
HTTP/1.1 200 OK
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 5

body
</data2>
<datacheck>
HTTP/1.1 302 OK
Location: http://example.net/there/it/is/../../tes t case=/6630002? yes no
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 0

HTTP/1.1 200 OK
Location: this should be ignored
Date: Thu, 09 Nov 2010 14:49:00 GMT
Content-Length: 5

body
</datacheck>
</reply>

#
# Client-side
<client>
<server>
http
</server>
 <name>
HTTP redirect with dotdots and whitespaces in absolute Location: URL
 </name>
 <command>
http://example.com/please/../gimme/663?foobar#hello -L -x http://%HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
</strip>
<protocol>
GET http://example.com/gimme/663?foobar HTTP/1.1
Host: example.com
Accept: */*
Proxy-Connection: Keep-Alive

GET http://example.net/there/tes%20t%20case=/6630002?+yes+no HTTP/1.1
Host: example.net
Accept: */*
Proxy-Connection: Keep-Alive

</protocol>
</verify>
</testcase>
Changes to jni/curl/tests/data/test702.
21
22
23
24
25
26
27

28
29
30
31
32
33
34
# Client-side
<client>
<server>
socks4
</server>
<features>
http

</features>
 <name>
Attempt connect to non-listening HTTP server via SOCKS4 proxy
 </name>
 <command>
--socks4 %HOSTIP:%SOCKSPORT http://%HOSTIP:60000
</command>







>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Client-side
<client>
<server>
socks4
</server>
<features>
http
proxy
</features>
 <name>
Attempt connect to non-listening HTTP server via SOCKS4 proxy
 </name>
 <command>
--socks4 %HOSTIP:%SOCKSPORT http://%HOSTIP:60000
</command>
Changes to jni/curl/tests/data/test703.
21
22
23
24
25
26
27

28
29
30
31
32
33
34
# Client-side
<client>
<server>
socks5
</server>
<features>
http

</features>
 <name>
Attempt connect to non-listening HTTP server via SOCKS5 proxy
 </name>
 <command>
--socks5 %HOSTIP:%SOCKSPORT http://%HOSTIP:60000
</command>







>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Client-side
<client>
<server>
socks5
</server>
<features>
http
proxy
</features>
 <name>
Attempt connect to non-listening HTTP server via SOCKS5 proxy
 </name>
 <command>
--socks5 %HOSTIP:%SOCKSPORT http://%HOSTIP:60000
</command>
Changes to jni/curl/tests/data/test704.
19
20
21
22
23
24
25
26
27



28
29
30
31
32
33
34
<server>
http
</server>
 <name>
Attempt connect to non-listening SOCKS4 proxy
 </name>
 <command>
--socks4 %HOSTIP:60000 http://%HOSTIP:%HTTPPORT/704
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
7
</errorcode>







|

>
>
>







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
http
</server>
 <name>
Attempt connect to non-listening SOCKS4 proxy
 </name>
 <command>
--socks4 %HOSTIP:2 http://%HOSTIP:%HTTPPORT/704
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
7
</errorcode>
Changes to jni/curl/tests/data/test705.
19
20
21
22
23
24
25
26
27



28
29
30
31
32
33
34
<server>
http
</server>
 <name>
Attempt connect to non-listening SOCKS5 proxy
 </name>
 <command>
--socks5 %HOSTIP:60000 http://%HOSTIP:%HTTPPORT/705
</command>



</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
7
</errorcode>







|

>
>
>







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<server>
http
</server>
 <name>
Attempt connect to non-listening SOCKS5 proxy
 </name>
 <command>
--socks5 %HOSTIP:2 http://%HOSTIP:%HTTPPORT/705
</command>
<features>
proxy
</features>
</client>

# Verify data after the test has been "shot"
<verify>
<errorcode>
7
</errorcode>
Changes to jni/curl/tests/data/test714.
37
38
39
40
41
42
43

44
45
46
47
48
49
50
<client>
<server>
ftp
http-proxy
</server>
<features>
http

</features>
 <name>
FTP fetch with --proxy set to http:// and with --connect-to
 </name>
 <command>
ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:%FTPPORT --proxytunnel --proxy http://%HOSTIP:%PROXYPORT 
</command>







>







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<client>
<server>
ftp
http-proxy
</server>
<features>
http
proxy
</features>
 <name>
FTP fetch with --proxy set to http:// and with --connect-to
 </name>
 <command>
ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:%FTPPORT --proxytunnel --proxy http://%HOSTIP:%PROXYPORT 
</command>
Changes to jni/curl/tests/data/test715.
39
40
41
42
43
44
45

46
47
48
49
50
51
52
<server>
ftp
http-proxy
socks5
</server>
<features>
http

</features>
 <name>
FTP fetch with --preproxy, --proxy and --connect-to
 </name>
 <command>
ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:%FTPPORT --proxytunnel --proxy %HOSTIP:%PROXYPORT --preproxy socks5://%HOSTIP:%SOCKSPORT 
</command>







>







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<server>
ftp
http-proxy
socks5
</server>
<features>
http
proxy
</features>
 <name>
FTP fetch with --preproxy, --proxy and --connect-to
 </name>
 <command>
ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:%FTPPORT --proxytunnel --proxy %HOSTIP:%PROXYPORT --preproxy socks5://%HOSTIP:%SOCKSPORT 
</command>
Changes to jni/curl/tests/data/test716.
19
20
21
22
23
24
25

26
27
28
29
30
31
32
# Client-side
<client>
<server>
socks5
</server>
<features>
http

</features>
<name>
SOCKS5 proxy with too long user name
</name>

# it should never connect to the target server
 <command>







>







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Client-side
<client>
<server>
socks5
</server>
<features>
http
proxy
</features>
<name>
SOCKS5 proxy with too long user name
</name>

# it should never connect to the target server
 <command>
Changes to jni/curl/tests/data/test717.
43
44
45
46
47
48
49



50
51
52
53
54
55
56
SOCKS5 proxy auth
</name>

# target a port that won't work without the SOCKS magic
 <command>
http://%HOSTIP:1/717 -x socks5://uz3r:p4ssworm@%HOSTIP:%SOCKSPORT
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
SOCKS5 proxy auth
</name>

# target a port that won't work without the SOCKS magic
 <command>
http://%HOSTIP:1/717 -x socks5://uz3r:p4ssworm@%HOSTIP:%SOCKSPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test79.
25
26
27
28
29
30
31

32
33
34
35
36
37
38
# Client-side
<client>
<server>
http
</server>
<features>
ftp

</features>
 <name>
FTP over HTTP proxy
 </name>
 <command>
ftp://%HOSTIP:%HTTPPORT/we/want/that/page/79 -x %HOSTIP:%HTTPPORT
</command>







>







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Client-side
<client>
<server>
http
</server>
<features>
ftp
proxy
</features>
 <name>
FTP over HTTP proxy
 </name>
 <command>
ftp://%HOSTIP:%HTTPPORT/we/want/that/page/79 -x %HOSTIP:%HTTPPORT
</command>
Changes to jni/curl/tests/data/test80.
51
52
53
54
55
56
57



58
59
60
61
62
63
64
</server>
 <name>
HTTP 1.0 CONNECT with proxytunnel and proxy+host Basic authentication
 </name>
 <command>
http://test.80:%HTTPPORT/we/want/that/page/80 -p --proxy1.0 %HOSTIP:%PROXYPORT --user iam:myself --proxy-user youare:yourself
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
</server>
 <name>
HTTP 1.0 CONNECT with proxytunnel and proxy+host Basic authentication
 </name>
 <command>
http://test.80:%HTTPPORT/we/want/that/page/80 -p --proxy1.0 %HOSTIP:%PROXYPORT --user iam:myself --proxy-user youare:yourself
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test81.
53
54
55
56
57
58
59

60
61
62
63
64
65
66

# Client-side
<client>
<features>
NTLM
!SSPI
debug

</features>
<server>
http
</server>
 <name>
HTTP with proxy using NTLM authorization
 </name>







>







53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

# Client-side
<client>
<features>
NTLM
!SSPI
debug
proxy
</features>
<server>
http
</server>
 <name>
HTTP with proxy using NTLM authorization
 </name>
Changes to jni/curl/tests/data/test82.
22
23
24
25
26
27
28

29
30
31
32
33
34
35
</data>

</reply>

# Client-side
<client>
<features>

</features>
<server>
http
</server>
 <name>
HTTP with proxy requiring NTLM, but we send Basic
 </name>







>







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
</data>

</reply>

# Client-side
<client>
<features>
proxy
</features>
<server>
http
</server>
 <name>
HTTP with proxy requiring NTLM, but we send Basic
 </name>
Changes to jni/curl/tests/data/test83.
48
49
50
51
52
53
54



55
56
57
58
59
60
61
</server>
 <name>
HTTP over proxy-tunnel with site authentication
 </name>
 <command>
http://test.83:%HTTPPORT/we/want/that/page/83 -p -x %HOSTIP:%PROXYPORT --user 'iam:my:;self'
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</server>
 <name>
HTTP over proxy-tunnel with site authentication
 </name>
 <command>
http://test.83:%HTTPPORT/we/want/that/page/83 -p -x %HOSTIP:%PROXYPORT --user 'iam:my:;self'
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test84.
29
30
31
32
33
34
35



36
37
38
39
40
41
42
</server>
 <name>
HTTP over proxy with site authentication
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/84 -x %HOSTIP:%HTTPPORT --user iam:myself
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
</server>
 <name>
HTTP over proxy with site authentication
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/84 -x %HOSTIP:%HTTPPORT --user iam:myself
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test85.
32
33
34
35
36
37
38



39
40
41
42
43
44
45
</server>
 <name>
HTTP over proxy with site and proxy authentication
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/85 -x %HOSTIP:%HTTPPORT --user iam:myself --proxy-user testing:this
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
</server>
 <name>
HTTP over proxy with site and proxy authentication
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/we/want/that/page/85 -x %HOSTIP:%HTTPPORT --user iam:myself --proxy-user testing:this
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test93.
27
28
29
30
31
32
33



34
35
36
37
38
39
40
</server>
 <name>
HTTP GET with failed proxy auth
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/93 -x %HOSTIP:%HTTPPORT
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</server>
 <name>
HTTP GET with failed proxy auth
 </name>
 <command>
http://%HOSTIP:%HTTPPORT/93 -x %HOSTIP:%HTTPPORT
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/data/test94.
25
26
27
28
29
30
31

32
33
34
35
36
37
38
# Client-side
<client>
<server>
http
</server>
<features>
SSL

</features>
 <name>
HTTPS GET with failed proxy auth (CONNECT 1.0)
 </name>
 <command>
https://test.anything.really.com:94 --proxy1.0 %HOSTIP:%HTTPPORT
</command>







>







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Client-side
<client>
<server>
http
</server>
<features>
SSL
proxy
</features>
 <name>
HTTPS GET with failed proxy auth (CONNECT 1.0)
 </name>
 <command>
https://test.anything.really.com:94 --proxy1.0 %HOSTIP:%HTTPPORT
</command>
Changes to jni/curl/tests/data/test95.
48
49
50
51
52
53
54



55
56
57
58
59
60
61
</server>
 <name>
HTTP over proxytunnel using POST
 </name>
 <command>
http://test.95:%HTTPPORT/we/want/that/page/95 -p -x %HOSTIP:%PROXYPORT -d "datatopost=ohthatsfunyesyes"
</command>



</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*







>
>
>







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
</server>
 <name>
HTTP over proxytunnel using POST
 </name>
 <command>
http://test.95:%HTTPPORT/we/want/that/page/95 -p -x %HOSTIP:%PROXYPORT -d "datatopost=ohthatsfunyesyes"
</command>
<features>
proxy
</features>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
Changes to jni/curl/tests/libtest/Makefile.in.
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
	lib579$(EXEEXT) lib582$(EXEEXT) lib583$(EXEEXT) \
	lib585$(EXEEXT) lib586$(EXEEXT) lib587$(EXEEXT) \
	lib589$(EXEEXT) lib590$(EXEEXT) lib591$(EXEEXT) \
	lib597$(EXEEXT) lib598$(EXEEXT) lib599$(EXEEXT) \
	lib643$(EXEEXT) lib644$(EXEEXT) lib645$(EXEEXT) \
	lib650$(EXEEXT) lib651$(EXEEXT) lib652$(EXEEXT) \
	lib653$(EXEEXT) lib654$(EXEEXT) lib655$(EXEEXT) \
	lib658$(EXEEXT) lib659$(EXEEXT) lib1156$(EXEEXT) \
	lib1500$(EXEEXT) lib1501$(EXEEXT) lib1502$(EXEEXT) \
	lib1503$(EXEEXT) lib1504$(EXEEXT) lib1505$(EXEEXT) \
	lib1506$(EXEEXT) lib1507$(EXEEXT) lib1508$(EXEEXT) \
	lib1509$(EXEEXT) lib1510$(EXEEXT) lib1511$(EXEEXT) \
	lib1512$(EXEEXT) lib1513$(EXEEXT) lib1514$(EXEEXT) \
	lib1515$(EXEEXT) lib1517$(EXEEXT) lib1518$(EXEEXT) \
	lib1520$(EXEEXT) lib1521$(EXEEXT) lib1522$(EXEEXT) \
	lib1523$(EXEEXT) lib1525$(EXEEXT) lib1526$(EXEEXT) \
	lib1527$(EXEEXT) lib1528$(EXEEXT) lib1529$(EXEEXT) \
	lib1530$(EXEEXT) lib1531$(EXEEXT) lib1532$(EXEEXT) \
	lib1533$(EXEEXT) lib1534$(EXEEXT) lib1535$(EXEEXT) \
	lib1536$(EXEEXT) lib1537$(EXEEXT) lib1538$(EXEEXT) \
	lib1540$(EXEEXT) lib1541$(EXEEXT) lib1550$(EXEEXT) \
	lib1551$(EXEEXT) lib1552$(EXEEXT) lib1553$(EXEEXT) \
	lib1554$(EXEEXT) lib1555$(EXEEXT) lib1556$(EXEEXT) \
	lib1557$(EXEEXT) lib1558$(EXEEXT) lib1559$(EXEEXT) \
	lib1560$(EXEEXT) lib1591$(EXEEXT) lib1592$(EXEEXT) \
	lib1593$(EXEEXT) lib1594$(EXEEXT) lib1596$(EXEEXT) \
	lib1900$(EXEEXT) lib1905$(EXEEXT) lib1906$(EXEEXT) \
	lib2033$(EXEEXT)
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
@CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_3 = -mimpure-text
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_4 = -DCURL_HIDDEN_SYMBOLS
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_5 = $(CFLAG_CURL_SYMBOL_HIDING)

# Build a stub gssapi implementation for testing







|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|







116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
	lib579$(EXEEXT) lib582$(EXEEXT) lib583$(EXEEXT) \
	lib585$(EXEEXT) lib586$(EXEEXT) lib587$(EXEEXT) \
	lib589$(EXEEXT) lib590$(EXEEXT) lib591$(EXEEXT) \
	lib597$(EXEEXT) lib598$(EXEEXT) lib599$(EXEEXT) \
	lib643$(EXEEXT) lib644$(EXEEXT) lib645$(EXEEXT) \
	lib650$(EXEEXT) lib651$(EXEEXT) lib652$(EXEEXT) \
	lib653$(EXEEXT) lib654$(EXEEXT) lib655$(EXEEXT) \
	lib658$(EXEEXT) lib659$(EXEEXT) lib661$(EXEEXT) \
	lib1156$(EXEEXT) lib1500$(EXEEXT) lib1501$(EXEEXT) \
	lib1502$(EXEEXT) lib1503$(EXEEXT) lib1504$(EXEEXT) \
	lib1505$(EXEEXT) lib1506$(EXEEXT) lib1507$(EXEEXT) \
	lib1508$(EXEEXT) lib1509$(EXEEXT) lib1510$(EXEEXT) \
	lib1511$(EXEEXT) lib1512$(EXEEXT) lib1513$(EXEEXT) \
	lib1514$(EXEEXT) lib1515$(EXEEXT) lib1517$(EXEEXT) \
	lib1518$(EXEEXT) lib1520$(EXEEXT) lib1521$(EXEEXT) \
	lib1522$(EXEEXT) lib1523$(EXEEXT) lib1525$(EXEEXT) \
	lib1526$(EXEEXT) lib1527$(EXEEXT) lib1528$(EXEEXT) \
	lib1529$(EXEEXT) lib1530$(EXEEXT) lib1531$(EXEEXT) \
	lib1532$(EXEEXT) lib1533$(EXEEXT) lib1534$(EXEEXT) \
	lib1535$(EXEEXT) lib1536$(EXEEXT) lib1537$(EXEEXT) \
	lib1538$(EXEEXT) lib1540$(EXEEXT) lib1541$(EXEEXT) \
	lib1550$(EXEEXT) lib1551$(EXEEXT) lib1552$(EXEEXT) \
	lib1553$(EXEEXT) lib1554$(EXEEXT) lib1555$(EXEEXT) \
	lib1556$(EXEEXT) lib1557$(EXEEXT) lib1558$(EXEEXT) \
	lib1559$(EXEEXT) lib1560$(EXEEXT) lib1591$(EXEEXT) \
	lib1592$(EXEEXT) lib1593$(EXEEXT) lib1594$(EXEEXT) \
	lib1596$(EXEEXT) lib1900$(EXEEXT) lib1905$(EXEEXT) \
	lib1906$(EXEEXT) lib1907$(EXEEXT) lib2033$(EXEEXT)
@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
@CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_3 = -mimpure-text
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_4 = -DCURL_HIDDEN_SYMBOLS
@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_5 = $(CFLAG_CURL_SYMBOL_HIDING)

# Build a stub gssapi implementation for testing
582
583
584
585
586
587
588
589







590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099





1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
am__objects_139 = lib1906-first.$(OBJEXT)
am__objects_140 = lib1906-testutil.$(OBJEXT)
am__objects_141 = ../../lib/lib1906-warnless.$(OBJEXT)
am_lib1906_OBJECTS = lib1906-lib1906.$(OBJEXT) $(am__objects_139) \
	$(am__objects_140) $(am__objects_141)
lib1906_OBJECTS = $(am_lib1906_OBJECTS)
lib1906_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_142 = lib2033-first.$(OBJEXT)







am__objects_143 = lib2033-testutil.$(OBJEXT)
am__objects_144 = ../../lib/lib2033-warnless.$(OBJEXT)
am_lib2033_OBJECTS = lib2033-libntlmconnect.$(OBJEXT) \
	$(am__objects_142) $(am__objects_143) $(am__objects_144)
lib2033_OBJECTS = $(am_lib2033_OBJECTS)
lib2033_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_145 = lib500-first.$(OBJEXT)
am__objects_146 = lib500-testutil.$(OBJEXT)
am__objects_147 = lib500-testtrace.$(OBJEXT)
am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_145) \
	$(am__objects_146) $(am__objects_147)
lib500_OBJECTS = $(am_lib500_OBJECTS)
lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_148 = lib501-first.$(OBJEXT)
am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_148)
lib501_OBJECTS = $(am_lib501_OBJECTS)
lib501_LDADD = $(LDADD)
lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_149 = lib502-first.$(OBJEXT)
am__objects_150 = lib502-testutil.$(OBJEXT)
am__objects_151 = ../../lib/lib502-warnless.$(OBJEXT)
am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_149) \
	$(am__objects_150) $(am__objects_151)
lib502_OBJECTS = $(am_lib502_OBJECTS)
lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_152 = lib503-first.$(OBJEXT)
am__objects_153 = lib503-testutil.$(OBJEXT)
am__objects_154 = ../../lib/lib503-warnless.$(OBJEXT)
am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_152) \
	$(am__objects_153) $(am__objects_154)
lib503_OBJECTS = $(am_lib503_OBJECTS)
lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_155 = lib504-first.$(OBJEXT)
am__objects_156 = lib504-testutil.$(OBJEXT)
am__objects_157 = ../../lib/lib504-warnless.$(OBJEXT)
am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_155) \
	$(am__objects_156) $(am__objects_157)
lib504_OBJECTS = $(am_lib504_OBJECTS)
lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_158 = lib505-first.$(OBJEXT)
am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_158)
lib505_OBJECTS = $(am_lib505_OBJECTS)
lib505_LDADD = $(LDADD)
lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_159 = lib506-first.$(OBJEXT)
am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_159)
lib506_OBJECTS = $(am_lib506_OBJECTS)
lib506_LDADD = $(LDADD)
lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_160 = lib507-first.$(OBJEXT)
am__objects_161 = lib507-testutil.$(OBJEXT)
am__objects_162 = ../../lib/lib507-warnless.$(OBJEXT)
am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_160) \
	$(am__objects_161) $(am__objects_162)
lib507_OBJECTS = $(am_lib507_OBJECTS)
lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_163 = lib508-first.$(OBJEXT)
am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_163)
lib508_OBJECTS = $(am_lib508_OBJECTS)
lib508_LDADD = $(LDADD)
lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_164 = lib509-first.$(OBJEXT)
am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_164)
lib509_OBJECTS = $(am_lib509_OBJECTS)
lib509_LDADD = $(LDADD)
lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_165 = lib510-first.$(OBJEXT)
am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_165)
lib510_OBJECTS = $(am_lib510_OBJECTS)
lib510_LDADD = $(LDADD)
lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_166 = lib511-first.$(OBJEXT)
am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_166)
lib511_OBJECTS = $(am_lib511_OBJECTS)
lib511_LDADD = $(LDADD)
lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_167 = lib512-first.$(OBJEXT)
am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_167)
lib512_OBJECTS = $(am_lib512_OBJECTS)
lib512_LDADD = $(LDADD)
lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_168 = lib513-first.$(OBJEXT)
am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_168)
lib513_OBJECTS = $(am_lib513_OBJECTS)
lib513_LDADD = $(LDADD)
lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_169 = lib514-first.$(OBJEXT)
am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_169)
lib514_OBJECTS = $(am_lib514_OBJECTS)
lib514_LDADD = $(LDADD)
lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_170 = lib515-first.$(OBJEXT)
am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_170)
lib515_OBJECTS = $(am_lib515_OBJECTS)
lib515_LDADD = $(LDADD)
lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_171 = lib516-first.$(OBJEXT)
am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_171)
lib516_OBJECTS = $(am_lib516_OBJECTS)
lib516_LDADD = $(LDADD)
lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_172 = lib517-first.$(OBJEXT)
am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_172)
lib517_OBJECTS = $(am_lib517_OBJECTS)
lib517_LDADD = $(LDADD)
lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_173 = lib518-first.$(OBJEXT)
am__objects_174 = ../../lib/lib518-warnless.$(OBJEXT)
am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_173) \
	$(am__objects_174)
lib518_OBJECTS = $(am_lib518_OBJECTS)
lib518_LDADD = $(LDADD)
lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_175 = lib519-first.$(OBJEXT)
am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_175)
lib519_OBJECTS = $(am_lib519_OBJECTS)
lib519_LDADD = $(LDADD)
lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_176 = lib520-first.$(OBJEXT)
am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_176)
lib520_OBJECTS = $(am_lib520_OBJECTS)
lib520_LDADD = $(LDADD)
lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_177 = lib521-first.$(OBJEXT)
am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_177)
lib521_OBJECTS = $(am_lib521_OBJECTS)
lib521_LDADD = $(LDADD)
lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_178 = lib523-first.$(OBJEXT)
am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_178)
lib523_OBJECTS = $(am_lib523_OBJECTS)
lib523_LDADD = $(LDADD)
lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_179 = lib524-first.$(OBJEXT)
am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_179)
lib524_OBJECTS = $(am_lib524_OBJECTS)
lib524_LDADD = $(LDADD)
lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_180 = lib525-first.$(OBJEXT)
am__objects_181 = lib525-testutil.$(OBJEXT)
am__objects_182 = ../../lib/lib525-warnless.$(OBJEXT)
am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_180) \
	$(am__objects_181) $(am__objects_182)
lib525_OBJECTS = $(am_lib525_OBJECTS)
lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_183 = lib526-first.$(OBJEXT)
am__objects_184 = lib526-testutil.$(OBJEXT)
am__objects_185 = ../../lib/lib526-warnless.$(OBJEXT)
am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_183) \
	$(am__objects_184) $(am__objects_185)
lib526_OBJECTS = $(am_lib526_OBJECTS)
lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_186 = lib527-first.$(OBJEXT)
am__objects_187 = lib527-testutil.$(OBJEXT)
am__objects_188 = ../../lib/lib527-warnless.$(OBJEXT)
am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_186) \
	$(am__objects_187) $(am__objects_188)
lib527_OBJECTS = $(am_lib527_OBJECTS)
lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_189 = lib529-first.$(OBJEXT)
am__objects_190 = lib529-testutil.$(OBJEXT)
am__objects_191 = ../../lib/lib529-warnless.$(OBJEXT)
am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_189) \
	$(am__objects_190) $(am__objects_191)
lib529_OBJECTS = $(am_lib529_OBJECTS)
lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_192 = lib530-first.$(OBJEXT)
am__objects_193 = lib530-testutil.$(OBJEXT)
am__objects_194 = ../../lib/lib530-warnless.$(OBJEXT)
am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_192) \
	$(am__objects_193) $(am__objects_194)
lib530_OBJECTS = $(am_lib530_OBJECTS)
lib530_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_195 = lib532-first.$(OBJEXT)
am__objects_196 = lib532-testutil.$(OBJEXT)
am__objects_197 = ../../lib/lib532-warnless.$(OBJEXT)
am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_195) \
	$(am__objects_196) $(am__objects_197)
lib532_OBJECTS = $(am_lib532_OBJECTS)
lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_198 = lib533-first.$(OBJEXT)
am__objects_199 = lib533-testutil.$(OBJEXT)
am__objects_200 = ../../lib/lib533-warnless.$(OBJEXT)
am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_198) \
	$(am__objects_199) $(am__objects_200)
lib533_OBJECTS = $(am_lib533_OBJECTS)
lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_201 = lib537-first.$(OBJEXT)
am__objects_202 = ../../lib/lib537-warnless.$(OBJEXT)
am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_201) \
	$(am__objects_202)
lib537_OBJECTS = $(am_lib537_OBJECTS)
lib537_LDADD = $(LDADD)
lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_203 = lib539-first.$(OBJEXT)
am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_203)
lib539_OBJECTS = $(am_lib539_OBJECTS)
lib539_LDADD = $(LDADD)
lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_204 = lib540-first.$(OBJEXT)
am__objects_205 = lib540-testutil.$(OBJEXT)
am__objects_206 = ../../lib/lib540-warnless.$(OBJEXT)
am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_204) \
	$(am__objects_205) $(am__objects_206)
lib540_OBJECTS = $(am_lib540_OBJECTS)
lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_207 = lib541-first.$(OBJEXT)
am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_207)
lib541_OBJECTS = $(am_lib541_OBJECTS)
lib541_LDADD = $(LDADD)
lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_208 = lib542-first.$(OBJEXT)
am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_208)
lib542_OBJECTS = $(am_lib542_OBJECTS)
lib542_LDADD = $(LDADD)
lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_209 = lib543-first.$(OBJEXT)
am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_209)
lib543_OBJECTS = $(am_lib543_OBJECTS)
lib543_LDADD = $(LDADD)
lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_210 = lib544-first.$(OBJEXT)
am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_210)
lib544_OBJECTS = $(am_lib544_OBJECTS)
lib544_LDADD = $(LDADD)
lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_211 = lib545-first.$(OBJEXT)
am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_211)
lib545_OBJECTS = $(am_lib545_OBJECTS)
lib545_LDADD = $(LDADD)
lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_212 = lib547-first.$(OBJEXT)
am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_212)
lib547_OBJECTS = $(am_lib547_OBJECTS)
lib547_LDADD = $(LDADD)
lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_213 = lib548-first.$(OBJEXT)
am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_213)
lib548_OBJECTS = $(am_lib548_OBJECTS)
lib548_LDADD = $(LDADD)
lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_214 = lib549-first.$(OBJEXT)
am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_214)
lib549_OBJECTS = $(am_lib549_OBJECTS)
lib549_LDADD = $(LDADD)
lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_215 = lib552-first.$(OBJEXT)
am__objects_216 = ../../lib/lib552-warnless.$(OBJEXT)
am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_215) \
	$(am__objects_216)
lib552_OBJECTS = $(am_lib552_OBJECTS)
lib552_LDADD = $(LDADD)
lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_217 = lib553-first.$(OBJEXT)
am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_217)
lib553_OBJECTS = $(am_lib553_OBJECTS)
lib553_LDADD = $(LDADD)
lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_218 = lib554-first.$(OBJEXT)
am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_218)
lib554_OBJECTS = $(am_lib554_OBJECTS)
lib554_LDADD = $(LDADD)
lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_219 = lib555-first.$(OBJEXT)
am__objects_220 = lib555-testutil.$(OBJEXT)
am__objects_221 = ../../lib/lib555-warnless.$(OBJEXT)
am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_219) \
	$(am__objects_220) $(am__objects_221)
lib555_OBJECTS = $(am_lib555_OBJECTS)
lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_222 = lib556-first.$(OBJEXT)
am__objects_223 = ../../lib/lib556-warnless.$(OBJEXT)
am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_222) \
	$(am__objects_223)
lib556_OBJECTS = $(am_lib556_OBJECTS)
lib556_LDADD = $(LDADD)
lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_224 = lib557-first.$(OBJEXT)
am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_224)
lib557_OBJECTS = $(am_lib557_OBJECTS)
lib557_LDADD = $(LDADD)
lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_225 = lib558-first.$(OBJEXT)
am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_225)
lib558_OBJECTS = $(am_lib558_OBJECTS)
lib558_LDADD = $(LDADD)
lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_226 = lib559-first.$(OBJEXT)
am_lib559_OBJECTS = lib559-lib559.$(OBJEXT) $(am__objects_226)
lib559_OBJECTS = $(am_lib559_OBJECTS)
lib559_LDADD = $(LDADD)
lib559_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_227 = lib560-first.$(OBJEXT)
am__objects_228 = lib560-testutil.$(OBJEXT)
am__objects_229 = ../../lib/lib560-warnless.$(OBJEXT)
am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_227) \
	$(am__objects_228) $(am__objects_229)
lib560_OBJECTS = $(am_lib560_OBJECTS)
lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_230 = lib562-first.$(OBJEXT)
am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_230)
lib562_OBJECTS = $(am_lib562_OBJECTS)
lib562_LDADD = $(LDADD)
lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_231 = lib564-first.$(OBJEXT)
am__objects_232 = lib564-testutil.$(OBJEXT)
am__objects_233 = ../../lib/lib564-warnless.$(OBJEXT)
am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_231) \
	$(am__objects_232) $(am__objects_233)
lib564_OBJECTS = $(am_lib564_OBJECTS)
lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_234 = lib565-first.$(OBJEXT)
am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_234)
lib565_OBJECTS = $(am_lib565_OBJECTS)
lib565_LDADD = $(LDADD)
lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_235 = lib566-first.$(OBJEXT)
am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_235)
lib566_OBJECTS = $(am_lib566_OBJECTS)
lib566_LDADD = $(LDADD)
lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_236 = lib567-first.$(OBJEXT)
am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_236)
lib567_OBJECTS = $(am_lib567_OBJECTS)
lib567_LDADD = $(LDADD)
lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_237 = lib568-first.$(OBJEXT)
am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_237)
lib568_OBJECTS = $(am_lib568_OBJECTS)
lib568_LDADD = $(LDADD)
lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_238 = lib569-first.$(OBJEXT)
am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_238)
lib569_OBJECTS = $(am_lib569_OBJECTS)
lib569_LDADD = $(LDADD)
lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_239 = lib570-first.$(OBJEXT)
am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_239)
lib570_OBJECTS = $(am_lib570_OBJECTS)
lib570_LDADD = $(LDADD)
lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_240 = lib571-first.$(OBJEXT)
am__objects_241 = ../../lib/lib571-warnless.$(OBJEXT)
am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_240) \
	$(am__objects_241)
lib571_OBJECTS = $(am_lib571_OBJECTS)
lib571_LDADD = $(LDADD)
lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_242 = lib572-first.$(OBJEXT)
am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_242)
lib572_OBJECTS = $(am_lib572_OBJECTS)
lib572_LDADD = $(LDADD)
lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_243 = lib573-first.$(OBJEXT)
am__objects_244 = lib573-testutil.$(OBJEXT)
am__objects_245 = ../../lib/lib573-warnless.$(OBJEXT)
am__objects_246 = lib573-testtrace.$(OBJEXT)
am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_243) \
	$(am__objects_244) $(am__objects_245) $(am__objects_246)
lib573_OBJECTS = $(am_lib573_OBJECTS)
lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_247 = lib574-first.$(OBJEXT)
am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_247)
lib574_OBJECTS = $(am_lib574_OBJECTS)
lib574_LDADD = $(LDADD)
lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_248 = lib575-first.$(OBJEXT)
am__objects_249 = lib575-testutil.$(OBJEXT)
am__objects_250 = ../../lib/lib575-warnless.$(OBJEXT)
am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_248) \
	$(am__objects_249) $(am__objects_250)
lib575_OBJECTS = $(am_lib575_OBJECTS)
lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_251 = lib576-first.$(OBJEXT)
am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_251)
lib576_OBJECTS = $(am_lib576_OBJECTS)
lib576_LDADD = $(LDADD)
lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_252 = lib578-first.$(OBJEXT)
am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_252)
lib578_OBJECTS = $(am_lib578_OBJECTS)
lib578_LDADD = $(LDADD)
lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_253 = lib579-first.$(OBJEXT)
am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_253)
lib579_OBJECTS = $(am_lib579_OBJECTS)
lib579_LDADD = $(LDADD)
lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_254 = lib582-first.$(OBJEXT)
am__objects_255 = lib582-testutil.$(OBJEXT)
am__objects_256 = ../../lib/lib582-warnless.$(OBJEXT)
am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_254) \
	$(am__objects_255) $(am__objects_256)
lib582_OBJECTS = $(am_lib582_OBJECTS)
lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_257 = lib583-first.$(OBJEXT)
am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_257)
lib583_OBJECTS = $(am_lib583_OBJECTS)
lib583_LDADD = $(LDADD)
lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_258 = lib585-first.$(OBJEXT)
am__objects_259 = lib585-testutil.$(OBJEXT)
am__objects_260 = lib585-testtrace.$(OBJEXT)
am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_258) \
	$(am__objects_259) $(am__objects_260)
lib585_OBJECTS = $(am_lib585_OBJECTS)
lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_261 = lib586-first.$(OBJEXT)
am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_261)
lib586_OBJECTS = $(am_lib586_OBJECTS)
lib586_LDADD = $(LDADD)
lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_262 = lib587-first.$(OBJEXT)
am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_262)
lib587_OBJECTS = $(am_lib587_OBJECTS)
lib587_LDADD = $(LDADD)
lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_263 = lib589-first.$(OBJEXT)
am_lib589_OBJECTS = lib589-lib589.$(OBJEXT) $(am__objects_263)
lib589_OBJECTS = $(am_lib589_OBJECTS)
lib589_LDADD = $(LDADD)
lib589_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_264 = lib590-first.$(OBJEXT)
am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_264)
lib590_OBJECTS = $(am_lib590_OBJECTS)
lib590_LDADD = $(LDADD)
lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_265 = lib591-first.$(OBJEXT)
am__objects_266 = lib591-testutil.$(OBJEXT)
am__objects_267 = ../../lib/lib591-warnless.$(OBJEXT)
am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_265) \
	$(am__objects_266) $(am__objects_267)
lib591_OBJECTS = $(am_lib591_OBJECTS)
lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_268 = lib597-first.$(OBJEXT)
am__objects_269 = lib597-testutil.$(OBJEXT)
am__objects_270 = ../../lib/lib597-warnless.$(OBJEXT)
am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_268) \
	$(am__objects_269) $(am__objects_270)
lib597_OBJECTS = $(am_lib597_OBJECTS)
lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_271 = lib598-first.$(OBJEXT)
am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_271)
lib598_OBJECTS = $(am_lib598_OBJECTS)
lib598_LDADD = $(LDADD)
lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_272 = lib599-first.$(OBJEXT)
am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_272)
lib599_OBJECTS = $(am_lib599_OBJECTS)
lib599_LDADD = $(LDADD)
lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_273 = lib643-first.$(OBJEXT)
am_lib643_OBJECTS = lib643-lib643.$(OBJEXT) $(am__objects_273)
lib643_OBJECTS = $(am_lib643_OBJECTS)
lib643_LDADD = $(LDADD)
lib643_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_274 = lib644-first.$(OBJEXT)
am_lib644_OBJECTS = lib644-lib643.$(OBJEXT) $(am__objects_274)
lib644_OBJECTS = $(am_lib644_OBJECTS)
lib644_LDADD = $(LDADD)
lib644_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_275 = lib645-first.$(OBJEXT)
am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_275)
lib645_OBJECTS = $(am_lib645_OBJECTS)
lib645_LDADD = $(LDADD)
lib645_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_276 = lib650-first.$(OBJEXT)
am_lib650_OBJECTS = lib650-lib650.$(OBJEXT) $(am__objects_276)
lib650_OBJECTS = $(am_lib650_OBJECTS)
lib650_LDADD = $(LDADD)
lib650_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_277 = lib651-first.$(OBJEXT)
am_lib651_OBJECTS = lib651-lib651.$(OBJEXT) $(am__objects_277)
lib651_OBJECTS = $(am_lib651_OBJECTS)
lib651_LDADD = $(LDADD)
lib651_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_278 = lib652-first.$(OBJEXT)
am_lib652_OBJECTS = lib652-lib652.$(OBJEXT) $(am__objects_278)
lib652_OBJECTS = $(am_lib652_OBJECTS)
lib652_LDADD = $(LDADD)
lib652_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_279 = lib653-first.$(OBJEXT)
am_lib653_OBJECTS = lib653-lib653.$(OBJEXT) $(am__objects_279)
lib653_OBJECTS = $(am_lib653_OBJECTS)
lib653_LDADD = $(LDADD)
lib653_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_280 = lib654-first.$(OBJEXT)
am_lib654_OBJECTS = lib654-lib654.$(OBJEXT) $(am__objects_280)
lib654_OBJECTS = $(am_lib654_OBJECTS)
lib654_LDADD = $(LDADD)
lib654_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_281 = lib655-first.$(OBJEXT)
am_lib655_OBJECTS = lib655-lib655.$(OBJEXT) $(am__objects_281)
lib655_OBJECTS = $(am_lib655_OBJECTS)
lib655_LDADD = $(LDADD)
lib655_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_282 = lib658-first.$(OBJEXT)
am__objects_283 = lib658-testutil.$(OBJEXT)
am__objects_284 = ../../lib/lib658-warnless.$(OBJEXT)
am_lib658_OBJECTS = lib658-lib658.$(OBJEXT) $(am__objects_282) \
	$(am__objects_283) $(am__objects_284)
lib658_OBJECTS = $(am_lib658_OBJECTS)
lib658_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_285 = lib659-first.$(OBJEXT)
am__objects_286 = lib659-testutil.$(OBJEXT)
am__objects_287 = ../../lib/lib659-warnless.$(OBJEXT)
am_lib659_OBJECTS = lib659-lib659.$(OBJEXT) $(am__objects_285) \
	$(am__objects_286) $(am__objects_287)
lib659_OBJECTS = $(am_lib659_OBJECTS)
lib659_DEPENDENCIES = $(am__DEPENDENCIES_1)





am__objects_288 = libauthretry-first.$(OBJEXT)
am_libauthretry_OBJECTS = libauthretry-libauthretry.$(OBJEXT) \
	$(am__objects_288)
libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
libauthretry_LDADD = $(LDADD)
libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_289 = libntlmconnect-first.$(OBJEXT)
am__objects_290 = libntlmconnect-testutil.$(OBJEXT)
am__objects_291 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
am_libntlmconnect_OBJECTS = libntlmconnect-libntlmconnect.$(OBJEXT) \
	$(am__objects_289) $(am__objects_290) $(am__objects_291)
libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)







|
>
>
>
>
>
>
>
|
|

|


|
|
|
|
|


|
|



|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|



|
|



|
|
|
|
|


|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|
|


|
|
|
|



|
|



|
|
|
|
|


|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|



|
|



|
|



|
|
|
|
|


|
|
|
|



|
|



|
|



|
|



|
|
|
|
|


|
|



|
|
|
|
|


|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|



|
|



|
|
|
|
|
|


|
|



|
|
|
|
|


|
|



|
|



|
|



|
|
|
|
|


|
|



|
|
|
|
|


|
|



|
|



|
|



|
|



|
|
|
|
|


|
|
|
|
|


|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|



|
|
|
|
|


|
|
|
|
|


>
>
>
>
>
|

|



|
|
|

|







582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
am__objects_139 = lib1906-first.$(OBJEXT)
am__objects_140 = lib1906-testutil.$(OBJEXT)
am__objects_141 = ../../lib/lib1906-warnless.$(OBJEXT)
am_lib1906_OBJECTS = lib1906-lib1906.$(OBJEXT) $(am__objects_139) \
	$(am__objects_140) $(am__objects_141)
lib1906_OBJECTS = $(am_lib1906_OBJECTS)
lib1906_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_142 = lib1907-first.$(OBJEXT)
am__objects_143 = lib1907-testutil.$(OBJEXT)
am__objects_144 = ../../lib/lib1907-warnless.$(OBJEXT)
am_lib1907_OBJECTS = lib1907-lib1907.$(OBJEXT) $(am__objects_142) \
	$(am__objects_143) $(am__objects_144)
lib1907_OBJECTS = $(am_lib1907_OBJECTS)
lib1907_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_145 = lib2033-first.$(OBJEXT)
am__objects_146 = lib2033-testutil.$(OBJEXT)
am__objects_147 = ../../lib/lib2033-warnless.$(OBJEXT)
am_lib2033_OBJECTS = lib2033-libntlmconnect.$(OBJEXT) \
	$(am__objects_145) $(am__objects_146) $(am__objects_147)
lib2033_OBJECTS = $(am_lib2033_OBJECTS)
lib2033_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_148 = lib500-first.$(OBJEXT)
am__objects_149 = lib500-testutil.$(OBJEXT)
am__objects_150 = lib500-testtrace.$(OBJEXT)
am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_148) \
	$(am__objects_149) $(am__objects_150)
lib500_OBJECTS = $(am_lib500_OBJECTS)
lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_151 = lib501-first.$(OBJEXT)
am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_151)
lib501_OBJECTS = $(am_lib501_OBJECTS)
lib501_LDADD = $(LDADD)
lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_152 = lib502-first.$(OBJEXT)
am__objects_153 = lib502-testutil.$(OBJEXT)
am__objects_154 = ../../lib/lib502-warnless.$(OBJEXT)
am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_152) \
	$(am__objects_153) $(am__objects_154)
lib502_OBJECTS = $(am_lib502_OBJECTS)
lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_155 = lib503-first.$(OBJEXT)
am__objects_156 = lib503-testutil.$(OBJEXT)
am__objects_157 = ../../lib/lib503-warnless.$(OBJEXT)
am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_155) \
	$(am__objects_156) $(am__objects_157)
lib503_OBJECTS = $(am_lib503_OBJECTS)
lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_158 = lib504-first.$(OBJEXT)
am__objects_159 = lib504-testutil.$(OBJEXT)
am__objects_160 = ../../lib/lib504-warnless.$(OBJEXT)
am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_158) \
	$(am__objects_159) $(am__objects_160)
lib504_OBJECTS = $(am_lib504_OBJECTS)
lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_161 = lib505-first.$(OBJEXT)
am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_161)
lib505_OBJECTS = $(am_lib505_OBJECTS)
lib505_LDADD = $(LDADD)
lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_162 = lib506-first.$(OBJEXT)
am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_162)
lib506_OBJECTS = $(am_lib506_OBJECTS)
lib506_LDADD = $(LDADD)
lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_163 = lib507-first.$(OBJEXT)
am__objects_164 = lib507-testutil.$(OBJEXT)
am__objects_165 = ../../lib/lib507-warnless.$(OBJEXT)
am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_163) \
	$(am__objects_164) $(am__objects_165)
lib507_OBJECTS = $(am_lib507_OBJECTS)
lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_166 = lib508-first.$(OBJEXT)
am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_166)
lib508_OBJECTS = $(am_lib508_OBJECTS)
lib508_LDADD = $(LDADD)
lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_167 = lib509-first.$(OBJEXT)
am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_167)
lib509_OBJECTS = $(am_lib509_OBJECTS)
lib509_LDADD = $(LDADD)
lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_168 = lib510-first.$(OBJEXT)
am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_168)
lib510_OBJECTS = $(am_lib510_OBJECTS)
lib510_LDADD = $(LDADD)
lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_169 = lib511-first.$(OBJEXT)
am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_169)
lib511_OBJECTS = $(am_lib511_OBJECTS)
lib511_LDADD = $(LDADD)
lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_170 = lib512-first.$(OBJEXT)
am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_170)
lib512_OBJECTS = $(am_lib512_OBJECTS)
lib512_LDADD = $(LDADD)
lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_171 = lib513-first.$(OBJEXT)
am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_171)
lib513_OBJECTS = $(am_lib513_OBJECTS)
lib513_LDADD = $(LDADD)
lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_172 = lib514-first.$(OBJEXT)
am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_172)
lib514_OBJECTS = $(am_lib514_OBJECTS)
lib514_LDADD = $(LDADD)
lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_173 = lib515-first.$(OBJEXT)
am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_173)
lib515_OBJECTS = $(am_lib515_OBJECTS)
lib515_LDADD = $(LDADD)
lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_174 = lib516-first.$(OBJEXT)
am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_174)
lib516_OBJECTS = $(am_lib516_OBJECTS)
lib516_LDADD = $(LDADD)
lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_175 = lib517-first.$(OBJEXT)
am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_175)
lib517_OBJECTS = $(am_lib517_OBJECTS)
lib517_LDADD = $(LDADD)
lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_176 = lib518-first.$(OBJEXT)
am__objects_177 = ../../lib/lib518-warnless.$(OBJEXT)
am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_176) \
	$(am__objects_177)
lib518_OBJECTS = $(am_lib518_OBJECTS)
lib518_LDADD = $(LDADD)
lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_178 = lib519-first.$(OBJEXT)
am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_178)
lib519_OBJECTS = $(am_lib519_OBJECTS)
lib519_LDADD = $(LDADD)
lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_179 = lib520-first.$(OBJEXT)
am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_179)
lib520_OBJECTS = $(am_lib520_OBJECTS)
lib520_LDADD = $(LDADD)
lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_180 = lib521-first.$(OBJEXT)
am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_180)
lib521_OBJECTS = $(am_lib521_OBJECTS)
lib521_LDADD = $(LDADD)
lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_181 = lib523-first.$(OBJEXT)
am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_181)
lib523_OBJECTS = $(am_lib523_OBJECTS)
lib523_LDADD = $(LDADD)
lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_182 = lib524-first.$(OBJEXT)
am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_182)
lib524_OBJECTS = $(am_lib524_OBJECTS)
lib524_LDADD = $(LDADD)
lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_183 = lib525-first.$(OBJEXT)
am__objects_184 = lib525-testutil.$(OBJEXT)
am__objects_185 = ../../lib/lib525-warnless.$(OBJEXT)
am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_183) \
	$(am__objects_184) $(am__objects_185)
lib525_OBJECTS = $(am_lib525_OBJECTS)
lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_186 = lib526-first.$(OBJEXT)
am__objects_187 = lib526-testutil.$(OBJEXT)
am__objects_188 = ../../lib/lib526-warnless.$(OBJEXT)
am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_186) \
	$(am__objects_187) $(am__objects_188)
lib526_OBJECTS = $(am_lib526_OBJECTS)
lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_189 = lib527-first.$(OBJEXT)
am__objects_190 = lib527-testutil.$(OBJEXT)
am__objects_191 = ../../lib/lib527-warnless.$(OBJEXT)
am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_189) \
	$(am__objects_190) $(am__objects_191)
lib527_OBJECTS = $(am_lib527_OBJECTS)
lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_192 = lib529-first.$(OBJEXT)
am__objects_193 = lib529-testutil.$(OBJEXT)
am__objects_194 = ../../lib/lib529-warnless.$(OBJEXT)
am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_192) \
	$(am__objects_193) $(am__objects_194)
lib529_OBJECTS = $(am_lib529_OBJECTS)
lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_195 = lib530-first.$(OBJEXT)
am__objects_196 = lib530-testutil.$(OBJEXT)
am__objects_197 = ../../lib/lib530-warnless.$(OBJEXT)
am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_195) \
	$(am__objects_196) $(am__objects_197)
lib530_OBJECTS = $(am_lib530_OBJECTS)
lib530_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_198 = lib532-first.$(OBJEXT)
am__objects_199 = lib532-testutil.$(OBJEXT)
am__objects_200 = ../../lib/lib532-warnless.$(OBJEXT)
am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_198) \
	$(am__objects_199) $(am__objects_200)
lib532_OBJECTS = $(am_lib532_OBJECTS)
lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_201 = lib533-first.$(OBJEXT)
am__objects_202 = lib533-testutil.$(OBJEXT)
am__objects_203 = ../../lib/lib533-warnless.$(OBJEXT)
am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_201) \
	$(am__objects_202) $(am__objects_203)
lib533_OBJECTS = $(am_lib533_OBJECTS)
lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_204 = lib537-first.$(OBJEXT)
am__objects_205 = ../../lib/lib537-warnless.$(OBJEXT)
am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_204) \
	$(am__objects_205)
lib537_OBJECTS = $(am_lib537_OBJECTS)
lib537_LDADD = $(LDADD)
lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_206 = lib539-first.$(OBJEXT)
am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_206)
lib539_OBJECTS = $(am_lib539_OBJECTS)
lib539_LDADD = $(LDADD)
lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_207 = lib540-first.$(OBJEXT)
am__objects_208 = lib540-testutil.$(OBJEXT)
am__objects_209 = ../../lib/lib540-warnless.$(OBJEXT)
am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_207) \
	$(am__objects_208) $(am__objects_209)
lib540_OBJECTS = $(am_lib540_OBJECTS)
lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_210 = lib541-first.$(OBJEXT)
am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_210)
lib541_OBJECTS = $(am_lib541_OBJECTS)
lib541_LDADD = $(LDADD)
lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_211 = lib542-first.$(OBJEXT)
am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_211)
lib542_OBJECTS = $(am_lib542_OBJECTS)
lib542_LDADD = $(LDADD)
lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_212 = lib543-first.$(OBJEXT)
am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_212)
lib543_OBJECTS = $(am_lib543_OBJECTS)
lib543_LDADD = $(LDADD)
lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_213 = lib544-first.$(OBJEXT)
am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_213)
lib544_OBJECTS = $(am_lib544_OBJECTS)
lib544_LDADD = $(LDADD)
lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_214 = lib545-first.$(OBJEXT)
am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_214)
lib545_OBJECTS = $(am_lib545_OBJECTS)
lib545_LDADD = $(LDADD)
lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_215 = lib547-first.$(OBJEXT)
am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_215)
lib547_OBJECTS = $(am_lib547_OBJECTS)
lib547_LDADD = $(LDADD)
lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_216 = lib548-first.$(OBJEXT)
am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_216)
lib548_OBJECTS = $(am_lib548_OBJECTS)
lib548_LDADD = $(LDADD)
lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_217 = lib549-first.$(OBJEXT)
am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_217)
lib549_OBJECTS = $(am_lib549_OBJECTS)
lib549_LDADD = $(LDADD)
lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_218 = lib552-first.$(OBJEXT)
am__objects_219 = ../../lib/lib552-warnless.$(OBJEXT)
am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_218) \
	$(am__objects_219)
lib552_OBJECTS = $(am_lib552_OBJECTS)
lib552_LDADD = $(LDADD)
lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_220 = lib553-first.$(OBJEXT)
am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_220)
lib553_OBJECTS = $(am_lib553_OBJECTS)
lib553_LDADD = $(LDADD)
lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_221 = lib554-first.$(OBJEXT)
am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_221)
lib554_OBJECTS = $(am_lib554_OBJECTS)
lib554_LDADD = $(LDADD)
lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_222 = lib555-first.$(OBJEXT)
am__objects_223 = lib555-testutil.$(OBJEXT)
am__objects_224 = ../../lib/lib555-warnless.$(OBJEXT)
am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_222) \
	$(am__objects_223) $(am__objects_224)
lib555_OBJECTS = $(am_lib555_OBJECTS)
lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_225 = lib556-first.$(OBJEXT)
am__objects_226 = ../../lib/lib556-warnless.$(OBJEXT)
am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_225) \
	$(am__objects_226)
lib556_OBJECTS = $(am_lib556_OBJECTS)
lib556_LDADD = $(LDADD)
lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_227 = lib557-first.$(OBJEXT)
am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_227)
lib557_OBJECTS = $(am_lib557_OBJECTS)
lib557_LDADD = $(LDADD)
lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_228 = lib558-first.$(OBJEXT)
am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_228)
lib558_OBJECTS = $(am_lib558_OBJECTS)
lib558_LDADD = $(LDADD)
lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_229 = lib559-first.$(OBJEXT)
am_lib559_OBJECTS = lib559-lib559.$(OBJEXT) $(am__objects_229)
lib559_OBJECTS = $(am_lib559_OBJECTS)
lib559_LDADD = $(LDADD)
lib559_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_230 = lib560-first.$(OBJEXT)
am__objects_231 = lib560-testutil.$(OBJEXT)
am__objects_232 = ../../lib/lib560-warnless.$(OBJEXT)
am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_230) \
	$(am__objects_231) $(am__objects_232)
lib560_OBJECTS = $(am_lib560_OBJECTS)
lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_233 = lib562-first.$(OBJEXT)
am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_233)
lib562_OBJECTS = $(am_lib562_OBJECTS)
lib562_LDADD = $(LDADD)
lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_234 = lib564-first.$(OBJEXT)
am__objects_235 = lib564-testutil.$(OBJEXT)
am__objects_236 = ../../lib/lib564-warnless.$(OBJEXT)
am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_234) \
	$(am__objects_235) $(am__objects_236)
lib564_OBJECTS = $(am_lib564_OBJECTS)
lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_237 = lib565-first.$(OBJEXT)
am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_237)
lib565_OBJECTS = $(am_lib565_OBJECTS)
lib565_LDADD = $(LDADD)
lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_238 = lib566-first.$(OBJEXT)
am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_238)
lib566_OBJECTS = $(am_lib566_OBJECTS)
lib566_LDADD = $(LDADD)
lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_239 = lib567-first.$(OBJEXT)
am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_239)
lib567_OBJECTS = $(am_lib567_OBJECTS)
lib567_LDADD = $(LDADD)
lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_240 = lib568-first.$(OBJEXT)
am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_240)
lib568_OBJECTS = $(am_lib568_OBJECTS)
lib568_LDADD = $(LDADD)
lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_241 = lib569-first.$(OBJEXT)
am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_241)
lib569_OBJECTS = $(am_lib569_OBJECTS)
lib569_LDADD = $(LDADD)
lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_242 = lib570-first.$(OBJEXT)
am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_242)
lib570_OBJECTS = $(am_lib570_OBJECTS)
lib570_LDADD = $(LDADD)
lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_243 = lib571-first.$(OBJEXT)
am__objects_244 = ../../lib/lib571-warnless.$(OBJEXT)
am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_243) \
	$(am__objects_244)
lib571_OBJECTS = $(am_lib571_OBJECTS)
lib571_LDADD = $(LDADD)
lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_245 = lib572-first.$(OBJEXT)
am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_245)
lib572_OBJECTS = $(am_lib572_OBJECTS)
lib572_LDADD = $(LDADD)
lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_246 = lib573-first.$(OBJEXT)
am__objects_247 = lib573-testutil.$(OBJEXT)
am__objects_248 = ../../lib/lib573-warnless.$(OBJEXT)
am__objects_249 = lib573-testtrace.$(OBJEXT)
am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_246) \
	$(am__objects_247) $(am__objects_248) $(am__objects_249)
lib573_OBJECTS = $(am_lib573_OBJECTS)
lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_250 = lib574-first.$(OBJEXT)
am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_250)
lib574_OBJECTS = $(am_lib574_OBJECTS)
lib574_LDADD = $(LDADD)
lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_251 = lib575-first.$(OBJEXT)
am__objects_252 = lib575-testutil.$(OBJEXT)
am__objects_253 = ../../lib/lib575-warnless.$(OBJEXT)
am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_251) \
	$(am__objects_252) $(am__objects_253)
lib575_OBJECTS = $(am_lib575_OBJECTS)
lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_254 = lib576-first.$(OBJEXT)
am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_254)
lib576_OBJECTS = $(am_lib576_OBJECTS)
lib576_LDADD = $(LDADD)
lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_255 = lib578-first.$(OBJEXT)
am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_255)
lib578_OBJECTS = $(am_lib578_OBJECTS)
lib578_LDADD = $(LDADD)
lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_256 = lib579-first.$(OBJEXT)
am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_256)
lib579_OBJECTS = $(am_lib579_OBJECTS)
lib579_LDADD = $(LDADD)
lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_257 = lib582-first.$(OBJEXT)
am__objects_258 = lib582-testutil.$(OBJEXT)
am__objects_259 = ../../lib/lib582-warnless.$(OBJEXT)
am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_257) \
	$(am__objects_258) $(am__objects_259)
lib582_OBJECTS = $(am_lib582_OBJECTS)
lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_260 = lib583-first.$(OBJEXT)
am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_260)
lib583_OBJECTS = $(am_lib583_OBJECTS)
lib583_LDADD = $(LDADD)
lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_261 = lib585-first.$(OBJEXT)
am__objects_262 = lib585-testutil.$(OBJEXT)
am__objects_263 = lib585-testtrace.$(OBJEXT)
am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_261) \
	$(am__objects_262) $(am__objects_263)
lib585_OBJECTS = $(am_lib585_OBJECTS)
lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_264 = lib586-first.$(OBJEXT)
am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_264)
lib586_OBJECTS = $(am_lib586_OBJECTS)
lib586_LDADD = $(LDADD)
lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_265 = lib587-first.$(OBJEXT)
am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_265)
lib587_OBJECTS = $(am_lib587_OBJECTS)
lib587_LDADD = $(LDADD)
lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_266 = lib589-first.$(OBJEXT)
am_lib589_OBJECTS = lib589-lib589.$(OBJEXT) $(am__objects_266)
lib589_OBJECTS = $(am_lib589_OBJECTS)
lib589_LDADD = $(LDADD)
lib589_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_267 = lib590-first.$(OBJEXT)
am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_267)
lib590_OBJECTS = $(am_lib590_OBJECTS)
lib590_LDADD = $(LDADD)
lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_268 = lib591-first.$(OBJEXT)
am__objects_269 = lib591-testutil.$(OBJEXT)
am__objects_270 = ../../lib/lib591-warnless.$(OBJEXT)
am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_268) \
	$(am__objects_269) $(am__objects_270)
lib591_OBJECTS = $(am_lib591_OBJECTS)
lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_271 = lib597-first.$(OBJEXT)
am__objects_272 = lib597-testutil.$(OBJEXT)
am__objects_273 = ../../lib/lib597-warnless.$(OBJEXT)
am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_271) \
	$(am__objects_272) $(am__objects_273)
lib597_OBJECTS = $(am_lib597_OBJECTS)
lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_274 = lib598-first.$(OBJEXT)
am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_274)
lib598_OBJECTS = $(am_lib598_OBJECTS)
lib598_LDADD = $(LDADD)
lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_275 = lib599-first.$(OBJEXT)
am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_275)
lib599_OBJECTS = $(am_lib599_OBJECTS)
lib599_LDADD = $(LDADD)
lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_276 = lib643-first.$(OBJEXT)
am_lib643_OBJECTS = lib643-lib643.$(OBJEXT) $(am__objects_276)
lib643_OBJECTS = $(am_lib643_OBJECTS)
lib643_LDADD = $(LDADD)
lib643_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_277 = lib644-first.$(OBJEXT)
am_lib644_OBJECTS = lib644-lib643.$(OBJEXT) $(am__objects_277)
lib644_OBJECTS = $(am_lib644_OBJECTS)
lib644_LDADD = $(LDADD)
lib644_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_278 = lib645-first.$(OBJEXT)
am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_278)
lib645_OBJECTS = $(am_lib645_OBJECTS)
lib645_LDADD = $(LDADD)
lib645_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_279 = lib650-first.$(OBJEXT)
am_lib650_OBJECTS = lib650-lib650.$(OBJEXT) $(am__objects_279)
lib650_OBJECTS = $(am_lib650_OBJECTS)
lib650_LDADD = $(LDADD)
lib650_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_280 = lib651-first.$(OBJEXT)
am_lib651_OBJECTS = lib651-lib651.$(OBJEXT) $(am__objects_280)
lib651_OBJECTS = $(am_lib651_OBJECTS)
lib651_LDADD = $(LDADD)
lib651_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_281 = lib652-first.$(OBJEXT)
am_lib652_OBJECTS = lib652-lib652.$(OBJEXT) $(am__objects_281)
lib652_OBJECTS = $(am_lib652_OBJECTS)
lib652_LDADD = $(LDADD)
lib652_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_282 = lib653-first.$(OBJEXT)
am_lib653_OBJECTS = lib653-lib653.$(OBJEXT) $(am__objects_282)
lib653_OBJECTS = $(am_lib653_OBJECTS)
lib653_LDADD = $(LDADD)
lib653_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_283 = lib654-first.$(OBJEXT)
am_lib654_OBJECTS = lib654-lib654.$(OBJEXT) $(am__objects_283)
lib654_OBJECTS = $(am_lib654_OBJECTS)
lib654_LDADD = $(LDADD)
lib654_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_284 = lib655-first.$(OBJEXT)
am_lib655_OBJECTS = lib655-lib655.$(OBJEXT) $(am__objects_284)
lib655_OBJECTS = $(am_lib655_OBJECTS)
lib655_LDADD = $(LDADD)
lib655_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_285 = lib658-first.$(OBJEXT)
am__objects_286 = lib658-testutil.$(OBJEXT)
am__objects_287 = ../../lib/lib658-warnless.$(OBJEXT)
am_lib658_OBJECTS = lib658-lib658.$(OBJEXT) $(am__objects_285) \
	$(am__objects_286) $(am__objects_287)
lib658_OBJECTS = $(am_lib658_OBJECTS)
lib658_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_288 = lib659-first.$(OBJEXT)
am__objects_289 = lib659-testutil.$(OBJEXT)
am__objects_290 = ../../lib/lib659-warnless.$(OBJEXT)
am_lib659_OBJECTS = lib659-lib659.$(OBJEXT) $(am__objects_288) \
	$(am__objects_289) $(am__objects_290)
lib659_OBJECTS = $(am_lib659_OBJECTS)
lib659_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_291 = lib661-first.$(OBJEXT)
am_lib661_OBJECTS = lib661-lib661.$(OBJEXT) $(am__objects_291)
lib661_OBJECTS = $(am_lib661_OBJECTS)
lib661_LDADD = $(LDADD)
lib661_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_292 = libauthretry-first.$(OBJEXT)
am_libauthretry_OBJECTS = libauthretry-libauthretry.$(OBJEXT) \
	$(am__objects_292)
libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
libauthretry_LDADD = $(LDADD)
libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_293 = libntlmconnect-first.$(OBJEXT)
am__objects_294 = libntlmconnect-testutil.$(OBJEXT)
am__objects_295 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
am_libntlmconnect_OBJECTS = libntlmconnect-libntlmconnect.$(OBJEXT) \
	$(am__objects_293) $(am__objects_294) $(am__objects_295)
libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
1166
1167
1168
1169
1170
1171
1172

1173
1174
1175
1176
1177
1178
1179
	../../lib/$(DEPDIR)/lib1557-warnless.Po \
	../../lib/$(DEPDIR)/lib1591-warnless.Po \
	../../lib/$(DEPDIR)/lib1592-warnless.Po \
	../../lib/$(DEPDIR)/lib1596-warnless.Po \
	../../lib/$(DEPDIR)/lib1900-warnless.Po \
	../../lib/$(DEPDIR)/lib1905-warnless.Po \
	../../lib/$(DEPDIR)/lib1906-warnless.Po \

	../../lib/$(DEPDIR)/lib2033-warnless.Po \
	../../lib/$(DEPDIR)/lib502-warnless.Po \
	../../lib/$(DEPDIR)/lib503-warnless.Po \
	../../lib/$(DEPDIR)/lib504-warnless.Po \
	../../lib/$(DEPDIR)/lib507-warnless.Po \
	../../lib/$(DEPDIR)/lib518-warnless.Po \
	../../lib/$(DEPDIR)/lib525-warnless.Po \







>







1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
	../../lib/$(DEPDIR)/lib1557-warnless.Po \
	../../lib/$(DEPDIR)/lib1591-warnless.Po \
	../../lib/$(DEPDIR)/lib1592-warnless.Po \
	../../lib/$(DEPDIR)/lib1596-warnless.Po \
	../../lib/$(DEPDIR)/lib1900-warnless.Po \
	../../lib/$(DEPDIR)/lib1905-warnless.Po \
	../../lib/$(DEPDIR)/lib1906-warnless.Po \
	../../lib/$(DEPDIR)/lib1907-warnless.Po \
	../../lib/$(DEPDIR)/lib2033-warnless.Po \
	../../lib/$(DEPDIR)/lib502-warnless.Po \
	../../lib/$(DEPDIR)/lib503-warnless.Po \
	../../lib/$(DEPDIR)/lib504-warnless.Po \
	../../lib/$(DEPDIR)/lib507-warnless.Po \
	../../lib/$(DEPDIR)/lib518-warnless.Po \
	../../lib/$(DEPDIR)/lib525-warnless.Po \
1275
1276
1277
1278
1279
1280
1281
1282


1283
1284
1285
1286
1287
1288
1289
	./$(DEPDIR)/lib1592-testutil.Po ./$(DEPDIR)/lib1593.Po \
	./$(DEPDIR)/lib1594.Po ./$(DEPDIR)/lib1596-first.Po \
	./$(DEPDIR)/lib1596-lib1594.Po ./$(DEPDIR)/lib1596-testutil.Po \
	./$(DEPDIR)/lib1900-first.Po ./$(DEPDIR)/lib1900-lib1900.Po \
	./$(DEPDIR)/lib1900-testutil.Po ./$(DEPDIR)/lib1905-first.Po \
	./$(DEPDIR)/lib1905-lib1905.Po ./$(DEPDIR)/lib1905-testutil.Po \
	./$(DEPDIR)/lib1906-first.Po ./$(DEPDIR)/lib1906-lib1906.Po \
	./$(DEPDIR)/lib1906-testutil.Po ./$(DEPDIR)/lib2033-first.Po \


	./$(DEPDIR)/lib2033-libntlmconnect.Po \
	./$(DEPDIR)/lib2033-testutil.Po ./$(DEPDIR)/lib500-first.Po \
	./$(DEPDIR)/lib500-lib500.Po ./$(DEPDIR)/lib500-testtrace.Po \
	./$(DEPDIR)/lib500-testutil.Po ./$(DEPDIR)/lib501-first.Po \
	./$(DEPDIR)/lib501-lib501.Po ./$(DEPDIR)/lib502-first.Po \
	./$(DEPDIR)/lib502-lib502.Po ./$(DEPDIR)/lib502-testutil.Po \
	./$(DEPDIR)/lib503-first.Po ./$(DEPDIR)/lib503-lib503.Po \







|
>
>







1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
	./$(DEPDIR)/lib1592-testutil.Po ./$(DEPDIR)/lib1593.Po \
	./$(DEPDIR)/lib1594.Po ./$(DEPDIR)/lib1596-first.Po \
	./$(DEPDIR)/lib1596-lib1594.Po ./$(DEPDIR)/lib1596-testutil.Po \
	./$(DEPDIR)/lib1900-first.Po ./$(DEPDIR)/lib1900-lib1900.Po \
	./$(DEPDIR)/lib1900-testutil.Po ./$(DEPDIR)/lib1905-first.Po \
	./$(DEPDIR)/lib1905-lib1905.Po ./$(DEPDIR)/lib1905-testutil.Po \
	./$(DEPDIR)/lib1906-first.Po ./$(DEPDIR)/lib1906-lib1906.Po \
	./$(DEPDIR)/lib1906-testutil.Po ./$(DEPDIR)/lib1907-first.Po \
	./$(DEPDIR)/lib1907-lib1907.Po ./$(DEPDIR)/lib1907-testutil.Po \
	./$(DEPDIR)/lib2033-first.Po \
	./$(DEPDIR)/lib2033-libntlmconnect.Po \
	./$(DEPDIR)/lib2033-testutil.Po ./$(DEPDIR)/lib500-first.Po \
	./$(DEPDIR)/lib500-lib500.Po ./$(DEPDIR)/lib500-testtrace.Po \
	./$(DEPDIR)/lib500-testutil.Po ./$(DEPDIR)/lib501-first.Po \
	./$(DEPDIR)/lib501-lib501.Po ./$(DEPDIR)/lib502-first.Po \
	./$(DEPDIR)/lib502-lib502.Po ./$(DEPDIR)/lib502-testutil.Po \
	./$(DEPDIR)/lib503-first.Po ./$(DEPDIR)/lib503-lib503.Po \
1380
1381
1382
1383
1384
1385
1386

1387
1388
1389
1390
1391
1392
1393
	./$(DEPDIR)/lib652-first.Po ./$(DEPDIR)/lib652-lib652.Po \
	./$(DEPDIR)/lib653-first.Po ./$(DEPDIR)/lib653-lib653.Po \
	./$(DEPDIR)/lib654-first.Po ./$(DEPDIR)/lib654-lib654.Po \
	./$(DEPDIR)/lib655-first.Po ./$(DEPDIR)/lib655-lib655.Po \
	./$(DEPDIR)/lib658-first.Po ./$(DEPDIR)/lib658-lib658.Po \
	./$(DEPDIR)/lib658-testutil.Po ./$(DEPDIR)/lib659-first.Po \
	./$(DEPDIR)/lib659-lib659.Po ./$(DEPDIR)/lib659-testutil.Po \

	./$(DEPDIR)/libauthretry-first.Po \
	./$(DEPDIR)/libauthretry-libauthretry.Po \
	./$(DEPDIR)/libhostname_la-sethostname.Plo \
	./$(DEPDIR)/libntlmconnect-first.Po \
	./$(DEPDIR)/libntlmconnect-libntlmconnect.Po \
	./$(DEPDIR)/libntlmconnect-testutil.Po \
	./$(DEPDIR)/libstubgss_la-stub_gssapi.Plo \







>







1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
	./$(DEPDIR)/lib652-first.Po ./$(DEPDIR)/lib652-lib652.Po \
	./$(DEPDIR)/lib653-first.Po ./$(DEPDIR)/lib653-lib653.Po \
	./$(DEPDIR)/lib654-first.Po ./$(DEPDIR)/lib654-lib654.Po \
	./$(DEPDIR)/lib655-first.Po ./$(DEPDIR)/lib655-lib655.Po \
	./$(DEPDIR)/lib658-first.Po ./$(DEPDIR)/lib658-lib658.Po \
	./$(DEPDIR)/lib658-testutil.Po ./$(DEPDIR)/lib659-first.Po \
	./$(DEPDIR)/lib659-lib659.Po ./$(DEPDIR)/lib659-testutil.Po \
	./$(DEPDIR)/lib661-first.Po ./$(DEPDIR)/lib661-lib661.Po \
	./$(DEPDIR)/libauthretry-first.Po \
	./$(DEPDIR)/libauthretry-libauthretry.Po \
	./$(DEPDIR)/libhostname_la-sethostname.Plo \
	./$(DEPDIR)/libntlmconnect-first.Po \
	./$(DEPDIR)/libntlmconnect-libntlmconnect.Po \
	./$(DEPDIR)/libntlmconnect-testutil.Po \
	./$(DEPDIR)/libstubgss_la-stub_gssapi.Plo \
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
	$(lib1540_SOURCES) $(lib1541_SOURCES) $(lib1550_SOURCES) \
	$(lib1551_SOURCES) $(lib1552_SOURCES) $(lib1553_SOURCES) \
	$(lib1554_SOURCES) $(lib1555_SOURCES) $(lib1556_SOURCES) \
	$(lib1557_SOURCES) $(lib1558_SOURCES) $(lib1559_SOURCES) \
	$(lib1560_SOURCES) $(lib1591_SOURCES) $(lib1592_SOURCES) \
	$(lib1593_SOURCES) $(lib1594_SOURCES) $(lib1596_SOURCES) \
	$(lib1900_SOURCES) $(lib1905_SOURCES) $(lib1906_SOURCES) \
	$(lib2033_SOURCES) $(lib500_SOURCES) $(lib501_SOURCES) \
	$(lib502_SOURCES) $(lib503_SOURCES) $(lib504_SOURCES) \
	$(lib505_SOURCES) $(lib506_SOURCES) $(lib507_SOURCES) \
	$(lib508_SOURCES) $(lib509_SOURCES) $(lib510_SOURCES) \
	$(lib511_SOURCES) $(lib512_SOURCES) $(lib513_SOURCES) \
	$(lib514_SOURCES) $(lib515_SOURCES) $(lib516_SOURCES) \
	$(lib517_SOURCES) $(lib518_SOURCES) $(lib519_SOURCES) \
	$(lib520_SOURCES) $(lib521_SOURCES) $(lib523_SOURCES) \
	$(lib524_SOURCES) $(lib525_SOURCES) $(lib526_SOURCES) \
	$(lib527_SOURCES) $(lib529_SOURCES) $(lib530_SOURCES) \
	$(lib532_SOURCES) $(lib533_SOURCES) $(lib537_SOURCES) \
	$(lib539_SOURCES) $(lib540_SOURCES) $(lib541_SOURCES) \
	$(lib542_SOURCES) $(lib543_SOURCES) $(lib544_SOURCES) \
	$(lib545_SOURCES) $(lib547_SOURCES) $(lib548_SOURCES) \
	$(lib549_SOURCES) $(lib552_SOURCES) $(lib553_SOURCES) \
	$(lib554_SOURCES) $(lib555_SOURCES) $(lib556_SOURCES) \
	$(lib557_SOURCES) $(lib558_SOURCES) $(lib559_SOURCES) \
	$(lib560_SOURCES) $(lib562_SOURCES) $(lib564_SOURCES) \
	$(lib565_SOURCES) $(lib566_SOURCES) $(lib567_SOURCES) \
	$(lib568_SOURCES) $(lib569_SOURCES) $(lib570_SOURCES) \
	$(lib571_SOURCES) $(lib572_SOURCES) $(lib573_SOURCES) \
	$(lib574_SOURCES) $(lib575_SOURCES) $(lib576_SOURCES) \
	$(lib578_SOURCES) $(lib579_SOURCES) $(lib582_SOURCES) \
	$(lib583_SOURCES) $(lib585_SOURCES) $(lib586_SOURCES) \
	$(lib587_SOURCES) $(lib589_SOURCES) $(lib590_SOURCES) \
	$(lib591_SOURCES) $(lib597_SOURCES) $(lib598_SOURCES) \
	$(lib599_SOURCES) $(lib643_SOURCES) $(lib644_SOURCES) \
	$(lib645_SOURCES) $(lib650_SOURCES) $(lib651_SOURCES) \
	$(lib652_SOURCES) $(lib653_SOURCES) $(lib654_SOURCES) \
	$(lib655_SOURCES) $(lib658_SOURCES) $(lib659_SOURCES) \
	$(libauthretry_SOURCES) $(libntlmconnect_SOURCES)
DIST_SOURCES = $(libhostname_la_SOURCES) \
	$(am__libstubgss_la_SOURCES_DIST) $(chkdecimalpoint_SOURCES) \
	$(chkhostname_SOURCES) $(lib1156_SOURCES) $(lib1500_SOURCES) \
	$(lib1501_SOURCES) $(lib1502_SOURCES) $(lib1503_SOURCES) \
	$(lib1504_SOURCES) $(lib1505_SOURCES) $(lib1506_SOURCES) \
	$(lib1507_SOURCES) $(lib1508_SOURCES) $(lib1509_SOURCES) \
	$(lib1510_SOURCES) $(lib1511_SOURCES) $(lib1512_SOURCES) \
	$(lib1513_SOURCES) $(lib1514_SOURCES) $(lib1515_SOURCES) \
	$(lib1517_SOURCES) $(lib1518_SOURCES) $(lib1520_SOURCES) \
	$(lib1522_SOURCES) $(lib1523_SOURCES) $(lib1525_SOURCES) \
	$(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
	$(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
	$(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \
	$(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \
	$(lib1538_SOURCES) $(lib1540_SOURCES) $(lib1541_SOURCES) \
	$(lib1550_SOURCES) $(lib1551_SOURCES) $(lib1552_SOURCES) \
	$(lib1553_SOURCES) $(lib1554_SOURCES) $(lib1555_SOURCES) \
	$(lib1556_SOURCES) $(lib1557_SOURCES) $(lib1558_SOURCES) \
	$(lib1559_SOURCES) $(lib1560_SOURCES) $(lib1591_SOURCES) \
	$(lib1592_SOURCES) $(lib1593_SOURCES) $(lib1594_SOURCES) \
	$(lib1596_SOURCES) $(lib1900_SOURCES) $(lib1905_SOURCES) \
	$(lib1906_SOURCES) $(lib2033_SOURCES) $(lib500_SOURCES) \
	$(lib501_SOURCES) $(lib502_SOURCES) $(lib503_SOURCES) \
	$(lib504_SOURCES) $(lib505_SOURCES) $(lib506_SOURCES) \
	$(lib507_SOURCES) $(lib508_SOURCES) $(lib509_SOURCES) \
	$(lib510_SOURCES) $(lib511_SOURCES) $(lib512_SOURCES) \
	$(lib513_SOURCES) $(lib514_SOURCES) $(lib515_SOURCES) \
	$(lib516_SOURCES) $(lib517_SOURCES) $(lib518_SOURCES) \
	$(lib519_SOURCES) $(lib520_SOURCES) $(lib521_SOURCES) \







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|







1445
1446
1447
1448
1449
1450
1451




















































1452
1453
1454
1455
1456
1457
1458
1459
	$(lib1540_SOURCES) $(lib1541_SOURCES) $(lib1550_SOURCES) \
	$(lib1551_SOURCES) $(lib1552_SOURCES) $(lib1553_SOURCES) \
	$(lib1554_SOURCES) $(lib1555_SOURCES) $(lib1556_SOURCES) \
	$(lib1557_SOURCES) $(lib1558_SOURCES) $(lib1559_SOURCES) \
	$(lib1560_SOURCES) $(lib1591_SOURCES) $(lib1592_SOURCES) \
	$(lib1593_SOURCES) $(lib1594_SOURCES) $(lib1596_SOURCES) \
	$(lib1900_SOURCES) $(lib1905_SOURCES) $(lib1906_SOURCES) \




















































	$(lib1907_SOURCES) $(lib2033_SOURCES) $(lib500_SOURCES) \
	$(lib501_SOURCES) $(lib502_SOURCES) $(lib503_SOURCES) \
	$(lib504_SOURCES) $(lib505_SOURCES) $(lib506_SOURCES) \
	$(lib507_SOURCES) $(lib508_SOURCES) $(lib509_SOURCES) \
	$(lib510_SOURCES) $(lib511_SOURCES) $(lib512_SOURCES) \
	$(lib513_SOURCES) $(lib514_SOURCES) $(lib515_SOURCES) \
	$(lib516_SOURCES) $(lib517_SOURCES) $(lib518_SOURCES) \
	$(lib519_SOURCES) $(lib520_SOURCES) $(lib521_SOURCES) \
1511
1512
1513
1514
1515
1516
1517
1518
1519





















































1520
1521
1522
1523
1524
1525
1526
	$(lib582_SOURCES) $(lib583_SOURCES) $(lib585_SOURCES) \
	$(lib586_SOURCES) $(lib587_SOURCES) $(lib589_SOURCES) \
	$(lib590_SOURCES) $(lib591_SOURCES) $(lib597_SOURCES) \
	$(lib598_SOURCES) $(lib599_SOURCES) $(lib643_SOURCES) \
	$(lib644_SOURCES) $(lib645_SOURCES) $(lib650_SOURCES) \
	$(lib651_SOURCES) $(lib652_SOURCES) $(lib653_SOURCES) \
	$(lib654_SOURCES) $(lib655_SOURCES) $(lib658_SOURCES) \
	$(lib659_SOURCES) $(libauthretry_SOURCES) \
	$(libntlmconnect_SOURCES)





















































am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,







|

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
	$(lib582_SOURCES) $(lib583_SOURCES) $(lib585_SOURCES) \
	$(lib586_SOURCES) $(lib587_SOURCES) $(lib589_SOURCES) \
	$(lib590_SOURCES) $(lib591_SOURCES) $(lib597_SOURCES) \
	$(lib598_SOURCES) $(lib599_SOURCES) $(lib643_SOURCES) \
	$(lib644_SOURCES) $(lib645_SOURCES) $(lib650_SOURCES) \
	$(lib651_SOURCES) $(lib652_SOURCES) $(lib653_SOURCES) \
	$(lib654_SOURCES) $(lib655_SOURCES) $(lib658_SOURCES) \
	$(lib659_SOURCES) $(lib661_SOURCES) $(libauthretry_SOURCES) \
	$(libntlmconnect_SOURCES)
DIST_SOURCES = $(libhostname_la_SOURCES) \
	$(am__libstubgss_la_SOURCES_DIST) $(chkdecimalpoint_SOURCES) \
	$(chkhostname_SOURCES) $(lib1156_SOURCES) $(lib1500_SOURCES) \
	$(lib1501_SOURCES) $(lib1502_SOURCES) $(lib1503_SOURCES) \
	$(lib1504_SOURCES) $(lib1505_SOURCES) $(lib1506_SOURCES) \
	$(lib1507_SOURCES) $(lib1508_SOURCES) $(lib1509_SOURCES) \
	$(lib1510_SOURCES) $(lib1511_SOURCES) $(lib1512_SOURCES) \
	$(lib1513_SOURCES) $(lib1514_SOURCES) $(lib1515_SOURCES) \
	$(lib1517_SOURCES) $(lib1518_SOURCES) $(lib1520_SOURCES) \
	$(lib1522_SOURCES) $(lib1523_SOURCES) $(lib1525_SOURCES) \
	$(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
	$(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
	$(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \
	$(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \
	$(lib1538_SOURCES) $(lib1540_SOURCES) $(lib1541_SOURCES) \
	$(lib1550_SOURCES) $(lib1551_SOURCES) $(lib1552_SOURCES) \
	$(lib1553_SOURCES) $(lib1554_SOURCES) $(lib1555_SOURCES) \
	$(lib1556_SOURCES) $(lib1557_SOURCES) $(lib1558_SOURCES) \
	$(lib1559_SOURCES) $(lib1560_SOURCES) $(lib1591_SOURCES) \
	$(lib1592_SOURCES) $(lib1593_SOURCES) $(lib1594_SOURCES) \
	$(lib1596_SOURCES) $(lib1900_SOURCES) $(lib1905_SOURCES) \
	$(lib1906_SOURCES) $(lib1907_SOURCES) $(lib2033_SOURCES) \
	$(lib500_SOURCES) $(lib501_SOURCES) $(lib502_SOURCES) \
	$(lib503_SOURCES) $(lib504_SOURCES) $(lib505_SOURCES) \
	$(lib506_SOURCES) $(lib507_SOURCES) $(lib508_SOURCES) \
	$(lib509_SOURCES) $(lib510_SOURCES) $(lib511_SOURCES) \
	$(lib512_SOURCES) $(lib513_SOURCES) $(lib514_SOURCES) \
	$(lib515_SOURCES) $(lib516_SOURCES) $(lib517_SOURCES) \
	$(lib518_SOURCES) $(lib519_SOURCES) $(lib520_SOURCES) \
	$(lib521_SOURCES) $(lib523_SOURCES) $(lib524_SOURCES) \
	$(lib525_SOURCES) $(lib526_SOURCES) $(lib527_SOURCES) \
	$(lib529_SOURCES) $(lib530_SOURCES) $(lib532_SOURCES) \
	$(lib533_SOURCES) $(lib537_SOURCES) $(lib539_SOURCES) \
	$(lib540_SOURCES) $(lib541_SOURCES) $(lib542_SOURCES) \
	$(lib543_SOURCES) $(lib544_SOURCES) $(lib545_SOURCES) \
	$(lib547_SOURCES) $(lib548_SOURCES) $(lib549_SOURCES) \
	$(lib552_SOURCES) $(lib553_SOURCES) $(lib554_SOURCES) \
	$(lib555_SOURCES) $(lib556_SOURCES) $(lib557_SOURCES) \
	$(lib558_SOURCES) $(lib559_SOURCES) $(lib560_SOURCES) \
	$(lib562_SOURCES) $(lib564_SOURCES) $(lib565_SOURCES) \
	$(lib566_SOURCES) $(lib567_SOURCES) $(lib568_SOURCES) \
	$(lib569_SOURCES) $(lib570_SOURCES) $(lib571_SOURCES) \
	$(lib572_SOURCES) $(lib573_SOURCES) $(lib574_SOURCES) \
	$(lib575_SOURCES) $(lib576_SOURCES) $(lib578_SOURCES) \
	$(lib579_SOURCES) $(lib582_SOURCES) $(lib583_SOURCES) \
	$(lib585_SOURCES) $(lib586_SOURCES) $(lib587_SOURCES) \
	$(lib589_SOURCES) $(lib590_SOURCES) $(lib591_SOURCES) \
	$(lib597_SOURCES) $(lib598_SOURCES) $(lib599_SOURCES) \
	$(lib643_SOURCES) $(lib644_SOURCES) $(lib645_SOURCES) \
	$(lib650_SOURCES) $(lib651_SOURCES) $(lib652_SOURCES) \
	$(lib653_SOURCES) $(lib654_SOURCES) $(lib655_SOURCES) \
	$(lib658_SOURCES) $(lib659_SOURCES) $(lib661_SOURCES) \
	$(libauthretry_SOURCES) $(libntlmconnect_SOURCES)
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
2028
2029
2030
2031
2032
2033
2034


2035
2036
2037
2038
2039
2040
2041
lib655_CPPFLAGS = $(AM_CPPFLAGS)
lib658_SOURCES = lib658.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib658_LDADD = $(TESTUTIL_LIBS)
lib658_CPPFLAGS = $(AM_CPPFLAGS)
lib659_SOURCES = lib659.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib659_LDADD = $(TESTUTIL_LIBS)
lib659_CPPFLAGS = $(AM_CPPFLAGS)


lib1500_SOURCES = lib1500.c $(SUPPORTFILES) $(TESTUTIL)
lib1500_LDADD = $(TESTUTIL_LIBS)
lib1500_CPPFLAGS = $(AM_CPPFLAGS)
lib1501_SOURCES = lib1501.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1501_LDADD = $(TESTUTIL_LIBS)
lib1501_CPPFLAGS = $(AM_CPPFLAGS)
lib1502_SOURCES = lib1502.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)







>
>







2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
lib655_CPPFLAGS = $(AM_CPPFLAGS)
lib658_SOURCES = lib658.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib658_LDADD = $(TESTUTIL_LIBS)
lib658_CPPFLAGS = $(AM_CPPFLAGS)
lib659_SOURCES = lib659.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib659_LDADD = $(TESTUTIL_LIBS)
lib659_CPPFLAGS = $(AM_CPPFLAGS)
lib661_SOURCES = lib661.c $(SUPPORTFILES)
lib661_CPPFLAGS = $(AM_CPPFLAGS)
lib1500_SOURCES = lib1500.c $(SUPPORTFILES) $(TESTUTIL)
lib1500_LDADD = $(TESTUTIL_LIBS)
lib1500_CPPFLAGS = $(AM_CPPFLAGS)
lib1501_SOURCES = lib1501.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1501_LDADD = $(TESTUTIL_LIBS)
lib1501_CPPFLAGS = $(AM_CPPFLAGS)
lib1502_SOURCES = lib1502.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
2188
2189
2190
2191
2192
2193
2194



2195
2196
2197
2198
2199
2200
2201
lib1900_CPPFLAGS = $(AM_CPPFLAGS)
lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1905_LDADD = $(TESTUTIL_LIBS)
lib1905_CPPFLAGS = $(AM_CPPFLAGS)
lib1906_SOURCES = lib1906.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1906_LDADD = $(TESTUTIL_LIBS)
lib1906_CPPFLAGS = $(AM_CPPFLAGS)



lib2033_SOURCES = libntlmconnect.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib2033_LDADD = $(TESTUTIL_LIBS)
lib2033_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_PIPELINING
@BUILD_LIBHOSTNAME_FALSE@noinst_LTLIBRARIES = $(am__append_6)

# Makefile.inc provides the source defines (TESTUTIL, SUPPORTFILES,
# noinst_PROGRAMS, lib*_SOURCES, and lib*_CFLAGS)







>
>
>







2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
lib1900_CPPFLAGS = $(AM_CPPFLAGS)
lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1905_LDADD = $(TESTUTIL_LIBS)
lib1905_CPPFLAGS = $(AM_CPPFLAGS)
lib1906_SOURCES = lib1906.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1906_LDADD = $(TESTUTIL_LIBS)
lib1906_CPPFLAGS = $(AM_CPPFLAGS)
lib1907_SOURCES = lib1907.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1907_LDADD = $(TESTUTIL_LIBS)
lib1907_CPPFLAGS = $(AM_CPPFLAGS)
lib2033_SOURCES = libntlmconnect.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib2033_LDADD = $(TESTUTIL_LIBS)
lib2033_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_PIPELINING
@BUILD_LIBHOSTNAME_FALSE@noinst_LTLIBRARIES = $(am__append_6)

# Makefile.inc provides the source defines (TESTUTIL, SUPPORTFILES,
# noinst_PROGRAMS, lib*_SOURCES, and lib*_CFLAGS)
2618
2619
2620
2621
2622
2623
2624






2625
2626
2627
2628
2629
2630
2631
	$(AM_V_CCLD)$(LINK) $(lib1905_OBJECTS) $(lib1905_LDADD) $(LIBS)
../../lib/lib1906-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib1906$(EXEEXT): $(lib1906_OBJECTS) $(lib1906_DEPENDENCIES) $(EXTRA_lib1906_DEPENDENCIES) 
	@rm -f lib1906$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1906_OBJECTS) $(lib1906_LDADD) $(LIBS)






../../lib/lib2033-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib2033$(EXEEXT): $(lib2033_OBJECTS) $(lib2033_DEPENDENCIES) $(EXTRA_lib2033_DEPENDENCIES) 
	@rm -f lib2033$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib2033_OBJECTS) $(lib2033_LDADD) $(LIBS)








>
>
>
>
>
>







2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
	$(AM_V_CCLD)$(LINK) $(lib1905_OBJECTS) $(lib1905_LDADD) $(LIBS)
../../lib/lib1906-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib1906$(EXEEXT): $(lib1906_OBJECTS) $(lib1906_DEPENDENCIES) $(EXTRA_lib1906_DEPENDENCIES) 
	@rm -f lib1906$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1906_OBJECTS) $(lib1906_LDADD) $(LIBS)
../../lib/lib1907-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib1907$(EXEEXT): $(lib1907_OBJECTS) $(lib1907_DEPENDENCIES) $(EXTRA_lib1907_DEPENDENCIES) 
	@rm -f lib1907$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib1907_OBJECTS) $(lib1907_LDADD) $(LIBS)
../../lib/lib2033-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib2033$(EXEEXT): $(lib2033_OBJECTS) $(lib2033_DEPENDENCIES) $(EXTRA_lib2033_DEPENDENCIES) 
	@rm -f lib2033$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib2033_OBJECTS) $(lib2033_LDADD) $(LIBS)

3034
3035
3036
3037
3038
3039
3040




3041
3042
3043
3044
3045
3046
3047
	$(AM_V_CCLD)$(LINK) $(lib658_OBJECTS) $(lib658_LDADD) $(LIBS)
../../lib/lib659-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib659$(EXEEXT): $(lib659_OBJECTS) $(lib659_DEPENDENCIES) $(EXTRA_lib659_DEPENDENCIES) 
	@rm -f lib659$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib659_OBJECTS) $(lib659_LDADD) $(LIBS)





libauthretry$(EXEEXT): $(libauthretry_OBJECTS) $(libauthretry_DEPENDENCIES) $(EXTRA_libauthretry_DEPENDENCIES) 
	@rm -f libauthretry$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(libauthretry_OBJECTS) $(libauthretry_LDADD) $(LIBS)
../../lib/libntlmconnect-warnless.$(OBJEXT):  \
	../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp)








>
>
>
>







3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
	$(AM_V_CCLD)$(LINK) $(lib658_OBJECTS) $(lib658_LDADD) $(LIBS)
../../lib/lib659-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
	../../lib/$(DEPDIR)/$(am__dirstamp)

lib659$(EXEEXT): $(lib659_OBJECTS) $(lib659_DEPENDENCIES) $(EXTRA_lib659_DEPENDENCIES) 
	@rm -f lib659$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib659_OBJECTS) $(lib659_LDADD) $(LIBS)

lib661$(EXEEXT): $(lib661_OBJECTS) $(lib661_DEPENDENCIES) $(EXTRA_lib661_DEPENDENCIES) 
	@rm -f lib661$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(lib661_OBJECTS) $(lib661_LDADD) $(LIBS)

libauthretry$(EXEEXT): $(libauthretry_OBJECTS) $(libauthretry_DEPENDENCIES) $(EXTRA_libauthretry_DEPENDENCIES) 
	@rm -f libauthretry$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(libauthretry_OBJECTS) $(libauthretry_LDADD) $(LIBS)
../../lib/libntlmconnect-warnless.$(OBJEXT):  \
	../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp)

3096
3097
3098
3099
3100
3101
3102

3103
3104
3105
3106
3107
3108
3109
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1557-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1591-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1592-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1596-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1900-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1905-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1906-warnless.Po@am__quote@ # am--include-marker

@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib2033-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib502-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib503-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib504-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib507-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib518-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib525-warnless.Po@am__quote@ # am--include-marker







>







3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1557-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1591-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1592-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1596-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1900-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1905-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1906-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1907-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib2033-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib502-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib503-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib504-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib507-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib518-warnless.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib525-warnless.Po@am__quote@ # am--include-marker
3284
3285
3286
3287
3288
3289
3290



3291
3292
3293
3294
3295
3296
3297
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-lib1905.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1906-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1906-lib1906.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1906-testutil.Po@am__quote@ # am--include-marker



@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-libntlmconnect.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-lib500.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-testtrace.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-testutil.Po@am__quote@ # am--include-marker







>
>
>







3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1900-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-lib1905.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1906-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1906-lib1906.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1906-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1907-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1907-lib1907.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1907-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-libntlmconnect.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2033-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-lib500.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-testtrace.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-testutil.Po@am__quote@ # am--include-marker
3492
3493
3494
3495
3496
3497
3498


3499
3500
3501
3502
3503
3504
3505
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib655-lib655.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib658-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib658-lib658.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib658-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib659-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib659-lib659.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib659-testutil.Po@am__quote@ # am--include-marker


@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libauthretry-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libauthretry-libauthretry.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhostname_la-sethostname.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmconnect-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmconnect-libntlmconnect.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmconnect-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstubgss_la-stub_gssapi.Plo@am__quote@ # am--include-marker







>
>







3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib655-lib655.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib658-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib658-lib658.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib658-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib659-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib659-lib659.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib659-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib661-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib661-lib661.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libauthretry-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libauthretry-libauthretry.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhostname_la-sethostname.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmconnect-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmconnect-libntlmconnect.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libntlmconnect-testutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstubgss_la-stub_gssapi.Plo@am__quote@ # am--include-marker
6289
6290
6291
6292
6293
6294
6295
























































6296
6297
6298
6299
6300
6301
6302
../../lib/lib1906-warnless.obj: ../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1906-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1906-warnless.Tpo -c -o ../../lib/lib1906-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1906-warnless.Tpo ../../lib/$(DEPDIR)/lib1906-warnless.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1906-warnless.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1906-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`

























































lib2033-libntlmconnect.o: libntlmconnect.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib2033-libntlmconnect.o -MD -MP -MF $(DEPDIR)/lib2033-libntlmconnect.Tpo -c -o lib2033-libntlmconnect.o `test -f 'libntlmconnect.c' || echo '$(srcdir)/'`libntlmconnect.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib2033-libntlmconnect.Tpo $(DEPDIR)/lib2033-libntlmconnect.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libntlmconnect.c' object='lib2033-libntlmconnect.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib2033-libntlmconnect.o `test -f 'libntlmconnect.c' || echo '$(srcdir)/'`libntlmconnect.c








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
../../lib/lib1906-warnless.obj: ../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1906-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1906-warnless.Tpo -c -o ../../lib/lib1906-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1906-warnless.Tpo ../../lib/$(DEPDIR)/lib1906-warnless.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1906-warnless.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1906-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`

lib1907-lib1907.o: lib1907.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1907-lib1907.o -MD -MP -MF $(DEPDIR)/lib1907-lib1907.Tpo -c -o lib1907-lib1907.o `test -f 'lib1907.c' || echo '$(srcdir)/'`lib1907.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1907-lib1907.Tpo $(DEPDIR)/lib1907-lib1907.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib1907.c' object='lib1907-lib1907.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1907-lib1907.o `test -f 'lib1907.c' || echo '$(srcdir)/'`lib1907.c

lib1907-lib1907.obj: lib1907.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1907-lib1907.obj -MD -MP -MF $(DEPDIR)/lib1907-lib1907.Tpo -c -o lib1907-lib1907.obj `if test -f 'lib1907.c'; then $(CYGPATH_W) 'lib1907.c'; else $(CYGPATH_W) '$(srcdir)/lib1907.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1907-lib1907.Tpo $(DEPDIR)/lib1907-lib1907.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib1907.c' object='lib1907-lib1907.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1907-lib1907.obj `if test -f 'lib1907.c'; then $(CYGPATH_W) 'lib1907.c'; else $(CYGPATH_W) '$(srcdir)/lib1907.c'; fi`

lib1907-first.o: first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1907-first.o -MD -MP -MF $(DEPDIR)/lib1907-first.Tpo -c -o lib1907-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1907-first.Tpo $(DEPDIR)/lib1907-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='first.c' object='lib1907-first.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1907-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c

lib1907-first.obj: first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1907-first.obj -MD -MP -MF $(DEPDIR)/lib1907-first.Tpo -c -o lib1907-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1907-first.Tpo $(DEPDIR)/lib1907-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='first.c' object='lib1907-first.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1907-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`

lib1907-testutil.o: testutil.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1907-testutil.o -MD -MP -MF $(DEPDIR)/lib1907-testutil.Tpo -c -o lib1907-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1907-testutil.Tpo $(DEPDIR)/lib1907-testutil.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testutil.c' object='lib1907-testutil.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1907-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c

lib1907-testutil.obj: testutil.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1907-testutil.obj -MD -MP -MF $(DEPDIR)/lib1907-testutil.Tpo -c -o lib1907-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib1907-testutil.Tpo $(DEPDIR)/lib1907-testutil.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='testutil.c' object='lib1907-testutil.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1907-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`

../../lib/lib1907-warnless.o: ../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1907-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1907-warnless.Tpo -c -o ../../lib/lib1907-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1907-warnless.Tpo ../../lib/$(DEPDIR)/lib1907-warnless.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1907-warnless.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1907-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c

../../lib/lib1907-warnless.obj: ../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1907-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1907-warnless.Tpo -c -o ../../lib/lib1907-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1907-warnless.Tpo ../../lib/$(DEPDIR)/lib1907-warnless.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1907-warnless.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1907-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`

lib2033-libntlmconnect.o: libntlmconnect.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib2033-libntlmconnect.o -MD -MP -MF $(DEPDIR)/lib2033-libntlmconnect.Tpo -c -o lib2033-libntlmconnect.o `test -f 'libntlmconnect.c' || echo '$(srcdir)/'`libntlmconnect.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib2033-libntlmconnect.Tpo $(DEPDIR)/lib2033-libntlmconnect.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libntlmconnect.c' object='lib2033-libntlmconnect.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib2033_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib2033-libntlmconnect.o `test -f 'libntlmconnect.c' || echo '$(srcdir)/'`libntlmconnect.c

9593
9594
9595
9596
9597
9598
9599




























9600
9601
9602
9603
9604
9605
9606
../../lib/lib659-warnless.obj: ../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib659-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib659-warnless.Tpo -c -o ../../lib/lib659-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib659-warnless.Tpo ../../lib/$(DEPDIR)/lib659-warnless.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib659-warnless.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib659-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`





























libauthretry-libauthretry.o: libauthretry.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libauthretry-libauthretry.o -MD -MP -MF $(DEPDIR)/libauthretry-libauthretry.Tpo -c -o libauthretry-libauthretry.o `test -f 'libauthretry.c' || echo '$(srcdir)/'`libauthretry.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libauthretry-libauthretry.Tpo $(DEPDIR)/libauthretry-libauthretry.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libauthretry.c' object='libauthretry-libauthretry.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libauthretry-libauthretry.o `test -f 'libauthretry.c' || echo '$(srcdir)/'`libauthretry.c








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







9687
9688
9689
9690
9691
9692
9693
9694
9695
9696
9697
9698
9699
9700
9701
9702
9703
9704
9705
9706
9707
9708
9709
9710
9711
9712
9713
9714
9715
9716
9717
9718
9719
9720
9721
9722
9723
9724
9725
9726
9727
9728
../../lib/lib659-warnless.obj: ../../lib/warnless.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib659-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib659-warnless.Tpo -c -o ../../lib/lib659-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib659-warnless.Tpo ../../lib/$(DEPDIR)/lib659-warnless.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib659-warnless.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib659-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`

lib661-lib661.o: lib661.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib661-lib661.o -MD -MP -MF $(DEPDIR)/lib661-lib661.Tpo -c -o lib661-lib661.o `test -f 'lib661.c' || echo '$(srcdir)/'`lib661.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib661-lib661.Tpo $(DEPDIR)/lib661-lib661.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib661.c' object='lib661-lib661.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib661-lib661.o `test -f 'lib661.c' || echo '$(srcdir)/'`lib661.c

lib661-lib661.obj: lib661.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib661-lib661.obj -MD -MP -MF $(DEPDIR)/lib661-lib661.Tpo -c -o lib661-lib661.obj `if test -f 'lib661.c'; then $(CYGPATH_W) 'lib661.c'; else $(CYGPATH_W) '$(srcdir)/lib661.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib661-lib661.Tpo $(DEPDIR)/lib661-lib661.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='lib661.c' object='lib661-lib661.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib661-lib661.obj `if test -f 'lib661.c'; then $(CYGPATH_W) 'lib661.c'; else $(CYGPATH_W) '$(srcdir)/lib661.c'; fi`

lib661-first.o: first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib661-first.o -MD -MP -MF $(DEPDIR)/lib661-first.Tpo -c -o lib661-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib661-first.Tpo $(DEPDIR)/lib661-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='first.c' object='lib661-first.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib661-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c

lib661-first.obj: first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib661-first.obj -MD -MP -MF $(DEPDIR)/lib661-first.Tpo -c -o lib661-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/lib661-first.Tpo $(DEPDIR)/lib661-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='first.c' object='lib661-first.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib661-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`

libauthretry-libauthretry.o: libauthretry.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libauthretry-libauthretry.o -MD -MP -MF $(DEPDIR)/libauthretry-libauthretry.Tpo -c -o libauthretry-libauthretry.o `test -f 'libauthretry.c' || echo '$(srcdir)/'`libauthretry.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libauthretry-libauthretry.Tpo $(DEPDIR)/libauthretry-libauthretry.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libauthretry.c' object='libauthretry-libauthretry.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libauthretry-libauthretry.o `test -f 'libauthretry.c' || echo '$(srcdir)/'`libauthretry.c

9856
9857
9858
9859
9860
9861
9862

9863
9864
9865
9866
9867
9868
9869
	-rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po

	-rm -f ../../lib/$(DEPDIR)/lib2033-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib502-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib503-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib504-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib507-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib518-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib525-warnless.Po







>







9978
9979
9980
9981
9982
9983
9984
9985
9986
9987
9988
9989
9990
9991
9992
	-rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1907-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib2033-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib502-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib503-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib504-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib507-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib518-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib525-warnless.Po
10044
10045
10046
10047
10048
10049
10050



10051
10052
10053
10054
10055
10056
10057
	-rm -f ./$(DEPDIR)/lib1900-testutil.Po
	-rm -f ./$(DEPDIR)/lib1905-first.Po
	-rm -f ./$(DEPDIR)/lib1905-lib1905.Po
	-rm -f ./$(DEPDIR)/lib1905-testutil.Po
	-rm -f ./$(DEPDIR)/lib1906-first.Po
	-rm -f ./$(DEPDIR)/lib1906-lib1906.Po
	-rm -f ./$(DEPDIR)/lib1906-testutil.Po



	-rm -f ./$(DEPDIR)/lib2033-first.Po
	-rm -f ./$(DEPDIR)/lib2033-libntlmconnect.Po
	-rm -f ./$(DEPDIR)/lib2033-testutil.Po
	-rm -f ./$(DEPDIR)/lib500-first.Po
	-rm -f ./$(DEPDIR)/lib500-lib500.Po
	-rm -f ./$(DEPDIR)/lib500-testtrace.Po
	-rm -f ./$(DEPDIR)/lib500-testutil.Po







>
>
>







10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179
10180
10181
10182
10183
	-rm -f ./$(DEPDIR)/lib1900-testutil.Po
	-rm -f ./$(DEPDIR)/lib1905-first.Po
	-rm -f ./$(DEPDIR)/lib1905-lib1905.Po
	-rm -f ./$(DEPDIR)/lib1905-testutil.Po
	-rm -f ./$(DEPDIR)/lib1906-first.Po
	-rm -f ./$(DEPDIR)/lib1906-lib1906.Po
	-rm -f ./$(DEPDIR)/lib1906-testutil.Po
	-rm -f ./$(DEPDIR)/lib1907-first.Po
	-rm -f ./$(DEPDIR)/lib1907-lib1907.Po
	-rm -f ./$(DEPDIR)/lib1907-testutil.Po
	-rm -f ./$(DEPDIR)/lib2033-first.Po
	-rm -f ./$(DEPDIR)/lib2033-libntlmconnect.Po
	-rm -f ./$(DEPDIR)/lib2033-testutil.Po
	-rm -f ./$(DEPDIR)/lib500-first.Po
	-rm -f ./$(DEPDIR)/lib500-lib500.Po
	-rm -f ./$(DEPDIR)/lib500-testtrace.Po
	-rm -f ./$(DEPDIR)/lib500-testutil.Po
10252
10253
10254
10255
10256
10257
10258


10259
10260
10261
10262
10263
10264
10265
	-rm -f ./$(DEPDIR)/lib655-lib655.Po
	-rm -f ./$(DEPDIR)/lib658-first.Po
	-rm -f ./$(DEPDIR)/lib658-lib658.Po
	-rm -f ./$(DEPDIR)/lib658-testutil.Po
	-rm -f ./$(DEPDIR)/lib659-first.Po
	-rm -f ./$(DEPDIR)/lib659-lib659.Po
	-rm -f ./$(DEPDIR)/lib659-testutil.Po


	-rm -f ./$(DEPDIR)/libauthretry-first.Po
	-rm -f ./$(DEPDIR)/libauthretry-libauthretry.Po
	-rm -f ./$(DEPDIR)/libhostname_la-sethostname.Plo
	-rm -f ./$(DEPDIR)/libntlmconnect-first.Po
	-rm -f ./$(DEPDIR)/libntlmconnect-libntlmconnect.Po
	-rm -f ./$(DEPDIR)/libntlmconnect-testutil.Po
	-rm -f ./$(DEPDIR)/libstubgss_la-stub_gssapi.Plo







>
>







10378
10379
10380
10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392
10393
	-rm -f ./$(DEPDIR)/lib655-lib655.Po
	-rm -f ./$(DEPDIR)/lib658-first.Po
	-rm -f ./$(DEPDIR)/lib658-lib658.Po
	-rm -f ./$(DEPDIR)/lib658-testutil.Po
	-rm -f ./$(DEPDIR)/lib659-first.Po
	-rm -f ./$(DEPDIR)/lib659-lib659.Po
	-rm -f ./$(DEPDIR)/lib659-testutil.Po
	-rm -f ./$(DEPDIR)/lib661-first.Po
	-rm -f ./$(DEPDIR)/lib661-lib661.Po
	-rm -f ./$(DEPDIR)/libauthretry-first.Po
	-rm -f ./$(DEPDIR)/libauthretry-libauthretry.Po
	-rm -f ./$(DEPDIR)/libhostname_la-sethostname.Plo
	-rm -f ./$(DEPDIR)/libntlmconnect-first.Po
	-rm -f ./$(DEPDIR)/libntlmconnect-libntlmconnect.Po
	-rm -f ./$(DEPDIR)/libntlmconnect-testutil.Po
	-rm -f ./$(DEPDIR)/libstubgss_la-stub_gssapi.Plo
10349
10350
10351
10352
10353
10354
10355

10356
10357
10358
10359
10360
10361
10362
	-rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po

	-rm -f ../../lib/$(DEPDIR)/lib2033-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib502-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib503-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib504-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib507-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib518-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib525-warnless.Po







>







10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
	-rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1900-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib1907-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib2033-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib502-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib503-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib504-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib507-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib518-warnless.Po
	-rm -f ../../lib/$(DEPDIR)/lib525-warnless.Po
10537
10538
10539
10540
10541
10542
10543



10544
10545
10546
10547
10548
10549
10550
	-rm -f ./$(DEPDIR)/lib1900-testutil.Po
	-rm -f ./$(DEPDIR)/lib1905-first.Po
	-rm -f ./$(DEPDIR)/lib1905-lib1905.Po
	-rm -f ./$(DEPDIR)/lib1905-testutil.Po
	-rm -f ./$(DEPDIR)/lib1906-first.Po
	-rm -f ./$(DEPDIR)/lib1906-lib1906.Po
	-rm -f ./$(DEPDIR)/lib1906-testutil.Po



	-rm -f ./$(DEPDIR)/lib2033-first.Po
	-rm -f ./$(DEPDIR)/lib2033-libntlmconnect.Po
	-rm -f ./$(DEPDIR)/lib2033-testutil.Po
	-rm -f ./$(DEPDIR)/lib500-first.Po
	-rm -f ./$(DEPDIR)/lib500-lib500.Po
	-rm -f ./$(DEPDIR)/lib500-testtrace.Po
	-rm -f ./$(DEPDIR)/lib500-testutil.Po







>
>
>







10666
10667
10668
10669
10670
10671
10672
10673
10674
10675
10676
10677
10678
10679
10680
10681
10682
	-rm -f ./$(DEPDIR)/lib1900-testutil.Po
	-rm -f ./$(DEPDIR)/lib1905-first.Po
	-rm -f ./$(DEPDIR)/lib1905-lib1905.Po
	-rm -f ./$(DEPDIR)/lib1905-testutil.Po
	-rm -f ./$(DEPDIR)/lib1906-first.Po
	-rm -f ./$(DEPDIR)/lib1906-lib1906.Po
	-rm -f ./$(DEPDIR)/lib1906-testutil.Po
	-rm -f ./$(DEPDIR)/lib1907-first.Po
	-rm -f ./$(DEPDIR)/lib1907-lib1907.Po
	-rm -f ./$(DEPDIR)/lib1907-testutil.Po
	-rm -f ./$(DEPDIR)/lib2033-first.Po
	-rm -f ./$(DEPDIR)/lib2033-libntlmconnect.Po
	-rm -f ./$(DEPDIR)/lib2033-testutil.Po
	-rm -f ./$(DEPDIR)/lib500-first.Po
	-rm -f ./$(DEPDIR)/lib500-lib500.Po
	-rm -f ./$(DEPDIR)/lib500-testtrace.Po
	-rm -f ./$(DEPDIR)/lib500-testutil.Po
10745
10746
10747
10748
10749
10750
10751


10752
10753
10754
10755
10756
10757
10758
	-rm -f ./$(DEPDIR)/lib655-lib655.Po
	-rm -f ./$(DEPDIR)/lib658-first.Po
	-rm -f ./$(DEPDIR)/lib658-lib658.Po
	-rm -f ./$(DEPDIR)/lib658-testutil.Po
	-rm -f ./$(DEPDIR)/lib659-first.Po
	-rm -f ./$(DEPDIR)/lib659-lib659.Po
	-rm -f ./$(DEPDIR)/lib659-testutil.Po


	-rm -f ./$(DEPDIR)/libauthretry-first.Po
	-rm -f ./$(DEPDIR)/libauthretry-libauthretry.Po
	-rm -f ./$(DEPDIR)/libhostname_la-sethostname.Plo
	-rm -f ./$(DEPDIR)/libntlmconnect-first.Po
	-rm -f ./$(DEPDIR)/libntlmconnect-libntlmconnect.Po
	-rm -f ./$(DEPDIR)/libntlmconnect-testutil.Po
	-rm -f ./$(DEPDIR)/libstubgss_la-stub_gssapi.Plo







>
>







10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
	-rm -f ./$(DEPDIR)/lib655-lib655.Po
	-rm -f ./$(DEPDIR)/lib658-first.Po
	-rm -f ./$(DEPDIR)/lib658-lib658.Po
	-rm -f ./$(DEPDIR)/lib658-testutil.Po
	-rm -f ./$(DEPDIR)/lib659-first.Po
	-rm -f ./$(DEPDIR)/lib659-lib659.Po
	-rm -f ./$(DEPDIR)/lib659-testutil.Po
	-rm -f ./$(DEPDIR)/lib661-first.Po
	-rm -f ./$(DEPDIR)/lib661-lib661.Po
	-rm -f ./$(DEPDIR)/libauthretry-first.Po
	-rm -f ./$(DEPDIR)/libauthretry-libauthretry.Po
	-rm -f ./$(DEPDIR)/libhostname_la-sethostname.Plo
	-rm -f ./$(DEPDIR)/libntlmconnect-first.Po
	-rm -f ./$(DEPDIR)/libntlmconnect-libntlmconnect.Po
	-rm -f ./$(DEPDIR)/libntlmconnect-testutil.Po
	-rm -f ./$(DEPDIR)/libstubgss_la-stub_gssapi.Plo
Changes to jni/curl/tests/libtest/Makefile.inc.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 lib520 lib521 lib523 lib524 lib525 lib526 lib527 lib529 lib530 lib532   \
 lib533        lib537 lib539 lib540 lib541 lib542 lib543 lib544 lib545   \
 lib547 lib548 lib549 lib552 lib553 lib554 lib555 lib556 lib557 lib558   \
 lib559 lib560 lib562 lib564 lib565 lib566 lib567 lib568 lib569 lib570   \
 lib571 lib572 lib573 lib574 lib575 lib576        lib578 lib579 lib582   \
 lib583 lib585 lib586 lib587 lib589 lib590 lib591 lib597 lib598 lib599   \
 lib643 lib644 lib645 lib650 lib651 lib652 lib653 lib654 lib655 lib658   \
 lib659 \
 lib1156 \
 lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \
 lib1509 lib1510 lib1511 lib1512 lib1513 lib1514 lib1515         lib1517 \
 lib1518         lib1520 lib1521 lib1522 lib1523 \
 lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \
 lib1534 lib1535 lib1536 lib1537 lib1538 \
 lib1540 lib1541 \
 lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \
 lib1558 lib1559 lib1560 \
 lib1591 lib1592 lib1593 lib1594 lib1596 \
 lib1900 lib1905 lib1906 \
 lib2033

chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \
 ../../lib/curl_ctype.c
chkdecimalpoint_LDADD =
chkdecimalpoint_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB \
 -DCURLX_NO_MEMORY_CALLBACKS







|










|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 lib520 lib521 lib523 lib524 lib525 lib526 lib527 lib529 lib530 lib532   \
 lib533        lib537 lib539 lib540 lib541 lib542 lib543 lib544 lib545   \
 lib547 lib548 lib549 lib552 lib553 lib554 lib555 lib556 lib557 lib558   \
 lib559 lib560 lib562 lib564 lib565 lib566 lib567 lib568 lib569 lib570   \
 lib571 lib572 lib573 lib574 lib575 lib576        lib578 lib579 lib582   \
 lib583 lib585 lib586 lib587 lib589 lib590 lib591 lib597 lib598 lib599   \
 lib643 lib644 lib645 lib650 lib651 lib652 lib653 lib654 lib655 lib658   \
 lib659 lib661 \
 lib1156 \
 lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \
 lib1509 lib1510 lib1511 lib1512 lib1513 lib1514 lib1515         lib1517 \
 lib1518         lib1520 lib1521 lib1522 lib1523 \
 lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \
 lib1534 lib1535 lib1536 lib1537 lib1538 \
 lib1540 lib1541 \
 lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \
 lib1558 lib1559 lib1560 \
 lib1591 lib1592 lib1593 lib1594 lib1596 \
 lib1900 lib1905 lib1906 lib1907 \
 lib2033

chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \
 ../../lib/curl_ctype.c
chkdecimalpoint_LDADD =
chkdecimalpoint_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB \
 -DCURLX_NO_MEMORY_CALLBACKS
340
341
342
343
344
345
346



347
348
349
350
351
352
353
lib658_SOURCES = lib658.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib658_LDADD = $(TESTUTIL_LIBS)
lib658_CPPFLAGS = $(AM_CPPFLAGS)

lib659_SOURCES = lib659.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib659_LDADD = $(TESTUTIL_LIBS)
lib659_CPPFLAGS = $(AM_CPPFLAGS)




lib1500_SOURCES = lib1500.c $(SUPPORTFILES) $(TESTUTIL)
lib1500_LDADD = $(TESTUTIL_LIBS)
lib1500_CPPFLAGS = $(AM_CPPFLAGS)

lib1501_SOURCES = lib1501.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1501_LDADD = $(TESTUTIL_LIBS)







>
>
>







340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
lib658_SOURCES = lib658.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib658_LDADD = $(TESTUTIL_LIBS)
lib658_CPPFLAGS = $(AM_CPPFLAGS)

lib659_SOURCES = lib659.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib659_LDADD = $(TESTUTIL_LIBS)
lib659_CPPFLAGS = $(AM_CPPFLAGS)

lib661_SOURCES = lib661.c $(SUPPORTFILES)
lib661_CPPFLAGS = $(AM_CPPFLAGS)

lib1500_SOURCES = lib1500.c $(SUPPORTFILES) $(TESTUTIL)
lib1500_LDADD = $(TESTUTIL_LIBS)
lib1500_CPPFLAGS = $(AM_CPPFLAGS)

lib1501_SOURCES = lib1501.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1501_LDADD = $(TESTUTIL_LIBS)
558
559
560
561
562
563
564




565
566
567
568
lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1905_LDADD = $(TESTUTIL_LIBS)
lib1905_CPPFLAGS = $(AM_CPPFLAGS)

lib1906_SOURCES = lib1906.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1906_LDADD = $(TESTUTIL_LIBS)
lib1906_CPPFLAGS = $(AM_CPPFLAGS)





lib2033_SOURCES = libntlmconnect.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib2033_LDADD = $(TESTUTIL_LIBS)
lib2033_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_PIPELINING







>
>
>
>




561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1905_LDADD = $(TESTUTIL_LIBS)
lib1905_CPPFLAGS = $(AM_CPPFLAGS)

lib1906_SOURCES = lib1906.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1906_LDADD = $(TESTUTIL_LIBS)
lib1906_CPPFLAGS = $(AM_CPPFLAGS)

lib1907_SOURCES = lib1907.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1907_LDADD = $(TESTUTIL_LIBS)
lib1907_CPPFLAGS = $(AM_CPPFLAGS)

lib2033_SOURCES = libntlmconnect.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib2033_LDADD = $(TESTUTIL_LIBS)
lib2033_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_PIPELINING
Changes to jni/curl/tests/libtest/lib1156.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/tests/libtest/lib1522.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/tests/libtest/lib1560.c.
136
137
138
139
140
141
142




















143
144
145
146
147
148
149
  {"file://C:\\programs\\foo",
   "file | [11] | [12] | [13] | [14] | [15] | C:\\programs\\foo | [16] | [17]",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_OK},
  {"file:///C:\\programs\\foo",
   "file | [11] | [12] | [13] | [14] | [15] | C:\\programs\\foo | [16] | [17]",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_OK},
#endif




















  {"http://[ab.be:1]/x", "",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_MALFORMED_INPUT},
  {"http://[ab.be]/x", "",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_MALFORMED_INPUT},
  /* URL without host name */
  {"http://a:b@/x", "",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_NO_HOST},







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
  {"file://C:\\programs\\foo",
   "file | [11] | [12] | [13] | [14] | [15] | C:\\programs\\foo | [16] | [17]",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_OK},
  {"file:///C:\\programs\\foo",
   "file | [11] | [12] | [13] | [14] | [15] | C:\\programs\\foo | [16] | [17]",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_OK},
#endif
  {"https://example.com/color/#green?no-black",
   "https | [11] | [12] | [13] | example.com | [15] | /color/ | [16] | "
   "green?no-black",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_OK },
  {"https://example.com/color/#green#no-black",
   "https | [11] | [12] | [13] | example.com | [15] | /color/ | [16] | "
   "green#no-black",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_OK },
  {"https://example.com/color/?green#no-black",
   "https | [11] | [12] | [13] | example.com | [15] | /color/ | green | "
   "no-black",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_OK },
  {"https://example.com/#color/?green#no-black",
   "https | [11] | [12] | [13] | example.com | [15] | / | [16] | "
   "color/?green#no-black",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_OK },
  {"https://example.#com/color/?green#no-black",
   "https | [11] | [12] | [13] | example. | [15] | / | [16] | "
   "com/color/?green#no-black",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_OK },
  {"http://[ab.be:1]/x", "",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_MALFORMED_INPUT},
  {"http://[ab.be]/x", "",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_MALFORMED_INPUT},
  /* URL without host name */
  {"http://a:b@/x", "",
   CURLU_DEFAULT_SCHEME, 0, CURLUE_NO_HOST},
410
411
412
413
414
415
416












417
418
419
420
421
422
423
   0, 0, CURLUE_OK},
  {"http://example.com/path/html",
   "http://example.com/path/html",
   0, 0, CURLUE_OK},
  {"tp://example.com/path/html",
   "tp://example.com/path/html",
   CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_OK},












  {NULL, NULL, 0, 0, 0}
};

static int checkurl(const char *url, const char *out)
{
  if(strcmp(out, url)) {
    fprintf(stderr, "Wanted: %s\nGot   : %s\n",







>
>
>
>
>
>
>
>
>
>
>
>







430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
   0, 0, CURLUE_OK},
  {"http://example.com/path/html",
   "http://example.com/path/html",
   0, 0, CURLUE_OK},
  {"tp://example.com/path/html",
   "tp://example.com/path/html",
   CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_OK},
  {"custom-scheme://host?expected=test-good",
   "custom-scheme://host/?expected=test-good",
   CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_OK},
  {"custom-scheme://?expected=test-bad",
   "",
   CURLU_NON_SUPPORT_SCHEME, 0, CURLUE_MALFORMED_INPUT},
  {"custom-scheme://?expected=test-new-good",
   "custom-scheme:///?expected=test-new-good",
   CURLU_NON_SUPPORT_SCHEME | CURLU_NO_AUTHORITY, 0, CURLUE_OK},
  {"custom-scheme://host?expected=test-still-good",
   "custom-scheme://host/?expected=test-still-good",
   CURLU_NON_SUPPORT_SCHEME | CURLU_NO_AUTHORITY, 0, CURLUE_OK},
  {NULL, NULL, 0, 0, 0}
};

static int checkurl(const char *url, const char *out)
{
  if(strcmp(out, url)) {
    fprintf(stderr, "Wanted: %s\nGot   : %s\n",
547
548
549
550
551
552
553











554
555
556
557
558
559
560
   "host=www.example.com,",
   "http://www.example.com/",
   0, 0, CURLUE_OK, CURLUE_OK},
  {"http://example.com:80",
   "scheme=ftp,",
   "ftp://example.com:80/",
   0, 0, CURLUE_OK, CURLUE_OK},











  {NULL, NULL, NULL, 0, 0, 0, 0}
};

static CURLUPart part2id(char *part)
{
  if(!strcmp("url", part))
    return CURLUPART_URL;







>
>
>
>
>
>
>
>
>
>
>







579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
   "host=www.example.com,",
   "http://www.example.com/",
   0, 0, CURLUE_OK, CURLUE_OK},
  {"http://example.com:80",
   "scheme=ftp,",
   "ftp://example.com:80/",
   0, 0, CURLUE_OK, CURLUE_OK},
  {"custom-scheme://host",
   "host=\"\",",
   "custom-scheme://host/",
   CURLU_NON_SUPPORT_SCHEME, CURLU_NON_SUPPORT_SCHEME, CURLUE_OK,
   CURLUE_MALFORMED_INPUT},
  {"custom-scheme://host",
   "host=\"\",",
   "custom-scheme:///",
   CURLU_NON_SUPPORT_SCHEME, CURLU_NON_SUPPORT_SCHEME | CURLU_NO_AUTHORITY,
   CURLUE_OK, CURLUE_OK},

  {NULL, NULL, NULL, 0, 0, 0, 0}
};

static CURLUPart part2id(char *part)
{
  if(!strcmp("url", part))
    return CURLUPART_URL;
Added jni/curl/tests/libtest/lib1907.c.












































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "test.h"

#include "testutil.h"
#include "warnless.h"
#include "memdebug.h"

int test(char *URL)
{
  char *url_after;
  CURL *curl;
  CURLcode curl_code;
  char error_buffer[CURL_ERROR_SIZE] = "";

  curl_global_init(CURL_GLOBAL_DEFAULT);
  curl = curl_easy_init();
  curl_easy_setopt(curl, CURLOPT_URL, URL);
  curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error_buffer);
  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
  curl_code = curl_easy_perform(curl);
  if(!curl_code)
    fprintf(stderr, "failure expected, "
            "curl_easy_perform returned %ld: <%s>, <%s>\n",
            (long) curl_code, curl_easy_strerror(curl_code), error_buffer);

  /* print the used url */
  if(!curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &url_after))
    printf("Effective URL: %s\n", url_after);

  curl_easy_cleanup(curl);
  curl_global_cleanup();

  return 0;
}
Changes to jni/curl/tests/libtest/lib506.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
138
139
140
141
142
143
144

145
146
147
148
149
150
151
    return NULL;
  }

  headers = sethost(NULL);
  curl_easy_setopt(curl, CURLOPT_VERBOSE,    1L);
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
  curl_easy_setopt(curl, CURLOPT_URL,        tdata->url);

  printf("CURLOPT_SHARE\n");
  curl_easy_setopt(curl, CURLOPT_SHARE, tdata->share);

  printf("PERFORM\n");
  code = curl_easy_perform(curl);
  if(code) {
    int i = 0;







>







138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
    return NULL;
  }

  headers = sethost(NULL);
  curl_easy_setopt(curl, CURLOPT_VERBOSE,    1L);
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
  curl_easy_setopt(curl, CURLOPT_URL,        tdata->url);
  curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");
  printf("CURLOPT_SHARE\n");
  curl_easy_setopt(curl, CURLOPT_SHARE, tdata->share);

  printf("PERFORM\n");
  code = curl_easy_perform(curl);
  if(code) {
    int i = 0;
Changes to jni/curl/tests/libtest/lib509.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/tests/libtest/lib541.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/tests/libtest/lib557.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/tests/libtest/lib569.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/tests/libtest/lib571.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Added jni/curl/tests/libtest/lib661.c.












































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "test.h"
#include "memdebug.h"

int test(char *URL)
{
   CURLcode res;
   CURL *curl = NULL;
   char *newURL = NULL;
   struct curl_slist *slist = NULL;

   if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
     fprintf(stderr, "curl_global_init() failed\n");
     return TEST_ERR_MAJOR_BAD;
   }

   curl = curl_easy_init();
   if(!curl) {
     fprintf(stderr, "curl_easy_init() failed\n");
     res = TEST_ERR_MAJOR_BAD;
     goto test_cleanup;
   }

   /* test: CURLFTPMETHOD_SINGLECWD with absolute path should
            skip CWD to entry path */
   newURL = aprintf("%s/folderA/661", URL);
   test_setopt(curl, CURLOPT_URL, newURL);
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
   test_setopt(curl, CURLOPT_IGNORE_CONTENT_LENGTH, 1L);
   test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_SINGLECWD);
   res = curl_easy_perform(curl);

   free(newURL);
   newURL = aprintf("%s/folderB/661", URL);
   test_setopt(curl, CURLOPT_URL, newURL);
   res = curl_easy_perform(curl);

   /* test: CURLFTPMETHOD_NOCWD with absolute path should
      never emit CWD (for both new and reused easy handle) */
   curl_easy_cleanup(curl);
   curl = curl_easy_init();
   if(!curl) {
     fprintf(stderr, "curl_easy_init() failed\n");
     res = TEST_ERR_MAJOR_BAD;
     goto test_cleanup;
   }

   free(newURL);
   newURL = aprintf("%s/folderA/661", URL);
   test_setopt(curl, CURLOPT_URL, newURL);
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
   test_setopt(curl, CURLOPT_IGNORE_CONTENT_LENGTH, 1L);
   test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_NOCWD);
   res = curl_easy_perform(curl);

   /* curve ball: CWD /folderB before reusing connection with _NOCWD */
   free(newURL);
   newURL = aprintf("%s/folderB/661", URL);
   test_setopt(curl, CURLOPT_URL, newURL);
   test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_SINGLECWD);
   res = curl_easy_perform(curl);

   free(newURL);
   newURL = aprintf("%s/folderA/661", URL);
   test_setopt(curl, CURLOPT_URL, newURL);
   test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_NOCWD);
   res = curl_easy_perform(curl);

   /* test: CURLFTPMETHOD_NOCWD with home-relative path should
      not emit CWD for first FTP access after login */
   curl_easy_cleanup(curl);
   curl = curl_easy_init();
   if(!curl) {
     fprintf(stderr, "curl_easy_init() failed\n");
     res = TEST_ERR_MAJOR_BAD;
     goto test_cleanup;
   }

   slist = curl_slist_append(NULL, "SYST");
   if(slist == NULL) {
     fprintf(stderr, "curl_slist_append() failed\n");
     res = TEST_ERR_MAJOR_BAD;
     goto test_cleanup;
   }

   test_setopt(curl, CURLOPT_URL, URL);
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
   test_setopt(curl, CURLOPT_NOBODY, 1L);
   test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_NOCWD);
   test_setopt(curl, CURLOPT_QUOTE, slist);
   res = curl_easy_perform(curl);

   /* test: CURLFTPMETHOD_SINGLECWD with home-relative path should
      not emit CWD for first FTP access after login */
   curl_easy_cleanup(curl);
   curl = curl_easy_init();
   if(!curl) {
     fprintf(stderr, "curl_easy_init() failed\n");
     res = TEST_ERR_MAJOR_BAD;
     goto test_cleanup;
   }

   test_setopt(curl, CURLOPT_URL, URL);
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
   test_setopt(curl, CURLOPT_NOBODY, 1L);
   test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_SINGLECWD);
   test_setopt(curl, CURLOPT_QUOTE, slist);
   res = curl_easy_perform(curl);

   /* test: CURLFTPMETHOD_NOCWD with home-relative path should
      not emit CWD for second FTP access when not needed +
      bonus: see if path buffering survives curl_easy_reset() */
   curl_easy_reset(curl);
   test_setopt(curl, CURLOPT_URL, URL);
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
   test_setopt(curl, CURLOPT_NOBODY, 1L);
   test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_NOCWD);
   test_setopt(curl, CURLOPT_QUOTE, slist);
   res = curl_easy_perform(curl);


test_cleanup:

   curl_slist_free_all(slist);
   free(newURL);
   curl_easy_cleanup(curl);
   curl_global_cleanup();

   return (int)res;
}
Changes to jni/curl/tests/manpage-scan.pl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2016, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is








|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl
#***************************************************************************
#                                  _   _ ____  _
#  Project                     ___| | | |  _ \| |
#                             / __| | | | |_) | |
#                            | (__| |_| |  _ <| |___
#                             \___|\___/|_| \_\_____|
#
# Copyright (C) 2016 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.haxx.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
134
135
136
137
138
139
140

141
142
143
144
145
146
147
148
149

150
151
152
153
154
155
156
my %opts = (
    # pretend these --no options exists in tool_getparam.c
    '--no-alpn' => 1,
    '--no-npn' => 1,
    '-N, --no-buffer' => 1,
    '--no-sessionid' => 1,
    '--no-keepalive' => 1,


    # pretend these options without -no exist in curl.1 and tool_help.c
    '--alpn' => 6,
    '--npn' => 6,
    '--eprt' => 6,
    '--epsv' => 6,
    '--keepalive' => 6,
    '-N, --buffer' => 6,
    '--sessionid' => 6,


    # deprecated options do not need to be in tool_help.c nor curl.1
    '--krb4' => 6,
    '--ftp-ssl' => 6,
    '--ftp-ssl-reqd' => 6,

    # for tests and debug only, can remain hidden







>









>







134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
my %opts = (
    # pretend these --no options exists in tool_getparam.c
    '--no-alpn' => 1,
    '--no-npn' => 1,
    '-N, --no-buffer' => 1,
    '--no-sessionid' => 1,
    '--no-keepalive' => 1,
    '--no-progress-meter' => 1,

    # pretend these options without -no exist in curl.1 and tool_help.c
    '--alpn' => 6,
    '--npn' => 6,
    '--eprt' => 6,
    '--epsv' => 6,
    '--keepalive' => 6,
    '-N, --buffer' => 6,
    '--sessionid' => 6,
    '--progress-meter' => 6,

    # deprecated options do not need to be in tool_help.c nor curl.1
    '--krb4' => 6,
    '--ftp-ssl' => 6,
    '--ftp-ssl-reqd' => 6,

    # for tests and debug only, can remain hidden
Changes to jni/curl/tests/runtests.1.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH runtests.pl 1 "May 05, 2017" "Curl 7.66.0" "runtests"

.SH NAME
runtests.pl \- run one or more test cases
.SH SYNOPSIS
.B runtests.pl [options] [test number] [!test number] [key word] [!key word]
.SH DESCRIPTION
\fIruntests.pl\fP runs one, several or all the existing test cases in curl's







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH runtests.pl 1 "May 05, 2017" "Curl 7.67.0" "runtests"

.SH NAME
runtests.pl \- run one or more test cases
.SH SYNOPSIS
.B runtests.pl [options] [test number] [!test number] [key word] [!key word]
.SH DESCRIPTION
\fIruntests.pl\fP runs one, several or all the existing test cases in curl's
Changes to jni/curl/tests/runtests.pl.
2674
2675
2676
2677
2678
2679
2680

2681
2682
2683
2684
2685
2686
2687
            if($curl =~ /linux|bsd|solaris/) {
                $has_ldpreload = 1;
            }
            if($curl =~ /win32|Windows|mingw(32|64)/) {
                # This is a Windows MinGW build or native build, we need to use
                # Win32-style path.
                $pwd = pathhelp::sys_native_current_path();

            }
           if ($libcurl =~ /(winssl|schannel)/i) {
               $has_winssl=1;
               $has_sslpinning=1;
           }
           elsif ($libcurl =~ /openssl/i) {
               $has_openssl=1;







>







2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
            if($curl =~ /linux|bsd|solaris/) {
                $has_ldpreload = 1;
            }
            if($curl =~ /win32|Windows|mingw(32|64)/) {
                # This is a Windows MinGW build or native build, we need to use
                # Win32-style path.
                $pwd = pathhelp::sys_native_current_path();
                $has_textaware = 1;
            }
           if ($libcurl =~ /(winssl|schannel)/i) {
               $has_winssl=1;
               $has_sslpinning=1;
           }
           elsif ($libcurl =~ /openssl/i) {
               $has_openssl=1;
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
        if($has_unix) {
            logmsg "* Unix socket paths:\n";
            if($http_unix) {
                logmsg sprintf("*   HTTP-Unix:%s\n", $HTTPUNIXPATH);
            }
        }
    }
    $has_textaware = ($^O eq 'MSWin32') || ($^O eq 'msys');

    logmsg "***************************************** \n";

    setupfeatures();
    # toggle off the features that were disabled in the build
    for my $d(@disabled) {
        $feature{$d} = 0;







<







3021
3022
3023
3024
3025
3026
3027

3028
3029
3030
3031
3032
3033
3034
        if($has_unix) {
            logmsg "* Unix socket paths:\n";
            if($http_unix) {
                logmsg sprintf("*   HTTP-Unix:%s\n", $HTTPUNIXPATH);
            }
        }
    }


    logmsg "***************************************** \n";

    setupfeatures();
    # toggle off the features that were disabled in the build
    for my $d(@disabled) {
        $feature{$d} = 0;
Changes to jni/curl/tests/server/util.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/tests/smbserver.py.
20
21
22
23
24
25
26
27
28
29
30
31




32
33
34
35
36
37
38
# KIND, either express or implied.
#
"""Server for testing SMB"""

from __future__ import (absolute_import, division, print_function)
# unicode_literals)
import argparse
import ConfigParser
import os
import sys
import logging
import tempfile





# Import our curl test data helper
import curl_test_data

# This saves us having to set up the PYTHONPATH explicitly
deps_dir = os.path.join(os.path.dirname(__file__), "python_dependencies")
sys.path.append(deps_dir)







<




>
>
>
>







20
21
22
23
24
25
26

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# KIND, either express or implied.
#
"""Server for testing SMB"""

from __future__ import (absolute_import, division, print_function)
# unicode_literals)
import argparse

import os
import sys
import logging
import tempfile
try: # Python 3
    import configparser
except ImportError: # Python 2
    import ConfigParser as configparser

# Import our curl test data helper
import curl_test_data

# This saves us having to set up the PYTHONPATH explicitly
deps_dir = os.path.join(os.path.dirname(__file__), "python_dependencies")
sys.path.append(deps_dir)
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
    """
    if options.pidfile:
        pid = os.getpid()
        with open(options.pidfile, "w") as f:
            f.write("{0}".format(pid))

    # Here we write a mini config for the server
    smb_config = ConfigParser.ConfigParser()
    smb_config.add_section("global")
    smb_config.set("global", "server_name", "SERVICE")
    smb_config.set("global", "server_os", "UNIX")
    smb_config.set("global", "server_domain", "WORKGROUP")
    smb_config.set("global", "log_file", "")
    smb_config.set("global", "credentials_file", "")








|







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
    """
    if options.pidfile:
        pid = os.getpid()
        with open(options.pidfile, "w") as f:
            f.write("{0}".format(pid))

    # Here we write a mini config for the server
    smb_config = configparser.ConfigParser()
    smb_config.add_section("global")
    smb_config.set("global", "server_name", "SERVICE")
    smb_config.set("global", "server_os", "UNIX")
    smb_config.set("global", "server_domain", "WORKGROUP")
    smb_config.set("global", "log_file", "")
    smb_config.set("global", "credentials_file", "")

jni/curl/tests/symbol-scan.pl became executable.
Changes to jni/curl/tests/testcurl.1.
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH testcurl.pl 1 "October 22, 2016" "Curl 7.66.0" "testcurl"

.SH NAME
testcurl.pl \- (automatically) test curl
.SH SYNOPSIS
.B testcurl.pl [options] [dir] > output
.SH DESCRIPTION
\fItestcurl.pl\fP is the master script to use for automatic testing of curl







|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH testcurl.pl 1 "October 22, 2016" "Curl 7.67.0" "testcurl"

.SH NAME
testcurl.pl \- (automatically) test curl
.SH SYNOPSIS
.B testcurl.pl [options] [dir] > output
.SH DESCRIPTION
\fItestcurl.pl\fP is the master script to use for automatic testing of curl
Changes to jni/curl/tests/unit/CMakeLists.txt.
18
19
20
21
22
23
24

25
26
27
28
29
30
31
  unit1398.c
  unit1600.c
  unit1601.c
  unit1603.c
# Broken link on Linux
#  unit1604.c
  unit1620.c

  )

set(UT_COMMON_FILES ../libtest/first.c ../libtest/test.h curlcheck.h)
include_directories(
  ${CURL_SOURCE_DIR}/lib          # To be able to reach "curl_setup_once.h"
  ${CURL_SOURCE_DIR}/tests/libtest
  ${CURL_SOURCE_DIR}/src







>







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  unit1398.c
  unit1600.c
  unit1601.c
  unit1603.c
# Broken link on Linux
#  unit1604.c
  unit1620.c
  unit1655.c
  )

set(UT_COMMON_FILES ../libtest/first.c ../libtest/test.h curlcheck.h)
include_directories(
  ${CURL_SOURCE_DIR}/lib          # To be able to reach "curl_setup_once.h"
  ${CURL_SOURCE_DIR}/tests/libtest
  ${CURL_SOURCE_DIR}/src
Changes to jni/curl/tests/unit/Makefile.in.
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
	unit1395$(EXEEXT) unit1396$(EXEEXT) unit1397$(EXEEXT) \
	unit1398$(EXEEXT) unit1399$(EXEEXT) unit1600$(EXEEXT) \
	unit1601$(EXEEXT) unit1602$(EXEEXT) unit1603$(EXEEXT) \
	unit1604$(EXEEXT) unit1605$(EXEEXT) unit1606$(EXEEXT) \
	unit1607$(EXEEXT) unit1608$(EXEEXT) unit1609$(EXEEXT) \
	unit1620$(EXEEXT) unit1621$(EXEEXT) unit1650$(EXEEXT) \
	unit1651$(EXEEXT) unit1652$(EXEEXT) unit1653$(EXEEXT) \
	unit1654$(EXEEXT)
PROGRAMS = $(noinst_PROGRAMS)
am__dirstamp = $(am__leading_dot)dirstamp
am__objects_1 = ../libtest/unit1300-first.$(OBJEXT)
am_unit1300_OBJECTS = unit1300-unit1300.$(OBJEXT) $(am__objects_1)
unit1300_OBJECTS = $(am_unit1300_OBJECTS)
unit1300_LDADD = $(LDADD)
unit1300_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \







|







125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
	unit1395$(EXEEXT) unit1396$(EXEEXT) unit1397$(EXEEXT) \
	unit1398$(EXEEXT) unit1399$(EXEEXT) unit1600$(EXEEXT) \
	unit1601$(EXEEXT) unit1602$(EXEEXT) unit1603$(EXEEXT) \
	unit1604$(EXEEXT) unit1605$(EXEEXT) unit1606$(EXEEXT) \
	unit1607$(EXEEXT) unit1608$(EXEEXT) unit1609$(EXEEXT) \
	unit1620$(EXEEXT) unit1621$(EXEEXT) unit1650$(EXEEXT) \
	unit1651$(EXEEXT) unit1652$(EXEEXT) unit1653$(EXEEXT) \
	unit1654$(EXEEXT) unit1655$(EXEEXT)
PROGRAMS = $(noinst_PROGRAMS)
am__dirstamp = $(am__leading_dot)dirstamp
am__objects_1 = ../libtest/unit1300-first.$(OBJEXT)
am_unit1300_OBJECTS = unit1300-unit1300.$(OBJEXT) $(am__objects_1)
unit1300_OBJECTS = $(am_unit1300_OBJECTS)
unit1300_LDADD = $(LDADD)
unit1300_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
336
337
338
339
340
341
342






343
344
345
346
347
348
349
	$(top_builddir)/lib/libcurlu.la
am__objects_34 = ../libtest/unit1654-first.$(OBJEXT)
am_unit1654_OBJECTS = unit1654-unit1654.$(OBJEXT) $(am__objects_34)
unit1654_OBJECTS = $(am_unit1654_OBJECTS)
unit1654_LDADD = $(LDADD)
unit1654_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
	$(top_builddir)/lib/libcurlu.la






AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo "  GEN     " $@;







>
>
>
>
>
>







336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
	$(top_builddir)/lib/libcurlu.la
am__objects_34 = ../libtest/unit1654-first.$(OBJEXT)
am_unit1654_OBJECTS = unit1654-unit1654.$(OBJEXT) $(am__objects_34)
unit1654_OBJECTS = $(am_unit1654_OBJECTS)
unit1654_LDADD = $(LDADD)
unit1654_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
	$(top_builddir)/lib/libcurlu.la
am__objects_35 = ../libtest/unit1655-first.$(OBJEXT)
am_unit1655_OBJECTS = unit1655-unit1655.$(OBJEXT) $(am__objects_35)
unit1655_OBJECTS = $(am_unit1655_OBJECTS)
unit1655_LDADD = $(LDADD)
unit1655_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
	$(top_builddir)/lib/libcurlu.la
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo "  GEN     " $@;
385
386
387
388
389
390
391

392
393
394
395
396
397
398
	../libtest/$(DEPDIR)/unit1620-first.Po \
	../libtest/$(DEPDIR)/unit1621-first.Po \
	../libtest/$(DEPDIR)/unit1650-first.Po \
	../libtest/$(DEPDIR)/unit1651-first.Po \
	../libtest/$(DEPDIR)/unit1652-first.Po \
	../libtest/$(DEPDIR)/unit1653-first.Po \
	../libtest/$(DEPDIR)/unit1654-first.Po \

	./$(DEPDIR)/unit1300-unit1300.Po \
	./$(DEPDIR)/unit1301-unit1301.Po \
	./$(DEPDIR)/unit1302-unit1302.Po \
	./$(DEPDIR)/unit1303-unit1303.Po \
	./$(DEPDIR)/unit1304-unit1304.Po \
	./$(DEPDIR)/unit1305-unit1305.Po \
	./$(DEPDIR)/unit1307-unit1307.Po \







>







391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
	../libtest/$(DEPDIR)/unit1620-first.Po \
	../libtest/$(DEPDIR)/unit1621-first.Po \
	../libtest/$(DEPDIR)/unit1650-first.Po \
	../libtest/$(DEPDIR)/unit1651-first.Po \
	../libtest/$(DEPDIR)/unit1652-first.Po \
	../libtest/$(DEPDIR)/unit1653-first.Po \
	../libtest/$(DEPDIR)/unit1654-first.Po \
	../libtest/$(DEPDIR)/unit1655-first.Po \
	./$(DEPDIR)/unit1300-unit1300.Po \
	./$(DEPDIR)/unit1301-unit1301.Po \
	./$(DEPDIR)/unit1302-unit1302.Po \
	./$(DEPDIR)/unit1303-unit1303.Po \
	./$(DEPDIR)/unit1304-unit1304.Po \
	./$(DEPDIR)/unit1305-unit1305.Po \
	./$(DEPDIR)/unit1307-unit1307.Po \
418
419
420
421
422
423
424
425

426
427
428
429
430
431
432
	./$(DEPDIR)/unit1609-unit1609.Po \
	./$(DEPDIR)/unit1620-unit1620.Po \
	./$(DEPDIR)/unit1621-unit1621.Po \
	./$(DEPDIR)/unit1650-unit1650.Po \
	./$(DEPDIR)/unit1651-unit1651.Po \
	./$(DEPDIR)/unit1652-unit1652.Po \
	./$(DEPDIR)/unit1653-unit1653.Po \
	./$(DEPDIR)/unit1654-unit1654.Po

am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
	$(AM_CFLAGS) $(CFLAGS)







|
>







425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
	./$(DEPDIR)/unit1609-unit1609.Po \
	./$(DEPDIR)/unit1620-unit1620.Po \
	./$(DEPDIR)/unit1621-unit1621.Po \
	./$(DEPDIR)/unit1650-unit1650.Po \
	./$(DEPDIR)/unit1651-unit1651.Po \
	./$(DEPDIR)/unit1652-unit1652.Po \
	./$(DEPDIR)/unit1653-unit1653.Po \
	./$(DEPDIR)/unit1654-unit1654.Po \
	./$(DEPDIR)/unit1655-unit1655.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
	$(AM_CFLAGS) $(CFLAGS)
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
	$(unit1395_SOURCES) $(unit1396_SOURCES) $(unit1397_SOURCES) \
	$(unit1398_SOURCES) $(unit1399_SOURCES) $(unit1600_SOURCES) \
	$(unit1601_SOURCES) $(unit1602_SOURCES) $(unit1603_SOURCES) \
	$(unit1604_SOURCES) $(unit1605_SOURCES) $(unit1606_SOURCES) \
	$(unit1607_SOURCES) $(unit1608_SOURCES) $(unit1609_SOURCES) \
	$(unit1620_SOURCES) $(unit1621_SOURCES) $(unit1650_SOURCES) \
	$(unit1651_SOURCES) $(unit1652_SOURCES) $(unit1653_SOURCES) \
	$(unit1654_SOURCES)
DIST_SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) \
	$(unit1302_SOURCES) $(unit1303_SOURCES) $(unit1304_SOURCES) \
	$(unit1305_SOURCES) $(unit1307_SOURCES) $(unit1308_SOURCES) \
	$(unit1309_SOURCES) $(unit1323_SOURCES) $(unit1330_SOURCES) \
	$(unit1394_SOURCES) $(unit1395_SOURCES) $(unit1396_SOURCES) \
	$(unit1397_SOURCES) $(unit1398_SOURCES) $(unit1399_SOURCES) \
	$(unit1600_SOURCES) $(unit1601_SOURCES) $(unit1602_SOURCES) \
	$(unit1603_SOURCES) $(unit1604_SOURCES) $(unit1605_SOURCES) \
	$(unit1606_SOURCES) $(unit1607_SOURCES) $(unit1608_SOURCES) \
	$(unit1609_SOURCES) $(unit1620_SOURCES) $(unit1621_SOURCES) \
	$(unit1650_SOURCES) $(unit1651_SOURCES) $(unit1652_SOURCES) \
	$(unit1653_SOURCES) $(unit1654_SOURCES)
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,







|











|







457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
	$(unit1395_SOURCES) $(unit1396_SOURCES) $(unit1397_SOURCES) \
	$(unit1398_SOURCES) $(unit1399_SOURCES) $(unit1600_SOURCES) \
	$(unit1601_SOURCES) $(unit1602_SOURCES) $(unit1603_SOURCES) \
	$(unit1604_SOURCES) $(unit1605_SOURCES) $(unit1606_SOURCES) \
	$(unit1607_SOURCES) $(unit1608_SOURCES) $(unit1609_SOURCES) \
	$(unit1620_SOURCES) $(unit1621_SOURCES) $(unit1650_SOURCES) \
	$(unit1651_SOURCES) $(unit1652_SOURCES) $(unit1653_SOURCES) \
	$(unit1654_SOURCES) $(unit1655_SOURCES)
DIST_SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) \
	$(unit1302_SOURCES) $(unit1303_SOURCES) $(unit1304_SOURCES) \
	$(unit1305_SOURCES) $(unit1307_SOURCES) $(unit1308_SOURCES) \
	$(unit1309_SOURCES) $(unit1323_SOURCES) $(unit1330_SOURCES) \
	$(unit1394_SOURCES) $(unit1395_SOURCES) $(unit1396_SOURCES) \
	$(unit1397_SOURCES) $(unit1398_SOURCES) $(unit1399_SOURCES) \
	$(unit1600_SOURCES) $(unit1601_SOURCES) $(unit1602_SOURCES) \
	$(unit1603_SOURCES) $(unit1604_SOURCES) $(unit1605_SOURCES) \
	$(unit1606_SOURCES) $(unit1607_SOURCES) $(unit1608_SOURCES) \
	$(unit1609_SOURCES) $(unit1620_SOURCES) $(unit1621_SOURCES) \
	$(unit1650_SOURCES) $(unit1651_SOURCES) $(unit1652_SOURCES) \
	$(unit1653_SOURCES) $(unit1654_SOURCES) $(unit1655_SOURCES)
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
# These are all unit test programs
UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
 unit1308 unit1309 unit1323 \
 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398 \
 unit1399 \
 unit1600 unit1601 unit1602 unit1603 unit1604 unit1605 unit1606 unit1607 \
 unit1608 unit1609 unit1620 unit1621 \
 unit1650 unit1651 unit1652 unit1653 unit1654

unit1300_SOURCES = unit1300.c $(UNITFILES)
unit1300_CPPFLAGS = $(AM_CPPFLAGS)
unit1301_SOURCES = unit1301.c $(UNITFILES)
unit1301_CPPFLAGS = $(AM_CPPFLAGS)
unit1302_SOURCES = unit1302.c $(UNITFILES)
unit1302_CPPFLAGS = $(AM_CPPFLAGS)







|







767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
# These are all unit test programs
UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
 unit1308 unit1309 unit1323 \
 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398 \
 unit1399 \
 unit1600 unit1601 unit1602 unit1603 unit1604 unit1605 unit1606 unit1607 \
 unit1608 unit1609 unit1620 unit1621 \
 unit1650 unit1651 unit1652 unit1653 unit1654 unit1655

unit1300_SOURCES = unit1300.c $(UNITFILES)
unit1300_CPPFLAGS = $(AM_CPPFLAGS)
unit1301_SOURCES = unit1301.c $(UNITFILES)
unit1301_CPPFLAGS = $(AM_CPPFLAGS)
unit1302_SOURCES = unit1302.c $(UNITFILES)
unit1302_CPPFLAGS = $(AM_CPPFLAGS)
833
834
835
836
837
838
839


840
841
842
843
844
845
846
unit1651_CPPFLAGS = $(AM_CPPFLAGS)
unit1652_SOURCES = unit1652.c $(UNITFILES)
unit1652_CPPFLAGS = $(AM_CPPFLAGS)
unit1653_SOURCES = unit1653.c $(UNITFILES)
unit1653_CPPFLAGS = $(AM_CPPFLAGS)
unit1654_SOURCES = unit1654.c $(UNITFILES)
unit1654_CPPFLAGS = $(AM_CPPFLAGS)



# Makefile.inc provides neat definitions
CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;
CS_1 = 
CS_ = $(CS_0)
all: all-am







>
>







841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
unit1651_CPPFLAGS = $(AM_CPPFLAGS)
unit1652_SOURCES = unit1652.c $(UNITFILES)
unit1652_CPPFLAGS = $(AM_CPPFLAGS)
unit1653_SOURCES = unit1653.c $(UNITFILES)
unit1653_CPPFLAGS = $(AM_CPPFLAGS)
unit1654_SOURCES = unit1654.c $(UNITFILES)
unit1654_CPPFLAGS = $(AM_CPPFLAGS)
unit1655_SOURCES = unit1655.c $(UNITFILES)
unit1655_CPPFLAGS = $(AM_CPPFLAGS)

# Makefile.inc provides neat definitions
CHECKSRC = $(CS_$(V))
CS_0 = @echo "  RUN     " $@;
CS_1 = 
CS_ = $(CS_0)
all: all-am
1092
1093
1094
1095
1096
1097
1098






1099
1100
1101
1102
1103
1104
1105
	$(AM_V_CCLD)$(LINK) $(unit1653_OBJECTS) $(unit1653_LDADD) $(LIBS)
../libtest/unit1654-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
	../libtest/$(DEPDIR)/$(am__dirstamp)

unit1654$(EXEEXT): $(unit1654_OBJECTS) $(unit1654_DEPENDENCIES) $(EXTRA_unit1654_DEPENDENCIES) 
	@rm -f unit1654$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(unit1654_OBJECTS) $(unit1654_LDADD) $(LIBS)







mostlyclean-compile:
	-rm -f *.$(OBJEXT)
	-rm -f ../libtest/*.$(OBJEXT)

distclean-compile:
	-rm -f *.tab.c







>
>
>
>
>
>







1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
	$(AM_V_CCLD)$(LINK) $(unit1653_OBJECTS) $(unit1653_LDADD) $(LIBS)
../libtest/unit1654-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
	../libtest/$(DEPDIR)/$(am__dirstamp)

unit1654$(EXEEXT): $(unit1654_OBJECTS) $(unit1654_DEPENDENCIES) $(EXTRA_unit1654_DEPENDENCIES) 
	@rm -f unit1654$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(unit1654_OBJECTS) $(unit1654_LDADD) $(LIBS)
../libtest/unit1655-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
	../libtest/$(DEPDIR)/$(am__dirstamp)

unit1655$(EXEEXT): $(unit1655_OBJECTS) $(unit1655_DEPENDENCIES) $(EXTRA_unit1655_DEPENDENCIES) 
	@rm -f unit1655$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(unit1655_OBJECTS) $(unit1655_LDADD) $(LIBS)

mostlyclean-compile:
	-rm -f *.$(OBJEXT)
	-rm -f ../libtest/*.$(OBJEXT)

distclean-compile:
	-rm -f *.tab.c
1134
1135
1136
1137
1138
1139
1140

1141
1142
1143
1144
1145
1146
1147
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1620-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1621-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1650-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1651-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1652-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1653-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1654-first.Po@am__quote@ # am--include-marker

@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1300-unit1300.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1301-unit1301.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1302-unit1302.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1303-unit1303.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1304-unit1304.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1305-unit1305.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1307-unit1307.Po@am__quote@ # am--include-marker







>







1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1620-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1621-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1650-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1651-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1652-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1653-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1654-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1655-first.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1300-unit1300.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1301-unit1301.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1302-unit1302.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1303-unit1303.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1304-unit1304.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1305-unit1305.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1307-unit1307.Po@am__quote@ # am--include-marker
1168
1169
1170
1171
1172
1173
1174

1175
1176
1177
1178
1179
1180
1181
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1620-unit1620.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1621-unit1621.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1650-unit1650.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1651-unit1651.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1652-unit1652.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1653-unit1653.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1654-unit1654.Po@am__quote@ # am--include-marker


$(am__depfiles_remade):
	@$(MKDIR_P) $(@D)
	@echo '# dummy' >$@-t && $(am__mv) $@-t $@

am--depfiles: $(am__depfiles_remade)








>







1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1620-unit1620.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1621-unit1621.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1650-unit1650.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1651-unit1651.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1652-unit1652.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1653-unit1653.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1654-unit1654.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1655-unit1655.Po@am__quote@ # am--include-marker

$(am__depfiles_remade):
	@$(MKDIR_P) $(@D)
	@echo '# dummy' >$@-t && $(am__mv) $@-t $@

am--depfiles: $(am__depfiles_remade)

2151
2152
2153
2154
2155
2156
2157




























2158
2159
2160
2161
2162
2163
2164
../libtest/unit1654-first.obj: ../libtest/first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1654-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1654-first.Tpo -c -o ../libtest/unit1654-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1654-first.Tpo ../libtest/$(DEPDIR)/unit1654-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1654-first.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1654-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`





























mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs

ID: $(am__tagged_files)







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
../libtest/unit1654-first.obj: ../libtest/first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1654-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1654-first.Tpo -c -o ../libtest/unit1654-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1654-first.Tpo ../libtest/$(DEPDIR)/unit1654-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1654-first.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1654-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`

unit1655-unit1655.o: unit1655.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1655-unit1655.o -MD -MP -MF $(DEPDIR)/unit1655-unit1655.Tpo -c -o unit1655-unit1655.o `test -f 'unit1655.c' || echo '$(srcdir)/'`unit1655.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/unit1655-unit1655.Tpo $(DEPDIR)/unit1655-unit1655.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='unit1655.c' object='unit1655-unit1655.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1655-unit1655.o `test -f 'unit1655.c' || echo '$(srcdir)/'`unit1655.c

unit1655-unit1655.obj: unit1655.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1655-unit1655.obj -MD -MP -MF $(DEPDIR)/unit1655-unit1655.Tpo -c -o unit1655-unit1655.obj `if test -f 'unit1655.c'; then $(CYGPATH_W) 'unit1655.c'; else $(CYGPATH_W) '$(srcdir)/unit1655.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/unit1655-unit1655.Tpo $(DEPDIR)/unit1655-unit1655.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='unit1655.c' object='unit1655-unit1655.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1655-unit1655.obj `if test -f 'unit1655.c'; then $(CYGPATH_W) 'unit1655.c'; else $(CYGPATH_W) '$(srcdir)/unit1655.c'; fi`

../libtest/unit1655-first.o: ../libtest/first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1655-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1655-first.Tpo -c -o ../libtest/unit1655-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1655-first.Tpo ../libtest/$(DEPDIR)/unit1655-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1655-first.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1655-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c

../libtest/unit1655-first.obj: ../libtest/first.c
@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1655-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1655-first.Tpo -c -o ../libtest/unit1655-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1655-first.Tpo ../libtest/$(DEPDIR)/unit1655-first.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1655-first.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1655-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs

ID: $(am__tagged_files)
2318
2319
2320
2321
2322
2323
2324

2325
2326
2327
2328
2329
2330
2331
	-rm -f ../libtest/$(DEPDIR)/unit1620-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1621-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1650-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1651-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1652-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1653-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1654-first.Po

	-rm -f ./$(DEPDIR)/unit1300-unit1300.Po
	-rm -f ./$(DEPDIR)/unit1301-unit1301.Po
	-rm -f ./$(DEPDIR)/unit1302-unit1302.Po
	-rm -f ./$(DEPDIR)/unit1303-unit1303.Po
	-rm -f ./$(DEPDIR)/unit1304-unit1304.Po
	-rm -f ./$(DEPDIR)/unit1305-unit1305.Po
	-rm -f ./$(DEPDIR)/unit1307-unit1307.Po







>







2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
	-rm -f ../libtest/$(DEPDIR)/unit1620-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1621-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1650-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1651-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1652-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1653-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1654-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1655-first.Po
	-rm -f ./$(DEPDIR)/unit1300-unit1300.Po
	-rm -f ./$(DEPDIR)/unit1301-unit1301.Po
	-rm -f ./$(DEPDIR)/unit1302-unit1302.Po
	-rm -f ./$(DEPDIR)/unit1303-unit1303.Po
	-rm -f ./$(DEPDIR)/unit1304-unit1304.Po
	-rm -f ./$(DEPDIR)/unit1305-unit1305.Po
	-rm -f ./$(DEPDIR)/unit1307-unit1307.Po
2352
2353
2354
2355
2356
2357
2358

2359
2360
2361
2362
2363
2364
2365
	-rm -f ./$(DEPDIR)/unit1620-unit1620.Po
	-rm -f ./$(DEPDIR)/unit1621-unit1621.Po
	-rm -f ./$(DEPDIR)/unit1650-unit1650.Po
	-rm -f ./$(DEPDIR)/unit1651-unit1651.Po
	-rm -f ./$(DEPDIR)/unit1652-unit1652.Po
	-rm -f ./$(DEPDIR)/unit1653-unit1653.Po
	-rm -f ./$(DEPDIR)/unit1654-unit1654.Po

	-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
	distclean-tags

dvi: dvi-am

dvi-am:







>







2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
	-rm -f ./$(DEPDIR)/unit1620-unit1620.Po
	-rm -f ./$(DEPDIR)/unit1621-unit1621.Po
	-rm -f ./$(DEPDIR)/unit1650-unit1650.Po
	-rm -f ./$(DEPDIR)/unit1651-unit1651.Po
	-rm -f ./$(DEPDIR)/unit1652-unit1652.Po
	-rm -f ./$(DEPDIR)/unit1653-unit1653.Po
	-rm -f ./$(DEPDIR)/unit1654-unit1654.Po
	-rm -f ./$(DEPDIR)/unit1655-unit1655.Po
	-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
	distclean-tags

dvi: dvi-am

dvi-am:
2431
2432
2433
2434
2435
2436
2437

2438
2439
2440
2441
2442
2443
2444
	-rm -f ../libtest/$(DEPDIR)/unit1620-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1621-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1650-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1651-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1652-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1653-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1654-first.Po

	-rm -f ./$(DEPDIR)/unit1300-unit1300.Po
	-rm -f ./$(DEPDIR)/unit1301-unit1301.Po
	-rm -f ./$(DEPDIR)/unit1302-unit1302.Po
	-rm -f ./$(DEPDIR)/unit1303-unit1303.Po
	-rm -f ./$(DEPDIR)/unit1304-unit1304.Po
	-rm -f ./$(DEPDIR)/unit1305-unit1305.Po
	-rm -f ./$(DEPDIR)/unit1307-unit1307.Po







>







2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
	-rm -f ../libtest/$(DEPDIR)/unit1620-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1621-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1650-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1651-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1652-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1653-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1654-first.Po
	-rm -f ../libtest/$(DEPDIR)/unit1655-first.Po
	-rm -f ./$(DEPDIR)/unit1300-unit1300.Po
	-rm -f ./$(DEPDIR)/unit1301-unit1301.Po
	-rm -f ./$(DEPDIR)/unit1302-unit1302.Po
	-rm -f ./$(DEPDIR)/unit1303-unit1303.Po
	-rm -f ./$(DEPDIR)/unit1304-unit1304.Po
	-rm -f ./$(DEPDIR)/unit1305-unit1305.Po
	-rm -f ./$(DEPDIR)/unit1307-unit1307.Po
2465
2466
2467
2468
2469
2470
2471

2472
2473
2474
2475
2476
2477
2478
	-rm -f ./$(DEPDIR)/unit1620-unit1620.Po
	-rm -f ./$(DEPDIR)/unit1621-unit1621.Po
	-rm -f ./$(DEPDIR)/unit1650-unit1650.Po
	-rm -f ./$(DEPDIR)/unit1651-unit1651.Po
	-rm -f ./$(DEPDIR)/unit1652-unit1652.Po
	-rm -f ./$(DEPDIR)/unit1653-unit1653.Po
	-rm -f ./$(DEPDIR)/unit1654-unit1654.Po

	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

mostlyclean: mostlyclean-am

mostlyclean-am: mostlyclean-compile mostlyclean-generic \
	mostlyclean-libtool







>







2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
	-rm -f ./$(DEPDIR)/unit1620-unit1620.Po
	-rm -f ./$(DEPDIR)/unit1621-unit1621.Po
	-rm -f ./$(DEPDIR)/unit1650-unit1650.Po
	-rm -f ./$(DEPDIR)/unit1651-unit1651.Po
	-rm -f ./$(DEPDIR)/unit1652-unit1652.Po
	-rm -f ./$(DEPDIR)/unit1653-unit1653.Po
	-rm -f ./$(DEPDIR)/unit1654-unit1654.Po
	-rm -f ./$(DEPDIR)/unit1655-unit1655.Po
	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

mostlyclean: mostlyclean-am

mostlyclean-am: mostlyclean-compile mostlyclean-generic \
	mostlyclean-libtool
Changes to jni/curl/tests/unit/Makefile.inc.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# these files are used in every single unit test program

UNITFILES = curlcheck.h \
 ../libtest/test.h \
 ../libtest/first.c

# These are all unit test programs
UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
 unit1308 unit1309 unit1323 \
 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398 \
 unit1399 \
 unit1600 unit1601 unit1602 unit1603 unit1604 unit1605 unit1606 unit1607 \
 unit1608 unit1609 unit1620 unit1621 \
 unit1650 unit1651 unit1652 unit1653 unit1654

unit1300_SOURCES = unit1300.c $(UNITFILES)
unit1300_CPPFLAGS = $(AM_CPPFLAGS)

unit1301_SOURCES = unit1301.c $(UNITFILES)
unit1301_CPPFLAGS = $(AM_CPPFLAGS)














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# these files are used in every single unit test program

UNITFILES = curlcheck.h \
 ../libtest/test.h \
 ../libtest/first.c

# These are all unit test programs
UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
 unit1308 unit1309 unit1323 \
 unit1330 unit1394 unit1395 unit1396 unit1397 unit1398 \
 unit1399 \
 unit1600 unit1601 unit1602 unit1603 unit1604 unit1605 unit1606 unit1607 \
 unit1608 unit1609 unit1620 unit1621 \
 unit1650 unit1651 unit1652 unit1653 unit1654 unit1655

unit1300_SOURCES = unit1300.c $(UNITFILES)
unit1300_CPPFLAGS = $(AM_CPPFLAGS)

unit1301_SOURCES = unit1301.c $(UNITFILES)
unit1301_CPPFLAGS = $(AM_CPPFLAGS)

114
115
116
117
118
119
120




unit1652_CPPFLAGS = $(AM_CPPFLAGS)

unit1653_SOURCES = unit1653.c $(UNITFILES)
unit1653_CPPFLAGS = $(AM_CPPFLAGS)

unit1654_SOURCES = unit1654.c $(UNITFILES)
unit1654_CPPFLAGS = $(AM_CPPFLAGS)











>
>
>
>
114
115
116
117
118
119
120
121
122
123
124
unit1652_CPPFLAGS = $(AM_CPPFLAGS)

unit1653_SOURCES = unit1653.c $(UNITFILES)
unit1653_CPPFLAGS = $(AM_CPPFLAGS)

unit1654_SOURCES = unit1654.c $(UNITFILES)
unit1654_CPPFLAGS = $(AM_CPPFLAGS)

unit1655_SOURCES = unit1655.c $(UNITFILES)
unit1655_CPPFLAGS = $(AM_CPPFLAGS)

Changes to jni/curl/tests/unit/README.
30
31
32
33
34
35
36



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

52
53
54
55
56
57
58

Write Unit Tests
================

We put tests that focus on an area or a specific function into a single C
source file. The source file should be named 'unitNNNN.c' where NNNN is a
number that starts with 1300 and you can pick the next free number.




You also need a separate file called tests/data/testNNNN (using the same
number) that describes your test case. See the test1300 file for inspiration
and the tests/FILEFORMAT documentation.

For the actual C file, here's a very simple example:

----------------------- start -------------------------------
#include "curlcheck.h"

#include "a libcurl header.h" /* from the lib dir */

static void unit_setup( void )
{
  /* whatever you want done first */

}

static void unit_stop( void )
{
  /* done before shutting down and exiting */
}








>
>
>












|


>







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

Write Unit Tests
================

We put tests that focus on an area or a specific function into a single C
source file. The source file should be named 'unitNNNN.c' where NNNN is a
number that starts with 1300 and you can pick the next free number.

Add your test to tests/unit/Makefile.inc (if it is a unit test).
Add your test data to tests/data/Makefile.inc

You also need a separate file called tests/data/testNNNN (using the same
number) that describes your test case. See the test1300 file for inspiration
and the tests/FILEFORMAT documentation.

For the actual C file, here's a very simple example:

----------------------- start -------------------------------
#include "curlcheck.h"

#include "a libcurl header.h" /* from the lib dir */

static CURLcode unit_setup( void )
{
  /* whatever you want done first */
  return CURLE_OK;
}

static void unit_stop( void )
{
  /* done before shutting down and exiting */
}

Changes to jni/curl/tests/unit/unit1303.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78

struct timetest {
  int now_s;
  int now_us;
  int timeout_ms;
  int connecttimeout_ms;
  bool connecting;
  time_t result;
  const char *comment;
};

UNITTEST_START
{
  struct curltime now;
  unsigned int i;







|







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78

struct timetest {
  int now_s;
  int now_us;
  int timeout_ms;
  int connecttimeout_ms;
  bool connecting;
  timediff_t result;
  const char *comment;
};

UNITTEST_START
{
  struct curltime now;
  unsigned int i;
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
  /* this is the pretended start time of the transfer */
  data->progress.t_startsingle.tv_sec = BASE;
  data->progress.t_startsingle.tv_usec = 0;
  data->progress.t_startop.tv_sec = BASE;
  data->progress.t_startop.tv_usec = 0;

  for(i = 0; i < sizeof(run)/sizeof(run[0]); i++) {
    time_t timeout;
    NOW(run[i].now_s, run[i].now_us);
    TIMEOUTS(run[i].timeout_ms, run[i].connecttimeout_ms);
    timeout =  Curl_timeleft(data, &now, run[i].connecting);
    if(timeout != run[i].result)
      fail(run[i].comment);
  }
}
UNITTEST_STOP







|








134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
  /* this is the pretended start time of the transfer */
  data->progress.t_startsingle.tv_sec = BASE;
  data->progress.t_startsingle.tv_usec = 0;
  data->progress.t_startop.tv_sec = BASE;
  data->progress.t_startop.tv_usec = 0;

  for(i = 0; i < sizeof(run)/sizeof(run[0]); i++) {
    timediff_t timeout;
    NOW(run[i].now_s, run[i].now_us);
    TIMEOUTS(run[i].timeout_ms, run[i].connecttimeout_ms);
    timeout =  Curl_timeleft(data, &now, run[i].connecting);
    if(timeout != run[i].result)
      fail(run[i].comment);
  }
}
UNITTEST_STOP
Changes to jni/curl/tests/unit/unit1307.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
Changes to jni/curl/tests/unit/unit1399.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
                                    int seconds_offset)
{
  Curl_pgrsTime(data, TIMER_STARTSINGLE);
  data->progress.t_startsingle.tv_sec = fake_now.tv_sec + seconds_offset;
  data->progress.t_startsingle.tv_usec = fake_now.tv_usec;
}

static bool usec_matches_seconds(time_t time_usec, int expected_seconds)
{
  int time_sec = (int)(time_usec / usec_magnitude);
  bool same = (time_sec == expected_seconds);
  fprintf(stderr, "is %d us same as %d seconds? %s\n",
          (int)time_usec, expected_seconds,
          same?"Yes":"No");
  return same;







|







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
                                    int seconds_offset)
{
  Curl_pgrsTime(data, TIMER_STARTSINGLE);
  data->progress.t_startsingle.tv_sec = fake_now.tv_sec + seconds_offset;
  data->progress.t_startsingle.tv_usec = fake_now.tv_usec;
}

static bool usec_matches_seconds(timediff_t time_usec, int expected_seconds)
{
  int time_sec = (int)(time_usec / usec_magnitude);
  bool same = (time_sec == expected_seconds);
  fprintf(stderr, "is %d us same as %d seconds? %s\n",
          (int)time_usec, expected_seconds,
          same?"Yes":"No");
  return same;
Changes to jni/curl/tests/unit/unit1620.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
79
80
81
82
83
84
85
86
87
88
89
90
  for(i = (enum dupstring)0; i < STRING_LAST; i++) {
    fail_unless(empty->set.str[i] == NULL,
                "Curl_free() did not set to NULL");
  }

  Curl_free_request_state(empty);

  rc = Curl_close(empty);
  fail_unless(rc == CURLE_OK, "Curl_close() failed");

}
UNITTEST_STOP







|




79
80
81
82
83
84
85
86
87
88
89
90
  for(i = (enum dupstring)0; i < STRING_LAST; i++) {
    fail_unless(empty->set.str[i] == NULL,
                "Curl_free() did not set to NULL");
  }

  Curl_free_request_state(empty);

  rc = Curl_close(&empty);
  fail_unless(rc == CURLE_OK, "Curl_close() failed");

}
UNITTEST_STOP
Changes to jni/curl/tests/unit/unit1654.c.
93
94
95
96
97
98
99









100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
                             ALPN_h2, "example.org", 80);
  if(result) {
    fprintf(stderr, "Curl_altsvc_parse(4) failed!\n");
    unitfail++;
  }
  fail_unless(asi->num == 9, "wrong number of entries");










  result = Curl_altsvc_parse(curl, asi,
                             "h2=\":443\", h3=\":443\"; ma = 120; persist = 1",
                             ALPN_h1, "curl.haxx.se", 80);
  if(result) {
    fprintf(stderr, "Curl_altsvc_parse(5) failed!\n");
    unitfail++;
  }
  fail_unless(asi->num == 11, "wrong number of entries");

  /* clear that one again and decrease the counter */
  result = Curl_altsvc_parse(curl, asi, "clear;",
                             ALPN_h1, "curl.haxx.se", 80);
  if(result) {
    fprintf(stderr, "Curl_altsvc_parse(6) failed!\n");
    unitfail++;
  }
  fail_unless(asi->num == 9, "wrong number of entries");

  Curl_altsvc_save(asi, outname);

  curl_easy_cleanup(curl);
  fail:
  Curl_altsvc_cleanup(asi);
  return unitfail;







>
>
>
>
>
>
>
>
>







|








|







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
                             ALPN_h2, "example.org", 80);
  if(result) {
    fprintf(stderr, "Curl_altsvc_parse(4) failed!\n");
    unitfail++;
  }
  fail_unless(asi->num == 9, "wrong number of entries");

  /* quoted 'ma' value */
  result = Curl_altsvc_parse(curl, asi, "h2=\"example.net:443\"; ma=\"180\";",
                             ALPN_h2, "example.net", 80);
  if(result) {
    fprintf(stderr, "Curl_altsvc_parse(4) failed!\n");
    unitfail++;
  }
  fail_unless(asi->num == 10, "wrong number of entries");

  result = Curl_altsvc_parse(curl, asi,
                             "h2=\":443\", h3=\":443\"; ma = 120; persist = 1",
                             ALPN_h1, "curl.haxx.se", 80);
  if(result) {
    fprintf(stderr, "Curl_altsvc_parse(5) failed!\n");
    unitfail++;
  }
  fail_unless(asi->num == 12, "wrong number of entries");

  /* clear that one again and decrease the counter */
  result = Curl_altsvc_parse(curl, asi, "clear;",
                             ALPN_h1, "curl.haxx.se", 80);
  if(result) {
    fprintf(stderr, "Curl_altsvc_parse(6) failed!\n");
    unitfail++;
  }
  fail_unless(asi->num == 10, "wrong number of entries");

  Curl_altsvc_save(asi, outname);

  curl_easy_cleanup(curl);
  fail:
  Curl_altsvc_cleanup(asi);
  return unitfail;
Added jni/curl/tests/unit/unit1655.c.


































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/***************************************************************************
 *                                  _   _ ____  _
 *  Project                     ___| | | |  _ \| |
 *                             / __| | | | |_) | |
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
 *
 * This software is licensed as described in the file COPYING, which
 * you should have received as part of this distribution. The terms
 * are also available at https://curl.haxx.se/docs/copyright.html.
 *
 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 * copies of the Software, and permit persons to whom the Software is
 * furnished to do so, under the terms of the COPYING file.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/
#include "curlcheck.h"

#include "doh.h" /* from the lib dir */

static CURLcode unit_setup(void)
{
  /* whatever you want done first */
  return CURLE_OK;
}

static void unit_stop(void)
{
    /* done before shutting down and exiting */
}

UNITTEST_START

/* introduce a scope and prove the corner case with write overflow,
 * so we can prove this test would detect it and that it is properly fixed
 */
do {
  const char *bad = "this.is.a.hostname.where.each.individual.part.is.within."
    "the.sixtythree.character.limit.but.still.long.enough.to."
    "trigger.the.the.buffer.overflow......it.is.chosen.to.be."
    "of.a.length.such.that.it.causes.a.two.byte.buffer......."
    "overwrite.....making.it.longer.causes.doh.encode.to....."
    ".return.early.so.dont.change.its.length.xxxx.xxxxxxxxxxx"
    "..xxxxxx.....xx..........xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    "xxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxx..x......xxxx"
    "xxxx..xxxxxxxxxxxxxxxxxxx.x...xxxx.x.x.x...xxxxx";

  /* plays the role of struct dnsprobe in urldata.h */
  struct demo {
    unsigned char dohbuffer[512];
    unsigned char canary1;
    unsigned char canary2;
    unsigned char canary3;
  };

  size_t olen = 100000;
  struct demo victim;
  DOHcode d;
  victim.canary1 = 87; /* magic numbers, arbritrarily picked */
  victim.canary2 = 35;
  victim.canary3 = 41;
  d = doh_encode(bad, DNS_TYPE_A, victim.dohbuffer,
                 sizeof(victim.dohbuffer), &olen);
  fail_unless(victim.canary1 == 87, "one byte buffer overwrite has happened");
  fail_unless(victim.canary2 == 35, "two byte buffer overwrite has happened");
  fail_unless(victim.canary3 == 41,
              "three byte buffer overwrite has happened");
  if(d == DOH_OK) {
    fail_unless(olen <= sizeof(victim.dohbuffer), "wrote outside bounds");
    fail_unless(olen > strlen(bad), "unrealistic low size");
  }
} while(0);

/* run normal cases and try to trigger buffer length related errors */
do {
  DNStype dnstype = DNS_TYPE_A;
  unsigned char buffer[128];
  const size_t buflen = sizeof(buffer);
  const size_t magic1 = 9765;
  size_t olen1 = magic1;
  const char *sunshine1 = "a.com";
  const char *sunshine2 = "aa.com";
  size_t olen2;
  DOHcode ret2;
  size_t olen;

  DOHcode ret = doh_encode(sunshine1, dnstype, buffer, buflen, &olen1);
  fail_unless(ret == DOH_OK, "sunshine case 1 should pass fine");
  fail_if(olen1 == magic1, "olen has not been assigned properly");
  fail_unless(olen1 > strlen(sunshine1), "bad out length");

  /* add one letter, the response should be one longer */
  olen2 = magic1;
  ret2 = doh_encode(sunshine2, dnstype, buffer, buflen, &olen2);
  fail_unless(ret2 == DOH_OK, "sunshine case 2 should pass fine");
  fail_if(olen2 == magic1, "olen has not been assigned properly");
  fail_unless(olen1 + 1 == olen2, "olen should grow with the hostname");

  /* pass a short buffer, should fail */
  ret = doh_encode(sunshine1, dnstype, buffer, olen1 - 1, &olen);
  fail_if(ret == DOH_OK, "short buffer should have been noticed");

  /* pass a minimum buffer, should succeed */
  ret = doh_encode(sunshine1, dnstype, buffer, olen1, &olen);
  fail_unless(ret == DOH_OK, "minimal length buffer should be long enough");
  fail_unless(olen == olen1, "bad buffer length");
} while(0);
UNITTEST_STOP
Changes to jni/curl/winbuild/Makefile.vc.
55
56
57
58
59
60
61

62
63
64
65
66
67
68
!MESSAGE   ENABLE_IDN=<yes or no>         - Enable use of Windows IDN APIs, defaults to yes
!MESSAGE                                    Requires Windows Vista or later
!MESSAGE   ENABLE_IPV6=<yes or no>        - Enable IPv6, defaults to yes
!MESSAGE   ENABLE_SSPI=<yes or no>        - Enable SSPI support, defaults to yes
!MESSAGE   ENABLE_WINSSL=<yes or no>      - Enable native Windows SSL support, defaults to yes
!MESSAGE   ENABLE_OPENSSL_AUTO_LOAD_CONFIG=<yes or no>
!MESSAGE                                  - Whether the OpenSSL configuration will be loaded automatically, defaults to yes

!MESSAGE   GEN_PDB=<yes or no>            - Generate Program Database (debug symbols for release build)
!MESSAGE   DEBUG=<yes or no>              - Debug builds
!MESSAGE   MACHINE=<x86 or x64>           - Target architecture (default x64 on AMD64, x86 on others)
!MESSAGE   CARES_PATH=<path to cares>     - Custom path for c-ares
!MESSAGE   MBEDTLS_PATH=<path to mbedTLS> - Custom path for mbedTLS
!MESSAGE   NGHTTP2_PATH=<path to HTTP/2>  - Custom path for nghttp2
!MESSAGE   SSH2_PATH=<path to libSSH2>    - Custom path for libSSH2







>







55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
!MESSAGE   ENABLE_IDN=<yes or no>         - Enable use of Windows IDN APIs, defaults to yes
!MESSAGE                                    Requires Windows Vista or later
!MESSAGE   ENABLE_IPV6=<yes or no>        - Enable IPv6, defaults to yes
!MESSAGE   ENABLE_SSPI=<yes or no>        - Enable SSPI support, defaults to yes
!MESSAGE   ENABLE_WINSSL=<yes or no>      - Enable native Windows SSL support, defaults to yes
!MESSAGE   ENABLE_OPENSSL_AUTO_LOAD_CONFIG=<yes or no>
!MESSAGE                                  - Whether the OpenSSL configuration will be loaded automatically, defaults to yes
!MESSAGE   ENABLE_UNICODE=<yes or no>     - Enable UNICODE support, defaults to no
!MESSAGE   GEN_PDB=<yes or no>            - Generate Program Database (debug symbols for release build)
!MESSAGE   DEBUG=<yes or no>              - Debug builds
!MESSAGE   MACHINE=<x86 or x64>           - Target architecture (default x64 on AMD64, x86 on others)
!MESSAGE   CARES_PATH=<path to cares>     - Custom path for c-ares
!MESSAGE   MBEDTLS_PATH=<path to mbedTLS> - Custom path for mbedTLS
!MESSAGE   NGHTTP2_PATH=<path to HTTP/2>  - Custom path for nghttp2
!MESSAGE   SSH2_PATH=<path to libSSH2>    - Custom path for libSSH2
141
142
143
144
145
146
147








148
149
150
151
152
153
154
!ELSEIF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="yes"
!UNDEF ENABLE_OPENSSL_AUTO_LOAD_CONFIG
ENABLE_OPENSSL_AUTO_LOAD_CONFIG = true
!ELSEIF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="no"
!UNDEF ENABLE_OPENSSL_AUTO_LOAD_CONFIG
ENABLE_OPENSSL_AUTO_LOAD_CONFIG = false
!ENDIF









CONFIG_NAME_LIB = libcurl

!IF "$(WITH_SSL)"=="dll"
USE_SSL = true
SSL     = dll
!ELSEIF "$(WITH_SSL)"=="static"







>
>
>
>
>
>
>
>







142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
!ELSEIF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="yes"
!UNDEF ENABLE_OPENSSL_AUTO_LOAD_CONFIG
ENABLE_OPENSSL_AUTO_LOAD_CONFIG = true
!ELSEIF "$(ENABLE_OPENSSL_AUTO_LOAD_CONFIG)"=="no"
!UNDEF ENABLE_OPENSSL_AUTO_LOAD_CONFIG
ENABLE_OPENSSL_AUTO_LOAD_CONFIG = false
!ENDIF

!IFNDEF ENABLE_UNICODE
USE_UNICODE = false
!ELSEIF "$(ENABLE_UNICODE)"=="yes"
USE_UNICODE = true
!ELSEIF "$(ENABLE_UNICODE)"=="no"
USE_UNICODE = false
!ENDIF

CONFIG_NAME_LIB = libcurl

!IF "$(WITH_SSL)"=="dll"
USE_SSL = true
SSL     = dll
!ELSEIF "$(WITH_SSL)"=="static"
273
274
275
276
277
278
279

280
281
282
283
284
285
286
287
288
289
290
	@SET CONFIG_NAME_LIB=$(CONFIG_NAME_LIB)
	@SET MACHINE=$(MACHINE)
	@SET USE_NGHTTP2=$(USE_NGHTTP2)
	@SET USE_IDN=$(USE_IDN)
	@SET USE_IPV6=$(USE_IPV6)
	@SET USE_SSPI=$(USE_SSPI)
	@SET USE_WINSSL=$(USE_WINSSL)

# compatibility bit
	@SET WITH_NGHTTP2=$(WITH_NGHTTP2)

	@$(MAKE) /NOLOGO /F MakefileBuild.vc

copy_from_lib:
	echo copying .c...
	FOR %%i IN ($(CURLX_CFILES:/=\)) DO copy %%i ..\src\

clean:
	$(MAKE) /NOLOGO /F MakefileBuild.vc $@







>











282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
	@SET CONFIG_NAME_LIB=$(CONFIG_NAME_LIB)
	@SET MACHINE=$(MACHINE)
	@SET USE_NGHTTP2=$(USE_NGHTTP2)
	@SET USE_IDN=$(USE_IDN)
	@SET USE_IPV6=$(USE_IPV6)
	@SET USE_SSPI=$(USE_SSPI)
	@SET USE_WINSSL=$(USE_WINSSL)
	@SET USE_UNICODE=$(USE_UNICODE)
# compatibility bit
	@SET WITH_NGHTTP2=$(WITH_NGHTTP2)

	@$(MAKE) /NOLOGO /F MakefileBuild.vc

copy_from_lib:
	echo copying .c...
	FOR %%i IN ($(CURLX_CFILES:/=\)) DO copy %%i ..\src\

clean:
	$(MAKE) /NOLOGO /F MakefileBuild.vc $@
Changes to jni/curl/winbuild/MakefileBuild.vc.
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407


# CURL_XX macros are for the curl.exe command

!IF "$(DEBUG)"=="yes"
RC_FLAGS = /dDEBUGBUILD=1 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
CURL_CC       = $(CC_DEBUG) $(RTLIB_DEBUG)
CURL_RC_FLAGS = /i../include /dDEBUGBUILD=1 /Fo $@ $(CURL_SRC_DIR)\curl.rc
!ELSE
RC_FLAGS = /dDEBUGBUILD=0 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
CURL_CC       = $(CC_NODEBUG) $(RTLIB)
CURL_RC_FLAGS = /i../include /dDEBUGBUILD=0 /Fo $@ $(CURL_SRC_DIR)\curl.rc
!ENDIF

!IF "$(AS_DLL)" == "true"

LNK       = $(LNKDLL) $(LFLAGS) $(WIN_LIBS) /out:$(LIB_DIROBJ)\$(TARGET)
!IF "$(DEBUG)"=="yes"
TARGET    = $(LIB_NAME_DLL_DEBUG)







|



|







389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407


# CURL_XX macros are for the curl.exe command

!IF "$(DEBUG)"=="yes"
RC_FLAGS = /dDEBUGBUILD=1 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
CURL_CC       = $(CC_DEBUG) $(RTLIB_DEBUG)
CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /dDEBUGBUILD=1 /Fo $@ $(CURL_SRC_DIR)\curl.rc
!ELSE
RC_FLAGS = /dDEBUGBUILD=0 /Fo $@ $(LIBCURL_SRC_DIR)\libcurl.rc
CURL_CC       = $(CC_NODEBUG) $(RTLIB)
CURL_RC_FLAGS = $(CURL_RC_FLAGS) /i../include /dDEBUGBUILD=0 /Fo $@ $(CURL_SRC_DIR)\curl.rc
!ENDIF

!IF "$(AS_DLL)" == "true"

LNK       = $(LNKDLL) $(LFLAGS) $(WIN_LIBS) /out:$(LIB_DIROBJ)\$(TARGET)
!IF "$(DEBUG)"=="yes"
TARGET    = $(LIB_NAME_DLL_DEBUG)
480
481
482
483
484
485
486




487
488
489
490
491
492
493
!ENDIF

!IF ( "$(USE_SSL)"=="true" && "$(USE_WINSSL)"=="true" ) \
 || ( "$(USE_SSL)"=="true" && "$(USE_MBEDTLS)"=="true" ) \
 || ( "$(USE_MBEDTLS)"=="true" && "$(USE_WINSSL)"=="true" )
CFLAGS = $(CFLAGS) /DCURL_WITH_MULTI_SSL
!ENDIF





LIB_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib
CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl

!IFDEF WITH_PREFIX
DIRDIST = $(WITH_PREFIX)
!ELSE







>
>
>
>







480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
!ENDIF

!IF ( "$(USE_SSL)"=="true" && "$(USE_WINSSL)"=="true" ) \
 || ( "$(USE_SSL)"=="true" && "$(USE_MBEDTLS)"=="true" ) \
 || ( "$(USE_MBEDTLS)"=="true" && "$(USE_WINSSL)"=="true" )
CFLAGS = $(CFLAGS) /DCURL_WITH_MULTI_SSL
!ENDIF

!IF "$(USE_UNICODE)"=="true"
CFLAGS = $(CFLAGS) /DUNICODE /D_UNICODE
!ENDIF

LIB_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-lib
CURL_DIROBJ = ..\builds\$(CONFIG_NAME_LIB)-obj-curl

!IFDEF WITH_PREFIX
DIRDIST = $(WITH_PREFIX)
!ELSE
555
556
557
558
559
560
561

562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579



580
581
582
583
584
585
586
	@if not exist "$(DIRDIST)\include\curl" mkdir $(DIRDIST)\include\curl
	@if not exist "$(DIRDIST)\lib" mkdir $(DIRDIST)\lib

$(LIB_DIROBJ):
	@if not exist "$(LIB_DIROBJ)" mkdir $(LIB_DIROBJ)
	@if not exist "$(LIB_DIROBJ)\vauth" mkdir $(LIB_DIROBJ)\vauth
	@if not exist "$(LIB_DIROBJ)\vtls" mkdir $(LIB_DIROBJ)\vtls

	@if not exist "$(LIB_DIROBJ)\vquic" mkdir $(LIB_DIROBJ)\vquic

$(CURL_DIROBJ):
	@if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)
# we need a lib dir for the portability functions from libcurl
# we use the .c directly here
	@if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)\lib

.SUFFIXES: .c .obj .res

{$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj:
	$(CURL_CC) $(CFLAGS) /Fo"$@"  $<

{$(LIBCURL_SRC_DIR)\vauth\}.c{$(LIB_DIROBJ)\vauth\}.obj:
	$(CURL_CC) $(CFLAGS) /Fo"$@"  $<

{$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj:
	$(CURL_CC) $(CFLAGS) /Fo"$@"  $<




{$(LIBCURL_SRC_DIR)\vquic\}.c{$(LIB_DIROBJ)\vquic\}.obj:
	$(CURL_CC) $(CFLAGS) /Fo"$@"  $<

$(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc
	$(RC) $(RC_FLAGS)








>


















>
>
>







559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
	@if not exist "$(DIRDIST)\include\curl" mkdir $(DIRDIST)\include\curl
	@if not exist "$(DIRDIST)\lib" mkdir $(DIRDIST)\lib

$(LIB_DIROBJ):
	@if not exist "$(LIB_DIROBJ)" mkdir $(LIB_DIROBJ)
	@if not exist "$(LIB_DIROBJ)\vauth" mkdir $(LIB_DIROBJ)\vauth
	@if not exist "$(LIB_DIROBJ)\vtls" mkdir $(LIB_DIROBJ)\vtls
	@if not exist "$(LIB_DIROBJ)\vssh" mkdir $(LIB_DIROBJ)\vssh
	@if not exist "$(LIB_DIROBJ)\vquic" mkdir $(LIB_DIROBJ)\vquic

$(CURL_DIROBJ):
	@if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)
# we need a lib dir for the portability functions from libcurl
# we use the .c directly here
	@if not exist "$(CURL_DIROBJ)" mkdir $(CURL_DIROBJ)\lib

.SUFFIXES: .c .obj .res

{$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj:
	$(CURL_CC) $(CFLAGS) /Fo"$@"  $<

{$(LIBCURL_SRC_DIR)\vauth\}.c{$(LIB_DIROBJ)\vauth\}.obj:
	$(CURL_CC) $(CFLAGS) /Fo"$@"  $<

{$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj:
	$(CURL_CC) $(CFLAGS) /Fo"$@"  $<

{$(LIBCURL_SRC_DIR)\vssh\}.c{$(LIB_DIROBJ)\vssh\}.obj:
	$(CURL_CC) $(CFLAGS) /Fo"$@"  $<

{$(LIBCURL_SRC_DIR)\vquic\}.c{$(LIB_DIROBJ)\vquic\}.obj:
	$(CURL_CC) $(CFLAGS) /Fo"$@"  $<

$(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc
	$(RC) $(RC_FLAGS)