1 /* vi:set ts=8 sts=4 sw=4: 2 * 3 * VIM - Vi IMproved by Bram Moolenaar 4 * 5 * Do ":help uganda" in Vim to read copying and usage conditions. 6 * Do ":help credits" in Vim to see a list of people who contributed. 7 * See README.txt for an overview of the Vim source code. 8 */ 9 10 #include "vim.h" 11 12 #ifdef AMIGA 13 # include <time.h> /* for time() */ 14 #endif 15 16 /* 17 * Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred) 18 * It has been changed beyond recognition since then. 19 * 20 * Differences between version 6.x and 7.x can be found with ":help version7". 21 * Differences between version 5.x and 6.x can be found with ":help version6". 22 * Differences between version 4.x and 5.x can be found with ":help version5". 23 * Differences between version 3.0 and 4.x can be found with ":help version4". 24 * All the remarks about older versions have been removed, they are not very 25 * interesting. 26 */ 27 28 #include "version.h" 29 30 char *Version = VIM_VERSION_SHORT; 31 static char *mediumVersion = VIM_VERSION_MEDIUM; 32 33 #if defined(HAVE_DATE_TIME) || defined(PROTO) 34 # if (defined(VMS) && defined(VAXC)) || defined(PROTO) 35 char longVersion[sizeof(VIM_VERSION_LONG_DATE) + sizeof(__DATE__) 36 + sizeof(__TIME__) + 3]; 37 38 void 39 make_version(void) 40 { 41 /* 42 * Construct the long version string. Necessary because 43 * VAX C can't catenate strings in the preprocessor. 44 */ 45 strcpy(longVersion, VIM_VERSION_LONG_DATE); 46 strcat(longVersion, __DATE__); 47 strcat(longVersion, " "); 48 strcat(longVersion, __TIME__); 49 strcat(longVersion, ")"); 50 } 51 # else 52 char *longVersion = VIM_VERSION_LONG_DATE __DATE__ " " __TIME__ ")"; 53 # endif 54 #else 55 char *longVersion = VIM_VERSION_LONG; 56 #endif 57 58 static void list_features(void); 59 static void version_msg(char *s); 60 61 static char *(features[]) = 62 { 63 #ifdef HAVE_ACL 64 "+acl", 65 #else 66 "-acl", 67 #endif 68 #ifdef AMIGA /* only for Amiga systems */ 69 # ifdef FEAT_ARP 70 "+ARP", 71 # else 72 "-ARP", 73 # endif 74 #endif 75 #ifdef FEAT_ARABIC 76 "+arabic", 77 #else 78 "-arabic", 79 #endif 80 #ifdef FEAT_AUTOCMD 81 "+autocmd", 82 #else 83 "-autocmd", 84 #endif 85 #ifdef FEAT_BEVAL 86 "+balloon_eval", 87 #else 88 "-balloon_eval", 89 #endif 90 #ifdef FEAT_BROWSE 91 "+browse", 92 #else 93 "-browse", 94 #endif 95 #ifdef NO_BUILTIN_TCAPS 96 "-builtin_terms", 97 #endif 98 #ifdef SOME_BUILTIN_TCAPS 99 "+builtin_terms", 100 #endif 101 #ifdef ALL_BUILTIN_TCAPS 102 "++builtin_terms", 103 #endif 104 #ifdef FEAT_BYTEOFF 105 "+byte_offset", 106 #else 107 "-byte_offset", 108 #endif 109 #ifdef FEAT_JOB_CHANNEL 110 "+channel", 111 #else 112 "-channel", 113 #endif 114 #ifdef FEAT_CINDENT 115 "+cindent", 116 #else 117 "-cindent", 118 #endif 119 #ifdef FEAT_CLIENTSERVER 120 "+clientserver", 121 #else 122 "-clientserver", 123 #endif 124 #ifdef FEAT_CLIPBOARD 125 "+clipboard", 126 #else 127 "-clipboard", 128 #endif 129 #ifdef FEAT_CMDL_COMPL 130 "+cmdline_compl", 131 #else 132 "-cmdline_compl", 133 #endif 134 #ifdef FEAT_CMDHIST 135 "+cmdline_hist", 136 #else 137 "-cmdline_hist", 138 #endif 139 #ifdef FEAT_CMDL_INFO 140 "+cmdline_info", 141 #else 142 "-cmdline_info", 143 #endif 144 #ifdef FEAT_COMMENTS 145 "+comments", 146 #else 147 "-comments", 148 #endif 149 #ifdef FEAT_CONCEAL 150 "+conceal", 151 #else 152 "-conceal", 153 #endif 154 #ifdef FEAT_CRYPT 155 "+cryptv", 156 #else 157 "-cryptv", 158 #endif 159 #ifdef FEAT_CSCOPE 160 "+cscope", 161 #else 162 "-cscope", 163 #endif 164 #ifdef FEAT_CURSORBIND 165 "+cursorbind", 166 #else 167 "-cursorbind", 168 #endif 169 #ifdef CURSOR_SHAPE 170 "+cursorshape", 171 #else 172 "-cursorshape", 173 #endif 174 #if defined(FEAT_CON_DIALOG) && defined(FEAT_GUI_DIALOG) 175 "+dialog_con_gui", 176 #else 177 # if defined(FEAT_CON_DIALOG) 178 "+dialog_con", 179 # else 180 # if defined(FEAT_GUI_DIALOG) 181 "+dialog_gui", 182 # else 183 "-dialog", 184 # endif 185 # endif 186 #endif 187 #ifdef FEAT_DIFF 188 "+diff", 189 #else 190 "-diff", 191 #endif 192 #ifdef FEAT_DIGRAPHS 193 "+digraphs", 194 #else 195 "-digraphs", 196 #endif 197 #ifdef FEAT_GUI_W32 198 # ifdef FEAT_DIRECTX 199 "+directx", 200 # else 201 "-directx", 202 # endif 203 #endif 204 #ifdef FEAT_DND 205 "+dnd", 206 #else 207 "-dnd", 208 #endif 209 #ifdef EBCDIC 210 "+ebcdic", 211 #else 212 "-ebcdic", 213 #endif 214 #ifdef FEAT_EMACS_TAGS 215 "+emacs_tags", 216 #else 217 "-emacs_tags", 218 #endif 219 #ifdef FEAT_EVAL 220 "+eval", 221 #else 222 "-eval", 223 #endif 224 "+ex_extra", 225 #ifdef FEAT_SEARCH_EXTRA 226 "+extra_search", 227 #else 228 "-extra_search", 229 #endif 230 #ifdef FEAT_FKMAP 231 "+farsi", 232 #else 233 "-farsi", 234 #endif 235 #ifdef FEAT_SEARCHPATH 236 "+file_in_path", 237 #else 238 "-file_in_path", 239 #endif 240 #ifdef FEAT_FIND_ID 241 "+find_in_path", 242 #else 243 "-find_in_path", 244 #endif 245 #ifdef FEAT_FLOAT 246 "+float", 247 #else 248 "-float", 249 #endif 250 #ifdef FEAT_FOLDING 251 "+folding", 252 #else 253 "-folding", 254 #endif 255 #ifdef FEAT_FOOTER 256 "+footer", 257 #else 258 "-footer", 259 #endif 260 /* only interesting on Unix systems */ 261 #if !defined(USE_SYSTEM) && defined(UNIX) 262 "+fork()", 263 #endif 264 #ifdef FEAT_GETTEXT 265 # ifdef DYNAMIC_GETTEXT 266 "+gettext/dyn", 267 # else 268 "+gettext", 269 # endif 270 #else 271 "-gettext", 272 #endif 273 #ifdef FEAT_HANGULIN 274 "+hangul_input", 275 #else 276 "-hangul_input", 277 #endif 278 #if (defined(HAVE_ICONV_H) && defined(USE_ICONV)) || defined(DYNAMIC_ICONV) 279 # ifdef DYNAMIC_ICONV 280 "+iconv/dyn", 281 # else 282 "+iconv", 283 # endif 284 #else 285 "-iconv", 286 #endif 287 #ifdef FEAT_INS_EXPAND 288 "+insert_expand", 289 #else 290 "-insert_expand", 291 #endif 292 #ifdef FEAT_JOB_CHANNEL 293 "+job", 294 #else 295 "-job", 296 #endif 297 #ifdef FEAT_JUMPLIST 298 "+jumplist", 299 #else 300 "-jumplist", 301 #endif 302 #ifdef FEAT_KEYMAP 303 "+keymap", 304 #else 305 "-keymap", 306 #endif 307 #ifdef FEAT_LANGMAP 308 "+langmap", 309 #else 310 "-langmap", 311 #endif 312 #ifdef FEAT_LIBCALL 313 "+libcall", 314 #else 315 "-libcall", 316 #endif 317 #ifdef FEAT_LINEBREAK 318 "+linebreak", 319 #else 320 "-linebreak", 321 #endif 322 #ifdef FEAT_LISP 323 "+lispindent", 324 #else 325 "-lispindent", 326 #endif 327 #ifdef FEAT_LISTCMDS 328 "+listcmds", 329 #else 330 "-listcmds", 331 #endif 332 #ifdef FEAT_LOCALMAP 333 "+localmap", 334 #else 335 "-localmap", 336 #endif 337 #ifdef FEAT_LUA 338 # ifdef DYNAMIC_LUA 339 "+lua/dyn", 340 # else 341 "+lua", 342 # endif 343 #else 344 "-lua", 345 #endif 346 #ifdef FEAT_MENU 347 "+menu", 348 #else 349 "-menu", 350 #endif 351 #ifdef FEAT_SESSION 352 "+mksession", 353 #else 354 "-mksession", 355 #endif 356 #ifdef FEAT_MODIFY_FNAME 357 "+modify_fname", 358 #else 359 "-modify_fname", 360 #endif 361 #ifdef FEAT_MOUSE 362 "+mouse", 363 # ifdef FEAT_MOUSESHAPE 364 "+mouseshape", 365 # else 366 "-mouseshape", 367 # endif 368 # else 369 "-mouse", 370 #endif 371 372 #if defined(UNIX) || defined(VMS) 373 # ifdef FEAT_MOUSE_DEC 374 "+mouse_dec", 375 # else 376 "-mouse_dec", 377 # endif 378 # ifdef FEAT_MOUSE_GPM 379 "+mouse_gpm", 380 # else 381 "-mouse_gpm", 382 # endif 383 # ifdef FEAT_MOUSE_JSB 384 "+mouse_jsbterm", 385 # else 386 "-mouse_jsbterm", 387 # endif 388 # ifdef FEAT_MOUSE_NET 389 "+mouse_netterm", 390 # else 391 "-mouse_netterm", 392 # endif 393 #endif 394 395 #ifdef __QNX__ 396 # ifdef FEAT_MOUSE_PTERM 397 "+mouse_pterm", 398 # else 399 "-mouse_pterm", 400 # endif 401 #endif 402 403 #if defined(UNIX) || defined(VMS) 404 # ifdef FEAT_MOUSE_SGR 405 "+mouse_sgr", 406 # else 407 "-mouse_sgr", 408 # endif 409 # ifdef FEAT_SYSMOUSE 410 "+mouse_sysmouse", 411 # else 412 "-mouse_sysmouse", 413 # endif 414 # ifdef FEAT_MOUSE_URXVT 415 "+mouse_urxvt", 416 # else 417 "-mouse_urxvt", 418 # endif 419 # ifdef FEAT_MOUSE_XTERM 420 "+mouse_xterm", 421 # else 422 "-mouse_xterm", 423 # endif 424 #endif 425 426 #ifdef FEAT_MBYTE_IME 427 # ifdef DYNAMIC_IME 428 "+multi_byte_ime/dyn", 429 # else 430 "+multi_byte_ime", 431 # endif 432 #else 433 # ifdef FEAT_MBYTE 434 "+multi_byte", 435 # else 436 "-multi_byte", 437 # endif 438 #endif 439 #ifdef FEAT_MULTI_LANG 440 "+multi_lang", 441 #else 442 "-multi_lang", 443 #endif 444 #ifdef FEAT_MZSCHEME 445 # ifdef DYNAMIC_MZSCHEME 446 "+mzscheme/dyn", 447 # else 448 "+mzscheme", 449 # endif 450 #else 451 "-mzscheme", 452 #endif 453 #ifdef FEAT_NETBEANS_INTG 454 "+netbeans_intg", 455 #else 456 "-netbeans_intg", 457 #endif 458 #ifdef FEAT_GUI_W32 459 # ifdef FEAT_OLE 460 "+ole", 461 # else 462 "-ole", 463 # endif 464 #endif 465 "+packages", 466 #ifdef FEAT_PATH_EXTRA 467 "+path_extra", 468 #else 469 "-path_extra", 470 #endif 471 #ifdef FEAT_PERL 472 # ifdef DYNAMIC_PERL 473 "+perl/dyn", 474 # else 475 "+perl", 476 # endif 477 #else 478 "-perl", 479 #endif 480 #ifdef FEAT_PERSISTENT_UNDO 481 "+persistent_undo", 482 #else 483 "-persistent_undo", 484 #endif 485 #ifdef FEAT_PRINTER 486 # ifdef FEAT_POSTSCRIPT 487 "+postscript", 488 # else 489 "-postscript", 490 # endif 491 "+printer", 492 #else 493 "-printer", 494 #endif 495 #ifdef FEAT_PROFILE 496 "+profile", 497 #else 498 "-profile", 499 #endif 500 #ifdef FEAT_PYTHON 501 # ifdef DYNAMIC_PYTHON 502 "+python/dyn", 503 # else 504 "+python", 505 # endif 506 #else 507 "-python", 508 #endif 509 #ifdef FEAT_PYTHON3 510 # ifdef DYNAMIC_PYTHON3 511 "+python3/dyn", 512 # else 513 "+python3", 514 # endif 515 #else 516 "-python3", 517 #endif 518 #ifdef FEAT_QUICKFIX 519 "+quickfix", 520 #else 521 "-quickfix", 522 #endif 523 #ifdef FEAT_RELTIME 524 "+reltime", 525 #else 526 "-reltime", 527 #endif 528 #ifdef FEAT_RIGHTLEFT 529 "+rightleft", 530 #else 531 "-rightleft", 532 #endif 533 #ifdef FEAT_RUBY 534 # ifdef DYNAMIC_RUBY 535 "+ruby/dyn", 536 # else 537 "+ruby", 538 # endif 539 #else 540 "-ruby", 541 #endif 542 #ifdef FEAT_SCROLLBIND 543 "+scrollbind", 544 #else 545 "-scrollbind", 546 #endif 547 #ifdef FEAT_SIGNS 548 "+signs", 549 #else 550 "-signs", 551 #endif 552 #ifdef FEAT_SMARTINDENT 553 "+smartindent", 554 #else 555 "-smartindent", 556 #endif 557 #ifdef STARTUPTIME 558 "+startuptime", 559 #else 560 "-startuptime", 561 #endif 562 #ifdef FEAT_STL_OPT 563 "+statusline", 564 #else 565 "-statusline", 566 #endif 567 #ifdef FEAT_SUN_WORKSHOP 568 "+sun_workshop", 569 #else 570 "-sun_workshop", 571 #endif 572 #ifdef FEAT_SYN_HL 573 "+syntax", 574 #else 575 "-syntax", 576 #endif 577 /* only interesting on Unix systems */ 578 #if defined(USE_SYSTEM) && (defined(UNIX) || defined(__EMX__)) 579 "+system()", 580 #endif 581 #ifdef FEAT_TAG_BINS 582 "+tag_binary", 583 #else 584 "-tag_binary", 585 #endif 586 #ifdef FEAT_TAG_OLDSTATIC 587 "+tag_old_static", 588 #else 589 "-tag_old_static", 590 #endif 591 #ifdef FEAT_TAG_ANYWHITE 592 "+tag_any_white", 593 #else 594 "-tag_any_white", 595 #endif 596 #ifdef FEAT_TCL 597 # ifdef DYNAMIC_TCL 598 "+tcl/dyn", 599 # else 600 "+tcl", 601 # endif 602 #else 603 "-tcl", 604 #endif 605 #ifdef FEAT_TERMGUICOLORS 606 "+termguicolors", 607 #else 608 "-termguicolors", 609 #endif 610 #if defined(UNIX) || defined(__EMX__) 611 /* only Unix (or OS/2 with EMX!) can have terminfo instead of termcap */ 612 # ifdef TERMINFO 613 "+terminfo", 614 # else 615 "-terminfo", 616 # endif 617 #else /* unix always includes termcap support */ 618 # ifdef HAVE_TGETENT 619 "+tgetent", 620 # else 621 "-tgetent", 622 # endif 623 #endif 624 #ifdef FEAT_TERMRESPONSE 625 "+termresponse", 626 #else 627 "-termresponse", 628 #endif 629 #ifdef FEAT_TEXTOBJ 630 "+textobjects", 631 #else 632 "-textobjects", 633 #endif 634 #ifdef FEAT_TIMERS 635 "+timers", 636 #else 637 "-timers", 638 #endif 639 #ifdef FEAT_TITLE 640 "+title", 641 #else 642 "-title", 643 #endif 644 #ifdef FEAT_TOOLBAR 645 "+toolbar", 646 #else 647 "-toolbar", 648 #endif 649 #ifdef FEAT_USR_CMDS 650 "+user_commands", 651 #else 652 "-user_commands", 653 #endif 654 #ifdef FEAT_WINDOWS 655 "+vertsplit", 656 #else 657 "-vertsplit", 658 #endif 659 #ifdef FEAT_VIRTUALEDIT 660 "+virtualedit", 661 #else 662 "-virtualedit", 663 #endif 664 "+visual", 665 #ifdef FEAT_VISUALEXTRA 666 "+visualextra", 667 #else 668 "-visualextra", 669 #endif 670 #ifdef FEAT_VIMINFO 671 "+viminfo", 672 #else 673 "-viminfo", 674 #endif 675 #ifdef FEAT_VREPLACE 676 "+vreplace", 677 #else 678 "-vreplace", 679 #endif 680 #ifdef FEAT_WILDIGN 681 "+wildignore", 682 #else 683 "-wildignore", 684 #endif 685 #ifdef FEAT_WILDMENU 686 "+wildmenu", 687 #else 688 "-wildmenu", 689 #endif 690 #ifdef FEAT_WINDOWS 691 "+windows", 692 #else 693 "-windows", 694 #endif 695 #ifdef FEAT_WRITEBACKUP 696 "+writebackup", 697 #else 698 "-writebackup", 699 #endif 700 #if defined(UNIX) || defined(VMS) 701 # ifdef FEAT_X11 702 "+X11", 703 # else 704 "-X11", 705 # endif 706 #endif 707 #ifdef FEAT_XFONTSET 708 "+xfontset", 709 #else 710 "-xfontset", 711 #endif 712 #ifdef FEAT_XIM 713 "+xim", 714 #else 715 "-xim", 716 #endif 717 #if defined(UNIX) || defined(VMS) 718 # ifdef USE_XSMP_INTERACT 719 "+xsmp_interact", 720 # else 721 # ifdef USE_XSMP 722 "+xsmp", 723 # else 724 "-xsmp", 725 # endif 726 # endif 727 # ifdef FEAT_XCLIPBOARD 728 "+xterm_clipboard", 729 # else 730 "-xterm_clipboard", 731 # endif 732 #endif 733 #ifdef FEAT_XTERM_SAVE 734 "+xterm_save", 735 #else 736 "-xterm_save", 737 #endif 738 #ifdef WIN3264 739 # ifdef FEAT_XPM_W32 740 "+xpm_w32", 741 # else 742 "-xpm_w32", 743 # endif 744 #else 745 # ifdef HAVE_XPM 746 "+xpm", 747 # else 748 "-xpm", 749 # endif 750 #endif 751 NULL 752 }; 753 754 static int included_patches[] = 755 { /* Add new patch number below this line */ 756 /**/ 757 1883, 758 /**/ 759 1882, 760 /**/ 761 1881, 762 /**/ 763 1880, 764 /**/ 765 1879, 766 /**/ 767 1878, 768 /**/ 769 1877, 770 /**/ 771 1876, 772 /**/ 773 1875, 774 /**/ 775 1874, 776 /**/ 777 1873, 778 /**/ 779 1872, 780 /**/ 781 1871, 782 /**/ 783 1870, 784 /**/ 785 1869, 786 /**/ 787 1868, 788 /**/ 789 1867, 790 /**/ 791 1866, 792 /**/ 793 1865, 794 /**/ 795 1864, 796 /**/ 797 1863, 798 /**/ 799 1862, 800 /**/ 801 1861, 802 /**/ 803 1860, 804 /**/ 805 1859, 806 /**/ 807 1858, 808 /**/ 809 1857, 810 /**/ 811 1856, 812 /**/ 813 1855, 814 /**/ 815 1854, 816 /**/ 817 1853, 818 /**/ 819 1852, 820 /**/ 821 1851, 822 /**/ 823 1850, 824 /**/ 825 1849, 826 /**/ 827 1848, 828 /**/ 829 1847, 830 /**/ 831 1846, 832 /**/ 833 1845, 834 /**/ 835 1844, 836 /**/ 837 1843, 838 /**/ 839 1842, 840 /**/ 841 1841, 842 /**/ 843 1840, 844 /**/ 845 1839, 846 /**/ 847 1838, 848 /**/ 849 1837, 850 /**/ 851 1836, 852 /**/ 853 1835, 854 /**/ 855 1834, 856 /**/ 857 1833, 858 /**/ 859 1832, 860 /**/ 861 1831, 862 /**/ 863 1830, 864 /**/ 865 1829, 866 /**/ 867 1828, 868 /**/ 869 1827, 870 /**/ 871 1826, 872 /**/ 873 1825, 874 /**/ 875 1824, 876 /**/ 877 1823, 878 /**/ 879 1822, 880 /**/ 881 1821, 882 /**/ 883 1820, 884 /**/ 885 1819, 886 /**/ 887 1818, 888 /**/ 889 1817, 890 /**/ 891 1816, 892 /**/ 893 1815, 894 /**/ 895 1814, 896 /**/ 897 1813, 898 /**/ 899 1812, 900 /**/ 901 1811, 902 /**/ 903 1810, 904 /**/ 905 1809, 906 /**/ 907 1808, 908 /**/ 909 1807, 910 /**/ 911 1806, 912 /**/ 913 1805, 914 /**/ 915 1804, 916 /**/ 917 1803, 918 /**/ 919 1802, 920 /**/ 921 1801, 922 /**/ 923 1800, 924 /**/ 925 1799, 926 /**/ 927 1798, 928 /**/ 929 1797, 930 /**/ 931 1796, 932 /**/ 933 1795, 934 /**/ 935 1794, 936 /**/ 937 1793, 938 /**/ 939 1792, 940 /**/ 941 1791, 942 /**/ 943 1790, 944 /**/ 945 1789, 946 /**/ 947 1788, 948 /**/ 949 1787, 950 /**/ 951 1786, 952 /**/ 953 1785, 954 /**/ 955 1784, 956 /**/ 957 1783, 958 /**/ 959 1782, 960 /**/ 961 1781, 962 /**/ 963 1780, 964 /**/ 965 1779, 966 /**/ 967 1778, 968 /**/ 969 1777, 970 /**/ 971 1776, 972 /**/ 973 1775, 974 /**/ 975 1774, 976 /**/ 977 1773, 978 /**/ 979 1772, 980 /**/ 981 1771, 982 /**/ 983 1770, 984 /**/ 985 1769, 986 /**/ 987 1768, 988 /**/ 989 1767, 990 /**/ 991 1766, 992 /**/ 993 1765, 994 /**/ 995 1764, 996 /**/ 997 1763, 998 /**/ 999 1762, 1000 /**/ 1001 1761, 1002 /**/ 1003 1760, 1004 /**/ 1005 1759, 1006 /**/ 1007 1758, 1008 /**/ 1009 1757, 1010 /**/ 1011 1756, 1012 /**/ 1013 1755, 1014 /**/ 1015 1754, 1016 /**/ 1017 1753, 1018 /**/ 1019 1752, 1020 /**/ 1021 1751, 1022 /**/ 1023 1750, 1024 /**/ 1025 1749, 1026 /**/ 1027 1748, 1028 /**/ 1029 1747, 1030 /**/ 1031 1746, 1032 /**/ 1033 1745, 1034 /**/ 1035 1744, 1036 /**/ 1037 1743, 1038 /**/ 1039 1742, 1040 /**/ 1041 1741, 1042 /**/ 1043 1740, 1044 /**/ 1045 1739, 1046 /**/ 1047 1738, 1048 /**/ 1049 1737, 1050 /**/ 1051 1736, 1052 /**/ 1053 1735, 1054 /**/ 1055 1734, 1056 /**/ 1057 1733, 1058 /**/ 1059 1732, 1060 /**/ 1061 1731, 1062 /**/ 1063 1730, 1064 /**/ 1065 1729, 1066 /**/ 1067 1728, 1068 /**/ 1069 1727, 1070 /**/ 1071 1726, 1072 /**/ 1073 1725, 1074 /**/ 1075 1724, 1076 /**/ 1077 1723, 1078 /**/ 1079 1722, 1080 /**/ 1081 1721, 1082 /**/ 1083 1720, 1084 /**/ 1085 1719, 1086 /**/ 1087 1718, 1088 /**/ 1089 1717, 1090 /**/ 1091 1716, 1092 /**/ 1093 1715, 1094 /**/ 1095 1714, 1096 /**/ 1097 1713, 1098 /**/ 1099 1712, 1100 /**/ 1101 1711, 1102 /**/ 1103 1710, 1104 /**/ 1105 1709, 1106 /**/ 1107 1708, 1108 /**/ 1109 1707, 1110 /**/ 1111 1706, 1112 /**/ 1113 1705, 1114 /**/ 1115 1704, 1116 /**/ 1117 1703, 1118 /**/ 1119 1702, 1120 /**/ 1121 1701, 1122 /**/ 1123 1700, 1124 /**/ 1125 1699, 1126 /**/ 1127 1698, 1128 /**/ 1129 1697, 1130 /**/ 1131 1696, 1132 /**/ 1133 1695, 1134 /**/ 1135 1694, 1136 /**/ 1137 1693, 1138 /**/ 1139 1692, 1140 /**/ 1141 1691, 1142 /**/ 1143 1690, 1144 /**/ 1145 1689, 1146 /**/ 1147 1688, 1148 /**/ 1149 1687, 1150 /**/ 1151 1686, 1152 /**/ 1153 1685, 1154 /**/ 1155 1684, 1156 /**/ 1157 1683, 1158 /**/ 1159 1682, 1160 /**/ 1161 1681, 1162 /**/ 1163 1680, 1164 /**/ 1165 1679, 1166 /**/ 1167 1678, 1168 /**/ 1169 1677, 1170 /**/ 1171 1676, 1172 /**/ 1173 1675, 1174 /**/ 1175 1674, 1176 /**/ 1177 1673, 1178 /**/ 1179 1672, 1180 /**/ 1181 1671, 1182 /**/ 1183 1670, 1184 /**/ 1185 1669, 1186 /**/ 1187 1668, 1188 /**/ 1189 1667, 1190 /**/ 1191 1666, 1192 /**/ 1193 1665, 1194 /**/ 1195 1664, 1196 /**/ 1197 1663, 1198 /**/ 1199 1662, 1200 /**/ 1201 1661, 1202 /**/ 1203 1660, 1204 /**/ 1205 1659, 1206 /**/ 1207 1658, 1208 /**/ 1209 1657, 1210 /**/ 1211 1656, 1212 /**/ 1213 1655, 1214 /**/ 1215 1654, 1216 /**/ 1217 1653, 1218 /**/ 1219 1652, 1220 /**/ 1221 1651, 1222 /**/ 1223 1650, 1224 /**/ 1225 1649, 1226 /**/ 1227 1648, 1228 /**/ 1229 1647, 1230 /**/ 1231 1646, 1232 /**/ 1233 1645, 1234 /**/ 1235 1644, 1236 /**/ 1237 1643, 1238 /**/ 1239 1642, 1240 /**/ 1241 1641, 1242 /**/ 1243 1640, 1244 /**/ 1245 1639, 1246 /**/ 1247 1638, 1248 /**/ 1249 1637, 1250 /**/ 1251 1636, 1252 /**/ 1253 1635, 1254 /**/ 1255 1634, 1256 /**/ 1257 1633, 1258 /**/ 1259 1632, 1260 /**/ 1261 1631, 1262 /**/ 1263 1630, 1264 /**/ 1265 1629, 1266 /**/ 1267 1628, 1268 /**/ 1269 1627, 1270 /**/ 1271 1626, 1272 /**/ 1273 1625, 1274 /**/ 1275 1624, 1276 /**/ 1277 1623, 1278 /**/ 1279 1622, 1280 /**/ 1281 1621, 1282 /**/ 1283 1620, 1284 /**/ 1285 1619, 1286 /**/ 1287 1618, 1288 /**/ 1289 1617, 1290 /**/ 1291 1616, 1292 /**/ 1293 1615, 1294 /**/ 1295 1614, 1296 /**/ 1297 1613, 1298 /**/ 1299 1612, 1300 /**/ 1301 1611, 1302 /**/ 1303 1610, 1304 /**/ 1305 1609, 1306 /**/ 1307 1608, 1308 /**/ 1309 1607, 1310 /**/ 1311 1606, 1312 /**/ 1313 1605, 1314 /**/ 1315 1604, 1316 /**/ 1317 1603, 1318 /**/ 1319 1602, 1320 /**/ 1321 1601, 1322 /**/ 1323 1600, 1324 /**/ 1325 1599, 1326 /**/ 1327 1598, 1328 /**/ 1329 1597, 1330 /**/ 1331 1596, 1332 /**/ 1333 1595, 1334 /**/ 1335 1594, 1336 /**/ 1337 1593, 1338 /**/ 1339 1592, 1340 /**/ 1341 1591, 1342 /**/ 1343 1590, 1344 /**/ 1345 1589, 1346 /**/ 1347 1588, 1348 /**/ 1349 1587, 1350 /**/ 1351 1586, 1352 /**/ 1353 1585, 1354 /**/ 1355 1584, 1356 /**/ 1357 1583, 1358 /**/ 1359 1582, 1360 /**/ 1361 1581, 1362 /**/ 1363 1580, 1364 /**/ 1365 1579, 1366 /**/ 1367 1578, 1368 /**/ 1369 1577, 1370 /**/ 1371 1576, 1372 /**/ 1373 1575, 1374 /**/ 1375 1574, 1376 /**/ 1377 1573, 1378 /**/ 1379 1572, 1380 /**/ 1381 1571, 1382 /**/ 1383 1570, 1384 /**/ 1385 1569, 1386 /**/ 1387 1568, 1388 /**/ 1389 1567, 1390 /**/ 1391 1566, 1392 /**/ 1393 1565, 1394 /**/ 1395 1564, 1396 /**/ 1397 1563, 1398 /**/ 1399 1562, 1400 /**/ 1401 1561, 1402 /**/ 1403 1560, 1404 /**/ 1405 1559, 1406 /**/ 1407 1558, 1408 /**/ 1409 1557, 1410 /**/ 1411 1556, 1412 /**/ 1413 1555, 1414 /**/ 1415 1554, 1416 /**/ 1417 1553, 1418 /**/ 1419 1552, 1420 /**/ 1421 1551, 1422 /**/ 1423 1550, 1424 /**/ 1425 1549, 1426 /**/ 1427 1548, 1428 /**/ 1429 1547, 1430 /**/ 1431 1546, 1432 /**/ 1433 1545, 1434 /**/ 1435 1544, 1436 /**/ 1437 1543, 1438 /**/ 1439 1542, 1440 /**/ 1441 1541, 1442 /**/ 1443 1540, 1444 /**/ 1445 1539, 1446 /**/ 1447 1538, 1448 /**/ 1449 1537, 1450 /**/ 1451 1536, 1452 /**/ 1453 1535, 1454 /**/ 1455 1534, 1456 /**/ 1457 1533, 1458 /**/ 1459 1532, 1460 /**/ 1461 1531, 1462 /**/ 1463 1530, 1464 /**/ 1465 1529, 1466 /**/ 1467 1528, 1468 /**/ 1469 1527, 1470 /**/ 1471 1526, 1472 /**/ 1473 1525, 1474 /**/ 1475 1524, 1476 /**/ 1477 1523, 1478 /**/ 1479 1522, 1480 /**/ 1481 1521, 1482 /**/ 1483 1520, 1484 /**/ 1485 1519, 1486 /**/ 1487 1518, 1488 /**/ 1489 1517, 1490 /**/ 1491 1516, 1492 /**/ 1493 1515, 1494 /**/ 1495 1514, 1496 /**/ 1497 1513, 1498 /**/ 1499 1512, 1500 /**/ 1501 1511, 1502 /**/ 1503 1510, 1504 /**/ 1505 1509, 1506 /**/ 1507 1508, 1508 /**/ 1509 1507, 1510 /**/ 1511 1506, 1512 /**/ 1513 1505, 1514 /**/ 1515 1504, 1516 /**/ 1517 1503, 1518 /**/ 1519 1502, 1520 /**/ 1521 1501, 1522 /**/ 1523 1500, 1524 /**/ 1525 1499, 1526 /**/ 1527 1498, 1528 /**/ 1529 1497, 1530 /**/ 1531 1496, 1532 /**/ 1533 1495, 1534 /**/ 1535 1494, 1536 /**/ 1537 1493, 1538 /**/ 1539 1492, 1540 /**/ 1541 1491, 1542 /**/ 1543 1490, 1544 /**/ 1545 1489, 1546 /**/ 1547 1488, 1548 /**/ 1549 1487, 1550 /**/ 1551 1486, 1552 /**/ 1553 1485, 1554 /**/ 1555 1484, 1556 /**/ 1557 1483, 1558 /**/ 1559 1482, 1560 /**/ 1561 1481, 1562 /**/ 1563 1480, 1564 /**/ 1565 1479, 1566 /**/ 1567 1478, 1568 /**/ 1569 1477, 1570 /**/ 1571 1476, 1572 /**/ 1573 1475, 1574 /**/ 1575 1474, 1576 /**/ 1577 1473, 1578 /**/ 1579 1472, 1580 /**/ 1581 1471, 1582 /**/ 1583 1470, 1584 /**/ 1585 1469, 1586 /**/ 1587 1468, 1588 /**/ 1589 1467, 1590 /**/ 1591 1466, 1592 /**/ 1593 1465, 1594 /**/ 1595 1464, 1596 /**/ 1597 1463, 1598 /**/ 1599 1462, 1600 /**/ 1601 1461, 1602 /**/ 1603 1460, 1604 /**/ 1605 1459, 1606 /**/ 1607 1458, 1608 /**/ 1609 1457, 1610 /**/ 1611 1456, 1612 /**/ 1613 1455, 1614 /**/ 1615 1454, 1616 /**/ 1617 1453, 1618 /**/ 1619 1452, 1620 /**/ 1621 1451, 1622 /**/ 1623 1450, 1624 /**/ 1625 1449, 1626 /**/ 1627 1448, 1628 /**/ 1629 1447, 1630 /**/ 1631 1446, 1632 /**/ 1633 1445, 1634 /**/ 1635 1444, 1636 /**/ 1637 1443, 1638 /**/ 1639 1442, 1640 /**/ 1641 1441, 1642 /**/ 1643 1440, 1644 /**/ 1645 1439, 1646 /**/ 1647 1438, 1648 /**/ 1649 1437, 1650 /**/ 1651 1436, 1652 /**/ 1653 1435, 1654 /**/ 1655 1434, 1656 /**/ 1657 1433, 1658 /**/ 1659 1432, 1660 /**/ 1661 1431, 1662 /**/ 1663 1430, 1664 /**/ 1665 1429, 1666 /**/ 1667 1428, 1668 /**/ 1669 1427, 1670 /**/ 1671 1426, 1672 /**/ 1673 1425, 1674 /**/ 1675 1424, 1676 /**/ 1677 1423, 1678 /**/ 1679 1422, 1680 /**/ 1681 1421, 1682 /**/ 1683 1420, 1684 /**/ 1685 1419, 1686 /**/ 1687 1418, 1688 /**/ 1689 1417, 1690 /**/ 1691 1416, 1692 /**/ 1693 1415, 1694 /**/ 1695 1414, 1696 /**/ 1697 1413, 1698 /**/ 1699 1412, 1700 /**/ 1701 1411, 1702 /**/ 1703 1410, 1704 /**/ 1705 1409, 1706 /**/ 1707 1408, 1708 /**/ 1709 1407, 1710 /**/ 1711 1406, 1712 /**/ 1713 1405, 1714 /**/ 1715 1404, 1716 /**/ 1717 1403, 1718 /**/ 1719 1402, 1720 /**/ 1721 1401, 1722 /**/ 1723 1400, 1724 /**/ 1725 1399, 1726 /**/ 1727 1398, 1728 /**/ 1729 1397, 1730 /**/ 1731 1396, 1732 /**/ 1733 1395, 1734 /**/ 1735 1394, 1736 /**/ 1737 1393, 1738 /**/ 1739 1392, 1740 /**/ 1741 1391, 1742 /**/ 1743 1390, 1744 /**/ 1745 1389, 1746 /**/ 1747 1388, 1748 /**/ 1749 1387, 1750 /**/ 1751 1386, 1752 /**/ 1753 1385, 1754 /**/ 1755 1384, 1756 /**/ 1757 1383, 1758 /**/ 1759 1382, 1760 /**/ 1761 1381, 1762 /**/ 1763 1380, 1764 /**/ 1765 1379, 1766 /**/ 1767 1378, 1768 /**/ 1769 1377, 1770 /**/ 1771 1376, 1772 /**/ 1773 1375, 1774 /**/ 1775 1374, 1776 /**/ 1777 1373, 1778 /**/ 1779 1372, 1780 /**/ 1781 1371, 1782 /**/ 1783 1370, 1784 /**/ 1785 1369, 1786 /**/ 1787 1368, 1788 /**/ 1789 1367, 1790 /**/ 1791 1366, 1792 /**/ 1793 1365, 1794 /**/ 1795 1364, 1796 /**/ 1797 1363, 1798 /**/ 1799 1362, 1800 /**/ 1801 1361, 1802 /**/ 1803 1360, 1804 /**/ 1805 1359, 1806 /**/ 1807 1358, 1808 /**/ 1809 1357, 1810 /**/ 1811 1356, 1812 /**/ 1813 1355, 1814 /**/ 1815 1354, 1816 /**/ 1817 1353, 1818 /**/ 1819 1352, 1820 /**/ 1821 1351, 1822 /**/ 1823 1350, 1824 /**/ 1825 1349, 1826 /**/ 1827 1348, 1828 /**/ 1829 1347, 1830 /**/ 1831 1346, 1832 /**/ 1833 1345, 1834 /**/ 1835 1344, 1836 /**/ 1837 1343, 1838 /**/ 1839 1342, 1840 /**/ 1841 1341, 1842 /**/ 1843 1340, 1844 /**/ 1845 1339, 1846 /**/ 1847 1338, 1848 /**/ 1849 1337, 1850 /**/ 1851 1336, 1852 /**/ 1853 1335, 1854 /**/ 1855 1334, 1856 /**/ 1857 1333, 1858 /**/ 1859 1332, 1860 /**/ 1861 1331, 1862 /**/ 1863 1330, 1864 /**/ 1865 1329, 1866 /**/ 1867 1328, 1868 /**/ 1869 1327, 1870 /**/ 1871 1326, 1872 /**/ 1873 1325, 1874 /**/ 1875 1324, 1876 /**/ 1877 1323, 1878 /**/ 1879 1322, 1880 /**/ 1881 1321, 1882 /**/ 1883 1320, 1884 /**/ 1885 1319, 1886 /**/ 1887 1318, 1888 /**/ 1889 1317, 1890 /**/ 1891 1316, 1892 /**/ 1893 1315, 1894 /**/ 1895 1314, 1896 /**/ 1897 1313, 1898 /**/ 1899 1312, 1900 /**/ 1901 1311, 1902 /**/ 1903 1310, 1904 /**/ 1905 1309, 1906 /**/ 1907 1308, 1908 /**/ 1909 1307, 1910 /**/ 1911 1306, 1912 /**/ 1913 1305, 1914 /**/ 1915 1304, 1916 /**/ 1917 1303, 1918 /**/ 1919 1302, 1920 /**/ 1921 1301, 1922 /**/ 1923 1300, 1924 /**/ 1925 1299, 1926 /**/ 1927 1298, 1928 /**/ 1929 1297, 1930 /**/ 1931 1296, 1932 /**/ 1933 1295, 1934 /**/ 1935 1294, 1936 /**/ 1937 1293, 1938 /**/ 1939 1292, 1940 /**/ 1941 1291, 1942 /**/ 1943 1290, 1944 /**/ 1945 1289, 1946 /**/ 1947 1288, 1948 /**/ 1949 1287, 1950 /**/ 1951 1286, 1952 /**/ 1953 1285, 1954 /**/ 1955 1284, 1956 /**/ 1957 1283, 1958 /**/ 1959 1282, 1960 /**/ 1961 1281, 1962 /**/ 1963 1280, 1964 /**/ 1965 1279, 1966 /**/ 1967 1278, 1968 /**/ 1969 1277, 1970 /**/ 1971 1276, 1972 /**/ 1973 1275, 1974 /**/ 1975 1274, 1976 /**/ 1977 1273, 1978 /**/ 1979 1272, 1980 /**/ 1981 1271, 1982 /**/ 1983 1270, 1984 /**/ 1985 1269, 1986 /**/ 1987 1268, 1988 /**/ 1989 1267, 1990 /**/ 1991 1266, 1992 /**/ 1993 1265, 1994 /**/ 1995 1264, 1996 /**/ 1997 1263, 1998 /**/ 1999 1262, 2000 /**/ 2001 1261, 2002 /**/ 2003 1260, 2004 /**/ 2005 1259, 2006 /**/ 2007 1258, 2008 /**/ 2009 1257, 2010 /**/ 2011 1256, 2012 /**/ 2013 1255, 2014 /**/ 2015 1254, 2016 /**/ 2017 1253, 2018 /**/ 2019 1252, 2020 /**/ 2021 1251, 2022 /**/ 2023 1250, 2024 /**/ 2025 1249, 2026 /**/ 2027 1248, 2028 /**/ 2029 1247, 2030 /**/ 2031 1246, 2032 /**/ 2033 1245, 2034 /**/ 2035 1244, 2036 /**/ 2037 1243, 2038 /**/ 2039 1242, 2040 /**/ 2041 1241, 2042 /**/ 2043 1240, 2044 /**/ 2045 1239, 2046 /**/ 2047 1238, 2048 /**/ 2049 1237, 2050 /**/ 2051 1236, 2052 /**/ 2053 1235, 2054 /**/ 2055 1234, 2056 /**/ 2057 1233, 2058 /**/ 2059 1232, 2060 /**/ 2061 1231, 2062 /**/ 2063 1230, 2064 /**/ 2065 1229, 2066 /**/ 2067 1228, 2068 /**/ 2069 1227, 2070 /**/ 2071 1226, 2072 /**/ 2073 1225, 2074 /**/ 2075 1224, 2076 /**/ 2077 1223, 2078 /**/ 2079 1222, 2080 /**/ 2081 1221, 2082 /**/ 2083 1220, 2084 /**/ 2085 1219, 2086 /**/ 2087 1218, 2088 /**/ 2089 1217, 2090 /**/ 2091 1216, 2092 /**/ 2093 1215, 2094 /**/ 2095 1214, 2096 /**/ 2097 1213, 2098 /**/ 2099 1212, 2100 /**/ 2101 1211, 2102 /**/ 2103 1210, 2104 /**/ 2105 1209, 2106 /**/ 2107 1208, 2108 /**/ 2109 1207, 2110 /**/ 2111 1206, 2112 /**/ 2113 1205, 2114 /**/ 2115 1204, 2116 /**/ 2117 1203, 2118 /**/ 2119 1202, 2120 /**/ 2121 1201, 2122 /**/ 2123 1200, 2124 /**/ 2125 1199, 2126 /**/ 2127 1198, 2128 /**/ 2129 1197, 2130 /**/ 2131 1196, 2132 /**/ 2133 1195, 2134 /**/ 2135 1194, 2136 /**/ 2137 1193, 2138 /**/ 2139 1192, 2140 /**/ 2141 1191, 2142 /**/ 2143 1190, 2144 /**/ 2145 1189, 2146 /**/ 2147 1188, 2148 /**/ 2149 1187, 2150 /**/ 2151 1186, 2152 /**/ 2153 1185, 2154 /**/ 2155 1184, 2156 /**/ 2157 1183, 2158 /**/ 2159 1182, 2160 /**/ 2161 1181, 2162 /**/ 2163 1180, 2164 /**/ 2165 1179, 2166 /**/ 2167 1178, 2168 /**/ 2169 1177, 2170 /**/ 2171 1176, 2172 /**/ 2173 1175, 2174 /**/ 2175 1174, 2176 /**/ 2177 1173, 2178 /**/ 2179 1172, 2180 /**/ 2181 1171, 2182 /**/ 2183 1170, 2184 /**/ 2185 1169, 2186 /**/ 2187 1168, 2188 /**/ 2189 1167, 2190 /**/ 2191 1166, 2192 /**/ 2193 1165, 2194 /**/ 2195 1164, 2196 /**/ 2197 1163, 2198 /**/ 2199 1162, 2200 /**/ 2201 1161, 2202 /**/ 2203 1160, 2204 /**/ 2205 1159, 2206 /**/ 2207 1158, 2208 /**/ 2209 1157, 2210 /**/ 2211 1156, 2212 /**/ 2213 1155, 2214 /**/ 2215 1154, 2216 /**/ 2217 1153, 2218 /**/ 2219 1152, 2220 /**/ 2221 1151, 2222 /**/ 2223 1150, 2224 /**/ 2225 1149, 2226 /**/ 2227 1148, 2228 /**/ 2229 1147, 2230 /**/ 2231 1146, 2232 /**/ 2233 1145, 2234 /**/ 2235 1144, 2236 /**/ 2237 1143, 2238 /**/ 2239 1142, 2240 /**/ 2241 1141, 2242 /**/ 2243 1140, 2244 /**/ 2245 1139, 2246 /**/ 2247 1138, 2248 /**/ 2249 1137, 2250 /**/ 2251 1136, 2252 /**/ 2253 1135, 2254 /**/ 2255 1134, 2256 /**/ 2257 1133, 2258 /**/ 2259 1132, 2260 /**/ 2261 1131, 2262 /**/ 2263 1130, 2264 /**/ 2265 1129, 2266 /**/ 2267 1128, 2268 /**/ 2269 1127, 2270 /**/ 2271 1126, 2272 /**/ 2273 1125, 2274 /**/ 2275 1124, 2276 /**/ 2277 1123, 2278 /**/ 2279 1122, 2280 /**/ 2281 1121, 2282 /**/ 2283 1120, 2284 /**/ 2285 1119, 2286 /**/ 2287 1118, 2288 /**/ 2289 1117, 2290 /**/ 2291 1116, 2292 /**/ 2293 1115, 2294 /**/ 2295 1114, 2296 /**/ 2297 1113, 2298 /**/ 2299 1112, 2300 /**/ 2301 1111, 2302 /**/ 2303 1110, 2304 /**/ 2305 1109, 2306 /**/ 2307 1108, 2308 /**/ 2309 1107, 2310 /**/ 2311 1106, 2312 /**/ 2313 1105, 2314 /**/ 2315 1104, 2316 /**/ 2317 1103, 2318 /**/ 2319 1102, 2320 /**/ 2321 1101, 2322 /**/ 2323 1100, 2324 /**/ 2325 1099, 2326 /**/ 2327 1098, 2328 /**/ 2329 1097, 2330 /**/ 2331 1096, 2332 /**/ 2333 1095, 2334 /**/ 2335 1094, 2336 /**/ 2337 1093, 2338 /**/ 2339 1092, 2340 /**/ 2341 1091, 2342 /**/ 2343 1090, 2344 /**/ 2345 1089, 2346 /**/ 2347 1088, 2348 /**/ 2349 1087, 2350 /**/ 2351 1086, 2352 /**/ 2353 1085, 2354 /**/ 2355 1084, 2356 /**/ 2357 1083, 2358 /**/ 2359 1082, 2360 /**/ 2361 1081, 2362 /**/ 2363 1080, 2364 /**/ 2365 1079, 2366 /**/ 2367 1078, 2368 /**/ 2369 1077, 2370 /**/ 2371 1076, 2372 /**/ 2373 1075, 2374 /**/ 2375 1074, 2376 /**/ 2377 1073, 2378 /**/ 2379 1072, 2380 /**/ 2381 1071, 2382 /**/ 2383 1070, 2384 /**/ 2385 1069, 2386 /**/ 2387 1068, 2388 /**/ 2389 1067, 2390 /**/ 2391 1066, 2392 /**/ 2393 1065, 2394 /**/ 2395 1064, 2396 /**/ 2397 1063, 2398 /**/ 2399 1062, 2400 /**/ 2401 1061, 2402 /**/ 2403 1060, 2404 /**/ 2405 1059, 2406 /**/ 2407 1058, 2408 /**/ 2409 1057, 2410 /**/ 2411 1056, 2412 /**/ 2413 1055, 2414 /**/ 2415 1054, 2416 /**/ 2417 1053, 2418 /**/ 2419 1052, 2420 /**/ 2421 1051, 2422 /**/ 2423 1050, 2424 /**/ 2425 1049, 2426 /**/ 2427 1048, 2428 /**/ 2429 1047, 2430 /**/ 2431 1046, 2432 /**/ 2433 1045, 2434 /**/ 2435 1044, 2436 /**/ 2437 1043, 2438 /**/ 2439 1042, 2440 /**/ 2441 1041, 2442 /**/ 2443 1040, 2444 /**/ 2445 1039, 2446 /**/ 2447 1038, 2448 /**/ 2449 1037, 2450 /**/ 2451 1036, 2452 /**/ 2453 1035, 2454 /**/ 2455 1034, 2456 /**/ 2457 1033, 2458 /**/ 2459 1032, 2460 /**/ 2461 1031, 2462 /**/ 2463 1030, 2464 /**/ 2465 1029, 2466 /**/ 2467 1028, 2468 /**/ 2469 1027, 2470 /**/ 2471 1026, 2472 /**/ 2473 1025, 2474 /**/ 2475 1024, 2476 /**/ 2477 1023, 2478 /**/ 2479 1022, 2480 /**/ 2481 1021, 2482 /**/ 2483 1020, 2484 /**/ 2485 1019, 2486 /**/ 2487 1018, 2488 /**/ 2489 1017, 2490 /**/ 2491 1016, 2492 /**/ 2493 1015, 2494 /**/ 2495 1014, 2496 /**/ 2497 1013, 2498 /**/ 2499 1012, 2500 /**/ 2501 1011, 2502 /**/ 2503 1010, 2504 /**/ 2505 1009, 2506 /**/ 2507 1008, 2508 /**/ 2509 1007, 2510 /**/ 2511 1006, 2512 /**/ 2513 1005, 2514 /**/ 2515 1004, 2516 /**/ 2517 1003, 2518 /**/ 2519 1002, 2520 /**/ 2521 1001, 2522 /**/ 2523 1000, 2524 /**/ 2525 999, 2526 /**/ 2527 998, 2528 /**/ 2529 997, 2530 /**/ 2531 996, 2532 /**/ 2533 995, 2534 /**/ 2535 994, 2536 /**/ 2537 993, 2538 /**/ 2539 992, 2540 /**/ 2541 991, 2542 /**/ 2543 990, 2544 /**/ 2545 989, 2546 /**/ 2547 988, 2548 /**/ 2549 987, 2550 /**/ 2551 986, 2552 /**/ 2553 985, 2554 /**/ 2555 984, 2556 /**/ 2557 983, 2558 /**/ 2559 982, 2560 /**/ 2561 981, 2562 /**/ 2563 980, 2564 /**/ 2565 979, 2566 /**/ 2567 978, 2568 /**/ 2569 977, 2570 /**/ 2571 976, 2572 /**/ 2573 975, 2574 /**/ 2575 974, 2576 /**/ 2577 973, 2578 /**/ 2579 972, 2580 /**/ 2581 971, 2582 /**/ 2583 970, 2584 /**/ 2585 969, 2586 /**/ 2587 968, 2588 /**/ 2589 967, 2590 /**/ 2591 966, 2592 /**/ 2593 965, 2594 /**/ 2595 964, 2596 /**/ 2597 963, 2598 /**/ 2599 962, 2600 /**/ 2601 961, 2602 /**/ 2603 960, 2604 /**/ 2605 959, 2606 /**/ 2607 958, 2608 /**/ 2609 957, 2610 /**/ 2611 956, 2612 /**/ 2613 955, 2614 /**/ 2615 954, 2616 /**/ 2617 953, 2618 /**/ 2619 952, 2620 /**/ 2621 951, 2622 /**/ 2623 950, 2624 /**/ 2625 949, 2626 /**/ 2627 948, 2628 /**/ 2629 947, 2630 /**/ 2631 946, 2632 /**/ 2633 945, 2634 /**/ 2635 944, 2636 /**/ 2637 943, 2638 /**/ 2639 942, 2640 /**/ 2641 941, 2642 /**/ 2643 940, 2644 /**/ 2645 939, 2646 /**/ 2647 938, 2648 /**/ 2649 937, 2650 /**/ 2651 936, 2652 /**/ 2653 935, 2654 /**/ 2655 934, 2656 /**/ 2657 933, 2658 /**/ 2659 932, 2660 /**/ 2661 931, 2662 /**/ 2663 930, 2664 /**/ 2665 929, 2666 /**/ 2667 928, 2668 /**/ 2669 927, 2670 /**/ 2671 926, 2672 /**/ 2673 925, 2674 /**/ 2675 924, 2676 /**/ 2677 923, 2678 /**/ 2679 922, 2680 /**/ 2681 921, 2682 /**/ 2683 920, 2684 /**/ 2685 919, 2686 /**/ 2687 918, 2688 /**/ 2689 917, 2690 /**/ 2691 916, 2692 /**/ 2693 915, 2694 /**/ 2695 914, 2696 /**/ 2697 913, 2698 /**/ 2699 912, 2700 /**/ 2701 911, 2702 /**/ 2703 910, 2704 /**/ 2705 909, 2706 /**/ 2707 908, 2708 /**/ 2709 907, 2710 /**/ 2711 906, 2712 /**/ 2713 905, 2714 /**/ 2715 904, 2716 /**/ 2717 903, 2718 /**/ 2719 902, 2720 /**/ 2721 901, 2722 /**/ 2723 900, 2724 /**/ 2725 899, 2726 /**/ 2727 898, 2728 /**/ 2729 897, 2730 /**/ 2731 896, 2732 /**/ 2733 895, 2734 /**/ 2735 894, 2736 /**/ 2737 893, 2738 /**/ 2739 892, 2740 /**/ 2741 891, 2742 /**/ 2743 890, 2744 /**/ 2745 889, 2746 /**/ 2747 888, 2748 /**/ 2749 887, 2750 /**/ 2751 886, 2752 /**/ 2753 885, 2754 /**/ 2755 884, 2756 /**/ 2757 883, 2758 /**/ 2759 882, 2760 /**/ 2761 881, 2762 /**/ 2763 880, 2764 /**/ 2765 879, 2766 /**/ 2767 878, 2768 /**/ 2769 877, 2770 /**/ 2771 876, 2772 /**/ 2773 875, 2774 /**/ 2775 874, 2776 /**/ 2777 873, 2778 /**/ 2779 872, 2780 /**/ 2781 871, 2782 /**/ 2783 870, 2784 /**/ 2785 869, 2786 /**/ 2787 868, 2788 /**/ 2789 867, 2790 /**/ 2791 866, 2792 /**/ 2793 865, 2794 /**/ 2795 864, 2796 /**/ 2797 863, 2798 /**/ 2799 862, 2800 /**/ 2801 861, 2802 /**/ 2803 860, 2804 /**/ 2805 859, 2806 /**/ 2807 858, 2808 /**/ 2809 857, 2810 /**/ 2811 856, 2812 /**/ 2813 855, 2814 /**/ 2815 854, 2816 /**/ 2817 853, 2818 /**/ 2819 852, 2820 /**/ 2821 851, 2822 /**/ 2823 850, 2824 /**/ 2825 849, 2826 /**/ 2827 848, 2828 /**/ 2829 847, 2830 /**/ 2831 846, 2832 /**/ 2833 845, 2834 /**/ 2835 844, 2836 /**/ 2837 843, 2838 /**/ 2839 842, 2840 /**/ 2841 841, 2842 /**/ 2843 840, 2844 /**/ 2845 839, 2846 /**/ 2847 838, 2848 /**/ 2849 837, 2850 /**/ 2851 836, 2852 /**/ 2853 835, 2854 /**/ 2855 834, 2856 /**/ 2857 833, 2858 /**/ 2859 832, 2860 /**/ 2861 831, 2862 /**/ 2863 830, 2864 /**/ 2865 829, 2866 /**/ 2867 828, 2868 /**/ 2869 827, 2870 /**/ 2871 826, 2872 /**/ 2873 825, 2874 /**/ 2875 824, 2876 /**/ 2877 823, 2878 /**/ 2879 822, 2880 /**/ 2881 821, 2882 /**/ 2883 820, 2884 /**/ 2885 819, 2886 /**/ 2887 818, 2888 /**/ 2889 817, 2890 /**/ 2891 816, 2892 /**/ 2893 815, 2894 /**/ 2895 814, 2896 /**/ 2897 813, 2898 /**/ 2899 812, 2900 /**/ 2901 811, 2902 /**/ 2903 810, 2904 /**/ 2905 809, 2906 /**/ 2907 808, 2908 /**/ 2909 807, 2910 /**/ 2911 806, 2912 /**/ 2913 805, 2914 /**/ 2915 804, 2916 /**/ 2917 803, 2918 /**/ 2919 802, 2920 /**/ 2921 801, 2922 /**/ 2923 800, 2924 /**/ 2925 799, 2926 /**/ 2927 798, 2928 /**/ 2929 797, 2930 /**/ 2931 796, 2932 /**/ 2933 795, 2934 /**/ 2935 794, 2936 /**/ 2937 793, 2938 /**/ 2939 792, 2940 /**/ 2941 791, 2942 /**/ 2943 790, 2944 /**/ 2945 789, 2946 /**/ 2947 788, 2948 /**/ 2949 787, 2950 /**/ 2951 786, 2952 /**/ 2953 785, 2954 /**/ 2955 784, 2956 /**/ 2957 783, 2958 /**/ 2959 782, 2960 /**/ 2961 781, 2962 /**/ 2963 780, 2964 /**/ 2965 779, 2966 /**/ 2967 778, 2968 /**/ 2969 777, 2970 /**/ 2971 776, 2972 /**/ 2973 775, 2974 /**/ 2975 774, 2976 /**/ 2977 773, 2978 /**/ 2979 772, 2980 /**/ 2981 771, 2982 /**/ 2983 770, 2984 /**/ 2985 769, 2986 /**/ 2987 768, 2988 /**/ 2989 767, 2990 /**/ 2991 766, 2992 /**/ 2993 765, 2994 /**/ 2995 764, 2996 /**/ 2997 763, 2998 /**/ 2999 762, 3000 /**/ 3001 761, 3002 /**/ 3003 760, 3004 /**/ 3005 759, 3006 /**/ 3007 758, 3008 /**/ 3009 757, 3010 /**/ 3011 756, 3012 /**/ 3013 755, 3014 /**/ 3015 754, 3016 /**/ 3017 753, 3018 /**/ 3019 752, 3020 /**/ 3021 751, 3022 /**/ 3023 750, 3024 /**/ 3025 749, 3026 /**/ 3027 748, 3028 /**/ 3029 747, 3030 /**/ 3031 746, 3032 /**/ 3033 745, 3034 /**/ 3035 744, 3036 /**/ 3037 743, 3038 /**/ 3039 742, 3040 /**/ 3041 741, 3042 /**/ 3043 740, 3044 /**/ 3045 739, 3046 /**/ 3047 738, 3048 /**/ 3049 737, 3050 /**/ 3051 736, 3052 /**/ 3053 735, 3054 /**/ 3055 734, 3056 /**/ 3057 733, 3058 /**/ 3059 732, 3060 /**/ 3061 731, 3062 /**/ 3063 730, 3064 /**/ 3065 729, 3066 /**/ 3067 728, 3068 /**/ 3069 727, 3070 /**/ 3071 726, 3072 /**/ 3073 725, 3074 /**/ 3075 724, 3076 /**/ 3077 723, 3078 /**/ 3079 722, 3080 /**/ 3081 721, 3082 /**/ 3083 720, 3084 /**/ 3085 719, 3086 /**/ 3087 718, 3088 /**/ 3089 717, 3090 /**/ 3091 716, 3092 /**/ 3093 715, 3094 /**/ 3095 714, 3096 /**/ 3097 713, 3098 /**/ 3099 712, 3100 /**/ 3101 711, 3102 /**/ 3103 710, 3104 /**/ 3105 709, 3106 /**/ 3107 708, 3108 /**/ 3109 707, 3110 /**/ 3111 706, 3112 /**/ 3113 705, 3114 /**/ 3115 704, 3116 /**/ 3117 703, 3118 /**/ 3119 702, 3120 /**/ 3121 701, 3122 /**/ 3123 700, 3124 /**/ 3125 699, 3126 /**/ 3127 698, 3128 /**/ 3129 697, 3130 /**/ 3131 696, 3132 /**/ 3133 695, 3134 /**/ 3135 694, 3136 /**/ 3137 693, 3138 /**/ 3139 692, 3140 /**/ 3141 691, 3142 /**/ 3143 690, 3144 /**/ 3145 689, 3146 /**/ 3147 688, 3148 /**/ 3149 687, 3150 /**/ 3151 686, 3152 /**/ 3153 685, 3154 /**/ 3155 684, 3156 /**/ 3157 683, 3158 /**/ 3159 682, 3160 /**/ 3161 681, 3162 /**/ 3163 680, 3164 /**/ 3165 679, 3166 /**/ 3167 678, 3168 /**/ 3169 677, 3170 /**/ 3171 676, 3172 /**/ 3173 675, 3174 /**/ 3175 674, 3176 /**/ 3177 673, 3178 /**/ 3179 672, 3180 /**/ 3181 671, 3182 /**/ 3183 670, 3184 /**/ 3185 669, 3186 /**/ 3187 668, 3188 /**/ 3189 667, 3190 /**/ 3191 666, 3192 /**/ 3193 665, 3194 /**/ 3195 664, 3196 /**/ 3197 663, 3198 /**/ 3199 662, 3200 /**/ 3201 661, 3202 /**/ 3203 660, 3204 /**/ 3205 659, 3206 /**/ 3207 658, 3208 /**/ 3209 657, 3210 /**/ 3211 656, 3212 /**/ 3213 655, 3214 /**/ 3215 654, 3216 /**/ 3217 653, 3218 /**/ 3219 652, 3220 /**/ 3221 651, 3222 /**/ 3223 650, 3224 /**/ 3225 649, 3226 /**/ 3227 648, 3228 /**/ 3229 647, 3230 /**/ 3231 646, 3232 /**/ 3233 645, 3234 /**/ 3235 644, 3236 /**/ 3237 643, 3238 /**/ 3239 642, 3240 /**/ 3241 641, 3242 /**/ 3243 640, 3244 /**/ 3245 639, 3246 /**/ 3247 638, 3248 /**/ 3249 637, 3250 /**/ 3251 636, 3252 /**/ 3253 635, 3254 /**/ 3255 634, 3256 /**/ 3257 633, 3258 /**/ 3259 632, 3260 /**/ 3261 631, 3262 /**/ 3263 630, 3264 /**/ 3265 629, 3266 /**/ 3267 628, 3268 /**/ 3269 627, 3270 /**/ 3271 626, 3272 /**/ 3273 625, 3274 /**/ 3275 624, 3276 /**/ 3277 623, 3278 /**/ 3279 622, 3280 /**/ 3281 621, 3282 /**/ 3283 620, 3284 /**/ 3285 619, 3286 /**/ 3287 618, 3288 /**/ 3289 617, 3290 /**/ 3291 616, 3292 /**/ 3293 615, 3294 /**/ 3295 614, 3296 /**/ 3297 613, 3298 /**/ 3299 612, 3300 /**/ 3301 611, 3302 /**/ 3303 610, 3304 /**/ 3305 609, 3306 /**/ 3307 608, 3308 /**/ 3309 607, 3310 /**/ 3311 606, 3312 /**/ 3313 605, 3314 /**/ 3315 604, 3316 /**/ 3317 603, 3318 /**/ 3319 602, 3320 /**/ 3321 601, 3322 /**/ 3323 600, 3324 /**/ 3325 599, 3326 /**/ 3327 598, 3328 /**/ 3329 597, 3330 /**/ 3331 596, 3332 /**/ 3333 595, 3334 /**/ 3335 594, 3336 /**/ 3337 593, 3338 /**/ 3339 592, 3340 /**/ 3341 591, 3342 /**/ 3343 590, 3344 /**/ 3345 589, 3346 /**/ 3347 588, 3348 /**/ 3349 587, 3350 /**/ 3351 586, 3352 /**/ 3353 585, 3354 /**/ 3355 584, 3356 /**/ 3357 583, 3358 /**/ 3359 582, 3360 /**/ 3361 581, 3362 /**/ 3363 580, 3364 /**/ 3365 579, 3366 /**/ 3367 578, 3368 /**/ 3369 577, 3370 /**/ 3371 576, 3372 /**/ 3373 575, 3374 /**/ 3375 574, 3376 /**/ 3377 573, 3378 /**/ 3379 572, 3380 /**/ 3381 571, 3382 /**/ 3383 570, 3384 /**/ 3385 569, 3386 /**/ 3387 568, 3388 /**/ 3389 567, 3390 /**/ 3391 566, 3392 /**/ 3393 565, 3394 /**/ 3395 564, 3396 /**/ 3397 563, 3398 /**/ 3399 562, 3400 /**/ 3401 561, 3402 /**/ 3403 560, 3404 /**/ 3405 559, 3406 /**/ 3407 558, 3408 /**/ 3409 557, 3410 /**/ 3411 556, 3412 /**/ 3413 555, 3414 /**/ 3415 554, 3416 /**/ 3417 553, 3418 /**/ 3419 552, 3420 /**/ 3421 551, 3422 /**/ 3423 550, 3424 /**/ 3425 549, 3426 /**/ 3427 548, 3428 /**/ 3429 547, 3430 /**/ 3431 546, 3432 /**/ 3433 545, 3434 /**/ 3435 544, 3436 /**/ 3437 543, 3438 /**/ 3439 542, 3440 /**/ 3441 541, 3442 /**/ 3443 540, 3444 /**/ 3445 539, 3446 /**/ 3447 538, 3448 /**/ 3449 537, 3450 /**/ 3451 536, 3452 /**/ 3453 535, 3454 /**/ 3455 534, 3456 /**/ 3457 533, 3458 /**/ 3459 532, 3460 /**/ 3461 531, 3462 /**/ 3463 530, 3464 /**/ 3465 529, 3466 /**/ 3467 528, 3468 /**/ 3469 527, 3470 /**/ 3471 526, 3472 /**/ 3473 525, 3474 /**/ 3475 524, 3476 /**/ 3477 523, 3478 /**/ 3479 522, 3480 /**/ 3481 521, 3482 /**/ 3483 520, 3484 /**/ 3485 519, 3486 /**/ 3487 518, 3488 /**/ 3489 517, 3490 /**/ 3491 516, 3492 /**/ 3493 515, 3494 /**/ 3495 514, 3496 /**/ 3497 513, 3498 /**/ 3499 512, 3500 /**/ 3501 511, 3502 /**/ 3503 510, 3504 /**/ 3505 509, 3506 /**/ 3507 508, 3508 /**/ 3509 507, 3510 /**/ 3511 506, 3512 /**/ 3513 505, 3514 /**/ 3515 504, 3516 /**/ 3517 503, 3518 /**/ 3519 502, 3520 /**/ 3521 501, 3522 /**/ 3523 500, 3524 /**/ 3525 499, 3526 /**/ 3527 498, 3528 /**/ 3529 497, 3530 /**/ 3531 496, 3532 /**/ 3533 495, 3534 /**/ 3535 494, 3536 /**/ 3537 493, 3538 /**/ 3539 492, 3540 /**/ 3541 491, 3542 /**/ 3543 490, 3544 /**/ 3545 489, 3546 /**/ 3547 488, 3548 /**/ 3549 487, 3550 /**/ 3551 486, 3552 /**/ 3553 485, 3554 /**/ 3555 484, 3556 /**/ 3557 483, 3558 /**/ 3559 482, 3560 /**/ 3561 481, 3562 /**/ 3563 480, 3564 /**/ 3565 479, 3566 /**/ 3567 478, 3568 /**/ 3569 477, 3570 /**/ 3571 476, 3572 /**/ 3573 475, 3574 /**/ 3575 474, 3576 /**/ 3577 473, 3578 /**/ 3579 472, 3580 /**/ 3581 471, 3582 /**/ 3583 470, 3584 /**/ 3585 469, 3586 /**/ 3587 468, 3588 /**/ 3589 467, 3590 /**/ 3591 466, 3592 /**/ 3593 465, 3594 /**/ 3595 464, 3596 /**/ 3597 463, 3598 /**/ 3599 462, 3600 /**/ 3601 461, 3602 /**/ 3603 460, 3604 /**/ 3605 459, 3606 /**/ 3607 458, 3608 /**/ 3609 457, 3610 /**/ 3611 456, 3612 /**/ 3613 455, 3614 /**/ 3615 454, 3616 /**/ 3617 453, 3618 /**/ 3619 452, 3620 /**/ 3621 451, 3622 /**/ 3623 450, 3624 /**/ 3625 449, 3626 /**/ 3627 448, 3628 /**/ 3629 447, 3630 /**/ 3631 446, 3632 /**/ 3633 445, 3634 /**/ 3635 444, 3636 /**/ 3637 443, 3638 /**/ 3639 442, 3640 /**/ 3641 441, 3642 /**/ 3643 440, 3644 /**/ 3645 439, 3646 /**/ 3647 438, 3648 /**/ 3649 437, 3650 /**/ 3651 436, 3652 /**/ 3653 435, 3654 /**/ 3655 434, 3656 /**/ 3657 433, 3658 /**/ 3659 432, 3660 /**/ 3661 431, 3662 /**/ 3663 430, 3664 /**/ 3665 429, 3666 /**/ 3667 428, 3668 /**/ 3669 427, 3670 /**/ 3671 426, 3672 /**/ 3673 425, 3674 /**/ 3675 424, 3676 /**/ 3677 423, 3678 /**/ 3679 422, 3680 /**/ 3681 421, 3682 /**/ 3683 420, 3684 /**/ 3685 419, 3686 /**/ 3687 418, 3688 /**/ 3689 417, 3690 /**/ 3691 416, 3692 /**/ 3693 415, 3694 /**/ 3695 414, 3696 /**/ 3697 413, 3698 /**/ 3699 412, 3700 /**/ 3701 411, 3702 /**/ 3703 410, 3704 /**/ 3705 409, 3706 /**/ 3707 408, 3708 /**/ 3709 407, 3710 /**/ 3711 406, 3712 /**/ 3713 405, 3714 /**/ 3715 404, 3716 /**/ 3717 403, 3718 /**/ 3719 402, 3720 /**/ 3721 401, 3722 /**/ 3723 400, 3724 /**/ 3725 399, 3726 /**/ 3727 398, 3728 /**/ 3729 397, 3730 /**/ 3731 396, 3732 /**/ 3733 395, 3734 /**/ 3735 394, 3736 /**/ 3737 393, 3738 /**/ 3739 392, 3740 /**/ 3741 391, 3742 /**/ 3743 390, 3744 /**/ 3745 389, 3746 /**/ 3747 388, 3748 /**/ 3749 387, 3750 /**/ 3751 386, 3752 /**/ 3753 385, 3754 /**/ 3755 384, 3756 /**/ 3757 383, 3758 /**/ 3759 382, 3760 /**/ 3761 381, 3762 /**/ 3763 380, 3764 /**/ 3765 379, 3766 /**/ 3767 378, 3768 /**/ 3769 377, 3770 /**/ 3771 376, 3772 /**/ 3773 375, 3774 /**/ 3775 374, 3776 /**/ 3777 373, 3778 /**/ 3779 372, 3780 /**/ 3781 371, 3782 /**/ 3783 370, 3784 /**/ 3785 369, 3786 /**/ 3787 368, 3788 /**/ 3789 367, 3790 /**/ 3791 366, 3792 /**/ 3793 365, 3794 /**/ 3795 364, 3796 /**/ 3797 363, 3798 /**/ 3799 362, 3800 /**/ 3801 361, 3802 /**/ 3803 360, 3804 /**/ 3805 359, 3806 /**/ 3807 358, 3808 /**/ 3809 357, 3810 /**/ 3811 356, 3812 /**/ 3813 355, 3814 /**/ 3815 354, 3816 /**/ 3817 353, 3818 /**/ 3819 352, 3820 /**/ 3821 351, 3822 /**/ 3823 350, 3824 /**/ 3825 349, 3826 /**/ 3827 348, 3828 /**/ 3829 347, 3830 /**/ 3831 346, 3832 /**/ 3833 345, 3834 /**/ 3835 344, 3836 /**/ 3837 343, 3838 /**/ 3839 342, 3840 /**/ 3841 341, 3842 /**/ 3843 340, 3844 /**/ 3845 339, 3846 /**/ 3847 338, 3848 /**/ 3849 337, 3850 /**/ 3851 336, 3852 /**/ 3853 335, 3854 /**/ 3855 334, 3856 /**/ 3857 333, 3858 /**/ 3859 332, 3860 /**/ 3861 331, 3862 /**/ 3863 330, 3864 /**/ 3865 329, 3866 /**/ 3867 328, 3868 /**/ 3869 327, 3870 /**/ 3871 326, 3872 /**/ 3873 325, 3874 /**/ 3875 324, 3876 /**/ 3877 323, 3878 /**/ 3879 322, 3880 /**/ 3881 321, 3882 /**/ 3883 320, 3884 /**/ 3885 319, 3886 /**/ 3887 318, 3888 /**/ 3889 317, 3890 /**/ 3891 316, 3892 /**/ 3893 315, 3894 /**/ 3895 314, 3896 /**/ 3897 313, 3898 /**/ 3899 312, 3900 /**/ 3901 311, 3902 /**/ 3903 310, 3904 /**/ 3905 309, 3906 /**/ 3907 308, 3908 /**/ 3909 307, 3910 /**/ 3911 306, 3912 /**/ 3913 305, 3914 /**/ 3915 304, 3916 /**/ 3917 303, 3918 /**/ 3919 302, 3920 /**/ 3921 301, 3922 /**/ 3923 300, 3924 /**/ 3925 299, 3926 /**/ 3927 298, 3928 /**/ 3929 297, 3930 /**/ 3931 296, 3932 /**/ 3933 295, 3934 /**/ 3935 294, 3936 /**/ 3937 293, 3938 /**/ 3939 292, 3940 /**/ 3941 291, 3942 /**/ 3943 290, 3944 /**/ 3945 289, 3946 /**/ 3947 288, 3948 /**/ 3949 287, 3950 /**/ 3951 286, 3952 /**/ 3953 285, 3954 /**/ 3955 284, 3956 /**/ 3957 283, 3958 /**/ 3959 282, 3960 /**/ 3961 281, 3962 /**/ 3963 280, 3964 /**/ 3965 279, 3966 /**/ 3967 278, 3968 /**/ 3969 277, 3970 /**/ 3971 276, 3972 /**/ 3973 275, 3974 /**/ 3975 274, 3976 /**/ 3977 273, 3978 /**/ 3979 272, 3980 /**/ 3981 271, 3982 /**/ 3983 270, 3984 /**/ 3985 269, 3986 /**/ 3987 268, 3988 /**/ 3989 267, 3990 /**/ 3991 266, 3992 /**/ 3993 265, 3994 /**/ 3995 264, 3996 /**/ 3997 263, 3998 /**/ 3999 262, 4000 /**/ 4001 261, 4002 /**/ 4003 260, 4004 /**/ 4005 259, 4006 /**/ 4007 258, 4008 /**/ 4009 257, 4010 /**/ 4011 256, 4012 /**/ 4013 255, 4014 /**/ 4015 254, 4016 /**/ 4017 253, 4018 /**/ 4019 252, 4020 /**/ 4021 251, 4022 /**/ 4023 250, 4024 /**/ 4025 249, 4026 /**/ 4027 248, 4028 /**/ 4029 247, 4030 /**/ 4031 246, 4032 /**/ 4033 245, 4034 /**/ 4035 244, 4036 /**/ 4037 243, 4038 /**/ 4039 242, 4040 /**/ 4041 241, 4042 /**/ 4043 240, 4044 /**/ 4045 239, 4046 /**/ 4047 238, 4048 /**/ 4049 237, 4050 /**/ 4051 236, 4052 /**/ 4053 235, 4054 /**/ 4055 234, 4056 /**/ 4057 233, 4058 /**/ 4059 232, 4060 /**/ 4061 231, 4062 /**/ 4063 230, 4064 /**/ 4065 229, 4066 /**/ 4067 228, 4068 /**/ 4069 227, 4070 /**/ 4071 226, 4072 /**/ 4073 225, 4074 /**/ 4075 224, 4076 /**/ 4077 223, 4078 /**/ 4079 222, 4080 /**/ 4081 221, 4082 /**/ 4083 220, 4084 /**/ 4085 219, 4086 /**/ 4087 218, 4088 /**/ 4089 217, 4090 /**/ 4091 216, 4092 /**/ 4093 215, 4094 /**/ 4095 214, 4096 /**/ 4097 213, 4098 /**/ 4099 212, 4100 /**/ 4101 211, 4102 /**/ 4103 210, 4104 /**/ 4105 209, 4106 /**/ 4107 208, 4108 /**/ 4109 207, 4110 /**/ 4111 206, 4112 /**/ 4113 205, 4114 /**/ 4115 204, 4116 /**/ 4117 203, 4118 /**/ 4119 202, 4120 /**/ 4121 201, 4122 /**/ 4123 200, 4124 /**/ 4125 199, 4126 /**/ 4127 198, 4128 /**/ 4129 197, 4130 /**/ 4131 196, 4132 /**/ 4133 195, 4134 /**/ 4135 194, 4136 /**/ 4137 193, 4138 /**/ 4139 192, 4140 /**/ 4141 191, 4142 /**/ 4143 190, 4144 /**/ 4145 189, 4146 /**/ 4147 188, 4148 /**/ 4149 187, 4150 /**/ 4151 186, 4152 /**/ 4153 185, 4154 /**/ 4155 184, 4156 /**/ 4157 183, 4158 /**/ 4159 182, 4160 /**/ 4161 181, 4162 /**/ 4163 180, 4164 /**/ 4165 179, 4166 /**/ 4167 178, 4168 /**/ 4169 177, 4170 /**/ 4171 176, 4172 /**/ 4173 175, 4174 /**/ 4175 174, 4176 /**/ 4177 173, 4178 /**/ 4179 172, 4180 /**/ 4181 171, 4182 /**/ 4183 170, 4184 /**/ 4185 169, 4186 /**/ 4187 168, 4188 /**/ 4189 167, 4190 /**/ 4191 166, 4192 /**/ 4193 165, 4194 /**/ 4195 164, 4196 /**/ 4197 163, 4198 /**/ 4199 162, 4200 /**/ 4201 161, 4202 /**/ 4203 160, 4204 /**/ 4205 159, 4206 /**/ 4207 158, 4208 /**/ 4209 157, 4210 /**/ 4211 156, 4212 /**/ 4213 155, 4214 /**/ 4215 154, 4216 /**/ 4217 153, 4218 /**/ 4219 152, 4220 /**/ 4221 151, 4222 /**/ 4223 150, 4224 /**/ 4225 149, 4226 /**/ 4227 148, 4228 /**/ 4229 147, 4230 /**/ 4231 146, 4232 /**/ 4233 145, 4234 /**/ 4235 144, 4236 /**/ 4237 143, 4238 /**/ 4239 142, 4240 /**/ 4241 141, 4242 /**/ 4243 140, 4244 /**/ 4245 139, 4246 /**/ 4247 138, 4248 /**/ 4249 137, 4250 /**/ 4251 136, 4252 /**/ 4253 135, 4254 /**/ 4255 134, 4256 /**/ 4257 133, 4258 /**/ 4259 132, 4260 /**/ 4261 131, 4262 /**/ 4263 130, 4264 /**/ 4265 129, 4266 /**/ 4267 128, 4268 /**/ 4269 127, 4270 /**/ 4271 126, 4272 /**/ 4273 125, 4274 /**/ 4275 124, 4276 /**/ 4277 123, 4278 /**/ 4279 122, 4280 /**/ 4281 121, 4282 /**/ 4283 120, 4284 /**/ 4285 119, 4286 /**/ 4287 118, 4288 /**/ 4289 117, 4290 /**/ 4291 116, 4292 /**/ 4293 115, 4294 /**/ 4295 114, 4296 /**/ 4297 113, 4298 /**/ 4299 112, 4300 /**/ 4301 111, 4302 /**/ 4303 110, 4304 /**/ 4305 109, 4306 /**/ 4307 108, 4308 /**/ 4309 107, 4310 /**/ 4311 106, 4312 /**/ 4313 105, 4314 /**/ 4315 104, 4316 /**/ 4317 103, 4318 /**/ 4319 102, 4320 /**/ 4321 101, 4322 /**/ 4323 100, 4324 /**/ 4325 99, 4326 /**/ 4327 98, 4328 /**/ 4329 97, 4330 /**/ 4331 96, 4332 /**/ 4333 95, 4334 /**/ 4335 94, 4336 /**/ 4337 93, 4338 /**/ 4339 92, 4340 /**/ 4341 91, 4342 /**/ 4343 90, 4344 /**/ 4345 89, 4346 /**/ 4347 88, 4348 /**/ 4349 87, 4350 /**/ 4351 86, 4352 /**/ 4353 85, 4354 /**/ 4355 84, 4356 /**/ 4357 83, 4358 /**/ 4359 82, 4360 /**/ 4361 81, 4362 /**/ 4363 80, 4364 /**/ 4365 79, 4366 /**/ 4367 78, 4368 /**/ 4369 77, 4370 /**/ 4371 76, 4372 /**/ 4373 75, 4374 /**/ 4375 74, 4376 /**/ 4377 73, 4378 /**/ 4379 72, 4380 /**/ 4381 71, 4382 /**/ 4383 70, 4384 /**/ 4385 69, 4386 /**/ 4387 68, 4388 /**/ 4389 67, 4390 /**/ 4391 66, 4392 /**/ 4393 65, 4394 /**/ 4395 64, 4396 /**/ 4397 63, 4398 /**/ 4399 62, 4400 /**/ 4401 61, 4402 /**/ 4403 60, 4404 /**/ 4405 59, 4406 /**/ 4407 58, 4408 /**/ 4409 57, 4410 /**/ 4411 56, 4412 /**/ 4413 55, 4414 /**/ 4415 54, 4416 /**/ 4417 53, 4418 /**/ 4419 52, 4420 /**/ 4421 51, 4422 /**/ 4423 50, 4424 /**/ 4425 49, 4426 /**/ 4427 48, 4428 /**/ 4429 47, 4430 /**/ 4431 46, 4432 /**/ 4433 45, 4434 /**/ 4435 44, 4436 /**/ 4437 43, 4438 /**/ 4439 42, 4440 /**/ 4441 41, 4442 /**/ 4443 40, 4444 /**/ 4445 39, 4446 /**/ 4447 38, 4448 /**/ 4449 37, 4450 /**/ 4451 36, 4452 /**/ 4453 35, 4454 /**/ 4455 34, 4456 /**/ 4457 33, 4458 /**/ 4459 32, 4460 /**/ 4461 31, 4462 /**/ 4463 30, 4464 /**/ 4465 29, 4466 /**/ 4467 28, 4468 /**/ 4469 27, 4470 /**/ 4471 26, 4472 /**/ 4473 25, 4474 /**/ 4475 24, 4476 /**/ 4477 23, 4478 /**/ 4479 22, 4480 /**/ 4481 21, 4482 /**/ 4483 20, 4484 /**/ 4485 19, 4486 /**/ 4487 18, 4488 /**/ 4489 17, 4490 /**/ 4491 16, 4492 /**/ 4493 15, 4494 /**/ 4495 14, 4496 /**/ 4497 13, 4498 /**/ 4499 12, 4500 /**/ 4501 11, 4502 /**/ 4503 10, 4504 /**/ 4505 9, 4506 /**/ 4507 8, 4508 /**/ 4509 7, 4510 /**/ 4511 6, 4512 /**/ 4513 5, 4514 /**/ 4515 4, 4516 /**/ 4517 3, 4518 /**/ 4519 2, 4520 /**/ 4521 1, 4522 /**/ 4523 0 4524 }; 4525 4526 /* 4527 * Place to put a short description when adding a feature with a patch. 4528 * Keep it short, e.g.,: "relative numbers", "persistent undo". 4529 * Also add a comment marker to separate the lines. 4530 * See the official Vim patches for the diff format: It must use a context of 4531 * one line only. Create it by hand or use "diff -C2" and edit the patch. 4532 */ 4533 static char *(extra_patches[]) = 4534 { /* Add your patch description below this line */ 4535 /**/ 4536 NULL 4537 }; 4538 4539 int 4540 highest_patch(void) 4541 { 4542 int i; 4543 int h = 0; 4544 4545 for (i = 0; included_patches[i] != 0; ++i) 4546 if (included_patches[i] > h) 4547 h = included_patches[i]; 4548 return h; 4549 } 4550 4551 #if defined(FEAT_EVAL) || defined(PROTO) 4552 /* 4553 * Return TRUE if patch "n" has been included. 4554 */ 4555 int 4556 has_patch(int n) 4557 { 4558 int i; 4559 4560 for (i = 0; included_patches[i] != 0; ++i) 4561 if (included_patches[i] == n) 4562 return TRUE; 4563 return FALSE; 4564 } 4565 #endif 4566 4567 void 4568 ex_version(exarg_T *eap) 4569 { 4570 /* 4571 * Ignore a ":version 9.99" command. 4572 */ 4573 if (*eap->arg == NUL) 4574 { 4575 msg_putchar('\n'); 4576 list_version(); 4577 } 4578 } 4579 4580 /* 4581 * List all features aligned in columns, dictionary style. 4582 */ 4583 static void 4584 list_features(void) 4585 { 4586 int i; 4587 int ncol; 4588 int nrow; 4589 int nfeat = 0; 4590 int width = 0; 4591 4592 /* Find the length of the longest feature name, use that + 1 as the column 4593 * width */ 4594 for (i = 0; features[i] != NULL; ++i) 4595 { 4596 int l = (int)STRLEN(features[i]); 4597 4598 if (l > width) 4599 width = l; 4600 ++nfeat; 4601 } 4602 width += 1; 4603 4604 if (Columns < width) 4605 { 4606 /* Not enough screen columns - show one per line */ 4607 for (i = 0; features[i] != NULL; ++i) 4608 { 4609 version_msg(features[i]); 4610 if (msg_col > 0) 4611 msg_putchar('\n'); 4612 } 4613 return; 4614 } 4615 4616 /* The rightmost column doesn't need a separator. 4617 * Sacrifice it to fit in one more column if possible. */ 4618 ncol = (int) (Columns + 1) / width; 4619 nrow = nfeat / ncol + (nfeat % ncol ? 1 : 0); 4620 4621 /* i counts columns then rows. idx counts rows then columns. */ 4622 for (i = 0; !got_int && i < nrow * ncol; ++i) 4623 { 4624 int idx = (i / ncol) + (i % ncol) * nrow; 4625 4626 if (idx < nfeat) 4627 { 4628 int last_col = (i + 1) % ncol == 0; 4629 4630 msg_puts((char_u *)features[idx]); 4631 if (last_col) 4632 { 4633 if (msg_col > 0) 4634 msg_putchar('\n'); 4635 } 4636 else 4637 { 4638 while (msg_col % width) 4639 msg_putchar(' '); 4640 } 4641 } 4642 else 4643 { 4644 if (msg_col > 0) 4645 msg_putchar('\n'); 4646 } 4647 } 4648 } 4649 4650 void 4651 list_version(void) 4652 { 4653 int i; 4654 int first; 4655 char *s = ""; 4656 4657 /* 4658 * When adding features here, don't forget to update the list of 4659 * internal variables in eval.c! 4660 */ 4661 MSG(longVersion); 4662 #ifdef WIN3264 4663 # ifdef FEAT_GUI_W32 4664 # if defined(_MSC_VER) && (_MSC_VER <= 1010) 4665 /* Only MS VC 4.1 and earlier can do Win32s */ 4666 MSG_PUTS(_("\nMS-Windows 16/32-bit GUI version")); 4667 # else 4668 # ifdef _WIN64 4669 MSG_PUTS(_("\nMS-Windows 64-bit GUI version")); 4670 # else 4671 MSG_PUTS(_("\nMS-Windows 32-bit GUI version")); 4672 # endif 4673 # endif 4674 if (gui_is_win32s()) 4675 MSG_PUTS(_(" in Win32s mode")); 4676 # ifdef FEAT_OLE 4677 MSG_PUTS(_(" with OLE support")); 4678 # endif 4679 # else 4680 # ifdef _WIN64 4681 MSG_PUTS(_("\nMS-Windows 64-bit console version")); 4682 # else 4683 MSG_PUTS(_("\nMS-Windows 32-bit console version")); 4684 # endif 4685 # endif 4686 #endif 4687 #ifdef MACOS 4688 # ifdef MACOS_X 4689 # ifdef MACOS_X_UNIX 4690 MSG_PUTS(_("\nMacOS X (unix) version")); 4691 # else 4692 MSG_PUTS(_("\nMacOS X version")); 4693 # endif 4694 #else 4695 MSG_PUTS(_("\nMacOS version")); 4696 # endif 4697 #endif 4698 4699 #ifdef VMS 4700 MSG_PUTS(_("\nOpenVMS version")); 4701 # ifdef HAVE_PATHDEF 4702 if (*compiled_arch != NUL) 4703 { 4704 MSG_PUTS(" - "); 4705 MSG_PUTS(compiled_arch); 4706 } 4707 # endif 4708 4709 #endif 4710 4711 /* Print the list of patch numbers if there is at least one. */ 4712 /* Print a range when patches are consecutive: "1-10, 12, 15-40, 42-45" */ 4713 if (included_patches[0] != 0) 4714 { 4715 MSG_PUTS(_("\nIncluded patches: ")); 4716 first = -1; 4717 /* find last one */ 4718 for (i = 0; included_patches[i] != 0; ++i) 4719 ; 4720 while (--i >= 0) 4721 { 4722 if (first < 0) 4723 first = included_patches[i]; 4724 if (i == 0 || included_patches[i - 1] != included_patches[i] + 1) 4725 { 4726 MSG_PUTS(s); 4727 s = ", "; 4728 msg_outnum((long)first); 4729 if (first != included_patches[i]) 4730 { 4731 MSG_PUTS("-"); 4732 msg_outnum((long)included_patches[i]); 4733 } 4734 first = -1; 4735 } 4736 } 4737 } 4738 4739 /* Print the list of extra patch descriptions if there is at least one. */ 4740 if (extra_patches[0] != NULL) 4741 { 4742 MSG_PUTS(_("\nExtra patches: ")); 4743 s = ""; 4744 for (i = 0; extra_patches[i] != NULL; ++i) 4745 { 4746 MSG_PUTS(s); 4747 s = ", "; 4748 MSG_PUTS(extra_patches[i]); 4749 } 4750 } 4751 4752 #ifdef MODIFIED_BY 4753 MSG_PUTS("\n"); 4754 MSG_PUTS(_("Modified by ")); 4755 MSG_PUTS(MODIFIED_BY); 4756 #endif 4757 4758 #ifdef HAVE_PATHDEF 4759 if (*compiled_user != NUL || *compiled_sys != NUL) 4760 { 4761 MSG_PUTS(_("\nCompiled ")); 4762 if (*compiled_user != NUL) 4763 { 4764 MSG_PUTS(_("by ")); 4765 MSG_PUTS(compiled_user); 4766 } 4767 if (*compiled_sys != NUL) 4768 { 4769 MSG_PUTS("@"); 4770 MSG_PUTS(compiled_sys); 4771 } 4772 } 4773 #endif 4774 4775 #ifdef FEAT_HUGE 4776 MSG_PUTS(_("\nHuge version ")); 4777 #else 4778 # ifdef FEAT_BIG 4779 MSG_PUTS(_("\nBig version ")); 4780 # else 4781 # ifdef FEAT_NORMAL 4782 MSG_PUTS(_("\nNormal version ")); 4783 # else 4784 # ifdef FEAT_SMALL 4785 MSG_PUTS(_("\nSmall version ")); 4786 # else 4787 MSG_PUTS(_("\nTiny version ")); 4788 # endif 4789 # endif 4790 # endif 4791 #endif 4792 #ifndef FEAT_GUI 4793 MSG_PUTS(_("without GUI.")); 4794 #else 4795 # ifdef FEAT_GUI_GTK 4796 # ifdef USE_GTK3 4797 MSG_PUTS(_("with GTK3 GUI.")); 4798 # else 4799 # ifdef FEAT_GUI_GNOME 4800 MSG_PUTS(_("with GTK2-GNOME GUI.")); 4801 # else 4802 MSG_PUTS(_("with GTK2 GUI.")); 4803 # endif 4804 # endif 4805 # else 4806 # ifdef FEAT_GUI_MOTIF 4807 MSG_PUTS(_("with X11-Motif GUI.")); 4808 # else 4809 # ifdef FEAT_GUI_ATHENA 4810 # ifdef FEAT_GUI_NEXTAW 4811 MSG_PUTS(_("with X11-neXtaw GUI.")); 4812 # else 4813 MSG_PUTS(_("with X11-Athena GUI.")); 4814 # endif 4815 # else 4816 # ifdef FEAT_GUI_PHOTON 4817 MSG_PUTS(_("with Photon GUI.")); 4818 # else 4819 # if defined(MSWIN) 4820 MSG_PUTS(_("with GUI.")); 4821 # else 4822 # if defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON 4823 MSG_PUTS(_("with Carbon GUI.")); 4824 # else 4825 # if defined(TARGET_API_MAC_OSX) && TARGET_API_MAC_OSX 4826 MSG_PUTS(_("with Cocoa GUI.")); 4827 # else 4828 # if defined(MACOS) 4829 MSG_PUTS(_("with (classic) GUI.")); 4830 # endif 4831 # endif 4832 # endif 4833 # endif 4834 # endif 4835 # endif 4836 # endif 4837 # endif 4838 #endif 4839 version_msg(_(" Features included (+) or not (-):\n")); 4840 4841 list_features(); 4842 4843 #ifdef SYS_VIMRC_FILE 4844 version_msg(_(" system vimrc file: \"")); 4845 version_msg(SYS_VIMRC_FILE); 4846 version_msg("\"\n"); 4847 #endif 4848 #ifdef USR_VIMRC_FILE 4849 version_msg(_(" user vimrc file: \"")); 4850 version_msg(USR_VIMRC_FILE); 4851 version_msg("\"\n"); 4852 #endif 4853 #ifdef USR_VIMRC_FILE2 4854 version_msg(_(" 2nd user vimrc file: \"")); 4855 version_msg(USR_VIMRC_FILE2); 4856 version_msg("\"\n"); 4857 #endif 4858 #ifdef USR_VIMRC_FILE3 4859 version_msg(_(" 3rd user vimrc file: \"")); 4860 version_msg(USR_VIMRC_FILE3); 4861 version_msg("\"\n"); 4862 #endif 4863 #ifdef USR_EXRC_FILE 4864 version_msg(_(" user exrc file: \"")); 4865 version_msg(USR_EXRC_FILE); 4866 version_msg("\"\n"); 4867 #endif 4868 #ifdef USR_EXRC_FILE2 4869 version_msg(_(" 2nd user exrc file: \"")); 4870 version_msg(USR_EXRC_FILE2); 4871 version_msg("\"\n"); 4872 #endif 4873 #ifdef FEAT_GUI 4874 # ifdef SYS_GVIMRC_FILE 4875 version_msg(_(" system gvimrc file: \"")); 4876 version_msg(SYS_GVIMRC_FILE); 4877 version_msg("\"\n"); 4878 # endif 4879 version_msg(_(" user gvimrc file: \"")); 4880 version_msg(USR_GVIMRC_FILE); 4881 version_msg("\"\n"); 4882 # ifdef USR_GVIMRC_FILE2 4883 version_msg(_("2nd user gvimrc file: \"")); 4884 version_msg(USR_GVIMRC_FILE2); 4885 version_msg("\"\n"); 4886 # endif 4887 # ifdef USR_GVIMRC_FILE3 4888 version_msg(_("3rd user gvimrc file: \"")); 4889 version_msg(USR_GVIMRC_FILE3); 4890 version_msg("\"\n"); 4891 # endif 4892 #endif 4893 #ifdef FEAT_GUI 4894 # ifdef SYS_MENU_FILE 4895 version_msg(_(" system menu file: \"")); 4896 version_msg(SYS_MENU_FILE); 4897 version_msg("\"\n"); 4898 # endif 4899 #endif 4900 #ifdef HAVE_PATHDEF 4901 if (*default_vim_dir != NUL) 4902 { 4903 version_msg(_(" fall-back for $VIM: \"")); 4904 version_msg((char *)default_vim_dir); 4905 version_msg("\"\n"); 4906 } 4907 if (*default_vimruntime_dir != NUL) 4908 { 4909 version_msg(_(" f-b for $VIMRUNTIME: \"")); 4910 version_msg((char *)default_vimruntime_dir); 4911 version_msg("\"\n"); 4912 } 4913 version_msg(_("Compilation: ")); 4914 version_msg((char *)all_cflags); 4915 version_msg("\n"); 4916 #ifdef VMS 4917 if (*compiler_version != NUL) 4918 { 4919 version_msg(_("Compiler: ")); 4920 version_msg((char *)compiler_version); 4921 version_msg("\n"); 4922 } 4923 #endif 4924 version_msg(_("Linking: ")); 4925 version_msg((char *)all_lflags); 4926 #endif 4927 #ifdef DEBUG 4928 version_msg("\n"); 4929 version_msg(_(" DEBUG BUILD")); 4930 #endif 4931 } 4932 4933 /* 4934 * Output a string for the version message. If it's going to wrap, output a 4935 * newline, unless the message is too long to fit on the screen anyway. 4936 */ 4937 static void 4938 version_msg(char *s) 4939 { 4940 int len = (int)STRLEN(s); 4941 4942 if (!got_int && len < (int)Columns && msg_col + len >= (int)Columns 4943 && *s != '\n') 4944 msg_putchar('\n'); 4945 if (!got_int) 4946 MSG_PUTS(s); 4947 } 4948 4949 static void do_intro_line(int row, char_u *mesg, int add_version, int attr); 4950 4951 /* 4952 * Show the intro message when not editing a file. 4953 */ 4954 void 4955 maybe_intro_message(void) 4956 { 4957 if (bufempty() 4958 && curbuf->b_fname == NULL 4959 #ifdef FEAT_WINDOWS 4960 && firstwin->w_next == NULL 4961 #endif 4962 && vim_strchr(p_shm, SHM_INTRO) == NULL) 4963 intro_message(FALSE); 4964 } 4965 4966 /* 4967 * Give an introductory message about Vim. 4968 * Only used when starting Vim on an empty file, without a file name. 4969 * Or with the ":intro" command (for Sven :-). 4970 */ 4971 void 4972 intro_message( 4973 int colon) /* TRUE for ":intro" */ 4974 { 4975 int i; 4976 int row; 4977 int blanklines; 4978 int sponsor; 4979 char *p; 4980 static char *(lines[]) = 4981 { 4982 N_("VIM - Vi IMproved"), 4983 "", 4984 N_("version "), 4985 N_("by Bram Moolenaar et al."), 4986 #ifdef MODIFIED_BY 4987 " ", 4988 #endif 4989 N_("Vim is open source and freely distributable"), 4990 "", 4991 N_("Help poor children in Uganda!"), 4992 N_("type :help iccf<Enter> for information "), 4993 "", 4994 N_("type :q<Enter> to exit "), 4995 N_("type :help<Enter> or <F1> for on-line help"), 4996 N_("type :help version7<Enter> for version info"), 4997 NULL, 4998 "", 4999 N_("Running in Vi compatible mode"), 5000 N_("type :set nocp<Enter> for Vim defaults"), 5001 N_("type :help cp-default<Enter> for info on this"), 5002 }; 5003 #ifdef FEAT_GUI 5004 static char *(gui_lines[]) = 5005 { 5006 NULL, 5007 NULL, 5008 NULL, 5009 NULL, 5010 #ifdef MODIFIED_BY 5011 NULL, 5012 #endif 5013 NULL, 5014 NULL, 5015 NULL, 5016 N_("menu Help->Orphans for information "), 5017 NULL, 5018 N_("Running modeless, typed text is inserted"), 5019 N_("menu Edit->Global Settings->Toggle Insert Mode "), 5020 N_(" for two modes "), 5021 NULL, 5022 NULL, 5023 NULL, 5024 N_("menu Edit->Global Settings->Toggle Vi Compatible"), 5025 N_(" for Vim defaults "), 5026 }; 5027 #endif 5028 5029 /* blanklines = screen height - # message lines */ 5030 blanklines = (int)Rows - ((sizeof(lines) / sizeof(char *)) - 1); 5031 if (!p_cp) 5032 blanklines += 4; /* add 4 for not showing "Vi compatible" message */ 5033 #if defined(WIN3264) && !defined(FEAT_GUI_W32) 5034 if (mch_windows95()) 5035 blanklines -= 3; /* subtract 3 for showing "Windows 95" message */ 5036 #endif 5037 5038 #ifdef FEAT_WINDOWS 5039 /* Don't overwrite a statusline. Depends on 'cmdheight'. */ 5040 if (p_ls > 1) 5041 blanklines -= Rows - topframe->fr_height; 5042 #endif 5043 if (blanklines < 0) 5044 blanklines = 0; 5045 5046 /* Show the sponsor and register message one out of four times, the Uganda 5047 * message two out of four times. */ 5048 sponsor = (int)time(NULL); 5049 sponsor = ((sponsor & 2) == 0) - ((sponsor & 4) == 0); 5050 5051 /* start displaying the message lines after half of the blank lines */ 5052 row = blanklines / 2; 5053 if ((row >= 2 && Columns >= 50) || colon) 5054 { 5055 for (i = 0; i < (int)(sizeof(lines) / sizeof(char *)); ++i) 5056 { 5057 p = lines[i]; 5058 #ifdef FEAT_GUI 5059 if (p_im && gui.in_use && gui_lines[i] != NULL) 5060 p = gui_lines[i]; 5061 #endif 5062 if (p == NULL) 5063 { 5064 if (!p_cp) 5065 break; 5066 continue; 5067 } 5068 if (sponsor != 0) 5069 { 5070 if (strstr(p, "children") != NULL) 5071 p = sponsor < 0 5072 ? N_("Sponsor Vim development!") 5073 : N_("Become a registered Vim user!"); 5074 else if (strstr(p, "iccf") != NULL) 5075 p = sponsor < 0 5076 ? N_("type :help sponsor<Enter> for information ") 5077 : N_("type :help register<Enter> for information "); 5078 else if (strstr(p, "Orphans") != NULL) 5079 p = N_("menu Help->Sponsor/Register for information "); 5080 } 5081 if (*p != NUL) 5082 do_intro_line(row, (char_u *)_(p), i == 2, 0); 5083 ++row; 5084 } 5085 #if defined(WIN3264) && !defined(FEAT_GUI_W32) 5086 if (mch_windows95()) 5087 { 5088 do_intro_line(++row, 5089 (char_u *)_("WARNING: Windows 95/98/ME detected"), 5090 FALSE, hl_attr(HLF_E)); 5091 do_intro_line(++row, 5092 (char_u *)_("type :help windows95<Enter> for info on this"), 5093 FALSE, 0); 5094 } 5095 #endif 5096 } 5097 5098 /* Make the wait-return message appear just below the text. */ 5099 if (colon) 5100 msg_row = row; 5101 } 5102 5103 static void 5104 do_intro_line( 5105 int row, 5106 char_u *mesg, 5107 int add_version, 5108 int attr) 5109 { 5110 char_u vers[20]; 5111 int col; 5112 char_u *p; 5113 int l; 5114 int clen; 5115 #ifdef MODIFIED_BY 5116 # define MODBY_LEN 150 5117 char_u modby[MODBY_LEN]; 5118 5119 if (*mesg == ' ') 5120 { 5121 vim_strncpy(modby, (char_u *)_("Modified by "), MODBY_LEN - 1); 5122 l = (int)STRLEN(modby); 5123 vim_strncpy(modby + l, (char_u *)MODIFIED_BY, MODBY_LEN - l - 1); 5124 mesg = modby; 5125 } 5126 #endif 5127 5128 /* Center the message horizontally. */ 5129 col = vim_strsize(mesg); 5130 if (add_version) 5131 { 5132 STRCPY(vers, mediumVersion); 5133 if (highest_patch()) 5134 { 5135 /* Check for 9.9x or 9.9xx, alpha/beta version */ 5136 if (isalpha((int)vers[3])) 5137 { 5138 int len = (isalpha((int)vers[4])) ? 5 : 4; 5139 sprintf((char *)vers + len, ".%d%s", highest_patch(), 5140 mediumVersion + len); 5141 } 5142 else 5143 sprintf((char *)vers + 3, ".%d", highest_patch()); 5144 } 5145 col += (int)STRLEN(vers); 5146 } 5147 col = (Columns - col) / 2; 5148 if (col < 0) 5149 col = 0; 5150 5151 /* Split up in parts to highlight <> items differently. */ 5152 for (p = mesg; *p != NUL; p += l) 5153 { 5154 clen = 0; 5155 for (l = 0; p[l] != NUL 5156 && (l == 0 || (p[l] != '<' && p[l - 1] != '>')); ++l) 5157 { 5158 #ifdef FEAT_MBYTE 5159 if (has_mbyte) 5160 { 5161 clen += ptr2cells(p + l); 5162 l += (*mb_ptr2len)(p + l) - 1; 5163 } 5164 else 5165 #endif 5166 clen += byte2cells(p[l]); 5167 } 5168 screen_puts_len(p, l, row, col, *p == '<' ? hl_attr(HLF_8) : attr); 5169 col += clen; 5170 } 5171 5172 /* Add the version number to the version line. */ 5173 if (add_version) 5174 screen_puts(vers, row, col, 0); 5175 } 5176 5177 /* 5178 * ":intro": clear screen, display intro screen and wait for return. 5179 */ 5180 void 5181 ex_intro(exarg_T *eap UNUSED) 5182 { 5183 screenclear(); 5184 intro_message(TRUE); 5185 wait_return(TRUE); 5186 } 5187