/** * @author Takahiro / https://github.com/takahirox * * Simple CharsetEncoder. */ function CharsetEncoder() { } /* * Converts from Shift_JIS Uint8Array data to Unicode strings. */ CharsetEncoder.prototype.s2u = function ( uint8Array ) { var t = this.s2uTable; var str = ''; var p = 0; while ( p < uint8Array.length ) { var key = uint8Array[ p ++ ]; if ( ! ( ( key >= 0x00 && key <= 0x7e ) || ( key >= 0xa1 && key <= 0xdf ) ) && p < uint8Array.length ) { key = ( key << 8 ) | uint8Array[ p ++ ]; } if ( t[ key ] === undefined ) { throw 'unknown char code ' + key + '.'; } str += String.fromCharCode( t[ key ] ); } return str; }; CharsetEncoder.prototype.s2uTable = { 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24, 25: 25, 26: 26, 27: 27, 28: 28, 29: 29, 30: 30, 31: 31, 32: 32, 33: 33, 34: 34, 35: 35, 36: 36, 37: 37, 38: 38, 39: 39, 40: 40, 41: 41, 42: 42, 43: 43, 44: 44, 45: 45, 46: 46, 47: 47, 48: 48, 49: 49, 50: 50, 51: 51, 52: 52, 53: 53, 54: 54, 55: 55, 56: 56, 57: 57, 58: 58, 59: 59, 60: 60, 61: 61, 62: 62, 63: 63, 64: 64, 65: 65, 66: 66, 67: 67, 68: 68, 69: 69, 70: 70, 71: 71, 72: 72, 73: 73, 74: 74, 75: 75, 76: 76, 77: 77, 78: 78, 79: 79, 80: 80, 81: 81, 82: 82, 83: 83, 84: 84, 85: 85, 86: 86, 87: 87, 88: 88, 89: 89, 90: 90, 91: 91, 92: 92, 93: 93, 94: 94, 95: 95, 96: 96, 97: 97, 98: 98, 99: 99, 100: 100, 101: 101, 102: 102, 103: 103, 104: 104, 105: 105, 106: 106, 107: 107, 108: 108, 109: 109, 110: 110, 111: 111, 112: 112, 113: 113, 114: 114, 115: 115, 116: 116, 117: 117, 118: 118, 119: 119, 120: 120, 121: 121, 122: 122, 123: 123, 124: 124, 125: 125, 126: 126, 161: 65377, 162: 65378, 163: 65379, 164: 65380, 165: 65381, 166: 65382, 167: 65383, 168: 65384, 169: 65385, 170: 65386, 171: 65387, 172: 65388, 173: 65389, 174: 65390, 175: 65391, 176: 65392, 177: 65393, 178: 65394, 179: 65395, 180: 65396, 181: 65397, 182: 65398, 183: 65399, 184: 65400, 185: 65401, 186: 65402, 187: 65403, 188: 65404, 189: 65405, 190: 65406, 191: 65407, 192: 65408, 193: 65409, 194: 65410, 195: 65411, 196: 65412, 197: 65413, 198: 65414, 199: 65415, 200: 65416, 201: 65417, 202: 65418, 203: 65419, 204: 65420, 205: 65421, 206: 65422, 207: 65423, 208: 65424, 209: 65425, 210: 65426, 211: 65427, 212: 65428, 213: 65429, 214: 65430, 215: 65431, 216: 65432, 217: 65433, 218: 65434, 219: 65435, 220: 65436, 221: 65437, 222: 65438, 223: 65439, 33088: 12288, 33089: 12289, 33090: 12290, 33091: 65292, 33092: 65294, 33093: 12539, 33094: 65306, 33095: 65307, 33096: 65311, 33097: 65281, 33098: 12443, 33099: 12444, 33100: 180, 33101: 65344, 33102: 168, 33103: 65342, 33104: 65507, 33105: 65343, 33106: 12541, 33107: 12542, 33108: 12445, 33109: 12446, 33110: 12291, 33111: 20189, 33112: 12293, 33113: 12294, 33114: 12295, 33115: 12540, 33116: 8213, 33117: 8208, 33118: 65295, 33119: 65340, 33120: 65374, 33121: 8741, 33122: 65372, 33123: 8230, 33124: 8229, 33125: 8216, 33126: 8217, 33127: 8220, 33128: 8221, 33129: 65288, 33130: 65289, 33131: 12308, 33132: 12309, 33133: 65339, 33134: 65341, 33135: 65371, 33136: 65373, 33137: 12296, 33138: 12297, 33139: 12298, 33140: 12299, 33141: 12300, 33142: 12301, 33143: 12302, 33144: 12303, 33145: 12304, 33146: 12305, 33147: 65291, 33148: 65293, 33149: 177, 33150: 215, 33152: 247, 33153: 65309, 33154: 8800, 33155: 65308, 33156: 65310, 33157: 8806, 33158: 8807, 33159: 8734, 33160: 8756, 33161: 9794, 33162: 9792, 33163: 176, 33164: 8242, 33165: 8243, 33166: 8451, 33167: 65509, 33168: 65284, 33169: 65504, 33170: 65505, 33171: 65285, 33172: 65283, 33173: 65286, 33174: 65290, 33175: 65312, 33176: 167, 33177: 9734, 33178: 9733, 33179: 9675, 33180: 9679, 33181: 9678, 33182: 9671, 33183: 9670, 33184: 9633, 33185: 9632, 33186: 9651, 33187: 9650, 33188: 9661, 33189: 9660, 33190: 8251, 33191: 12306, 33192: 8594, 33193: 8592, 33194: 8593, 33195: 8595, 33196: 12307, 33208: 8712, 33209: 8715, 33210: 8838, 33211: 8839, 33212: 8834, 33213: 8835, 33214: 8746, 33215: 8745, 33224: 8743, 33225: 8744, 33226: 65506, 33227: 8658, 33228: 8660, 33229: 8704, 33230: 8707, 33242: 8736, 33243: 8869, 33244: 8978, 33245: 8706, 33246: 8711, 33247: 8801, 33248: 8786, 33249: 8810, 33250: 8811, 33251: 8730, 33252: 8765, 33253: 8733, 33254: 8757, 33255: 8747, 33256: 8748, 33264: 8491, 33265: 8240, 33266: 9839, 33267: 9837, 33268: 9834, 33269: 8224, 33270: 8225, 33271: 182, 33276: 9711, 33359: 65296, 33360: 65297, 33361: 65298, 33362: 65299, 33363: 65300, 33364: 65301, 33365: 65302, 33366: 65303, 33367: 65304, 33368: 65305, 33376: 65313, 33377: 65314, 33378: 65315, 33379: 65316, 33380: 65317, 33381: 65318, 33382: 65319, 33383: 65320, 33384: 65321, 33385: 65322, 33386: 65323, 33387: 65324, 33388: 65325, 33389: 65326, 33390: 65327, 33391: 65328, 33392: 65329, 33393: 65330, 33394: 65331, 33395: 65332, 33396: 65333, 33397: 65334, 33398: 65335, 33399: 65336, 33400: 65337, 33401: 65338, 33409: 65345, 33410: 65346, 33411: 65347, 33412: 65348, 33413: 65349, 33414: 65350, 33415: 65351, 33416: 65352, 33417: 65353, 33418: 65354, 33419: 65355, 33420: 65356, 33421: 65357, 33422: 65358, 33423: 65359, 33424: 65360, 33425: 65361, 33426: 65362, 33427: 65363, 33428: 65364, 33429: 65365, 33430: 65366, 33431: 65367, 33432: 65368, 33433: 65369, 33434: 65370, 33439: 12353, 33440: 12354, 33441: 12355, 33442: 12356, 33443: 12357, 33444: 12358, 33445: 12359, 33446: 12360, 33447: 12361, 33448: 12362, 33449: 12363, 33450: 12364, 33451: 12365, 33452: 12366, 33453: 12367, 33454: 12368, 33455: 12369, 33456: 12370, 33457: 12371, 33458: 12372, 33459: 12373, 33460: 12374, 33461: 12375, 33462: 12376, 33463: 12377, 33464: 12378, 33465: 12379, 33466: 12380, 33467: 12381, 33468: 12382, 33469: 12383, 33470: 12384, 33471: 12385, 33472: 12386, 33473: 12387, 33474: 12388, 33475: 12389, 33476: 12390, 33477: 12391, 33478: 12392, 33479: 12393, 33480: 12394, 33481: 12395, 33482: 12396, 33483: 12397, 33484: 12398, 33485: 12399, 33486: 12400, 33487: 12401, 33488: 12402, 33489: 12403, 33490: 12404, 33491: 12405, 33492: 12406, 33493: 12407, 33494: 12408, 33495: 12409, 33496: 12410, 33497: 12411, 33498: 12412, 33499: 12413, 33500: 12414, 33501: 12415, 33502: 12416, 33503: 12417, 33504: 12418, 33505: 12419, 33506: 12420, 33507: 12421, 33508: 12422, 33509: 12423, 33510: 12424, 33511: 12425, 33512: 12426, 33513: 12427, 33514: 12428, 33515: 12429, 33516: 12430, 33517: 12431, 33518: 12432, 33519: 12433, 33520: 12434, 33521: 12435, 33600: 12449, 33601: 12450, 33602: 12451, 33603: 12452, 33604: 12453, 33605: 12454, 33606: 12455, 33607: 12456, 33608: 12457, 33609: 12458, 33610: 12459, 33611: 12460, 33612: 12461, 33613: 12462, 33614: 12463, 33615: 12464, 33616: 12465, 33617: 12466, 33618: 12467, 33619: 12468, 33620: 12469, 33621: 12470, 33622: 12471, 33623: 12472, 33624: 12473, 33625: 12474, 33626: 12475, 33627: 12476, 33628: 12477, 33629: 12478, 33630: 12479, 33631: 12480, 33632: 12481, 33633: 12482, 33634: 12483, 33635: 12484, 33636: 12485, 33637: 12486, 33638: 12487, 33639: 12488, 33640: 12489, 33641: 12490, 33642: 12491, 33643: 12492, 33644: 12493, 33645: 12494, 33646: 12495, 33647: 12496, 33648: 12497, 33649: 12498, 33650: 12499, 33651: 12500, 33652: 12501, 33653: 12502, 33654: 12503, 33655: 12504, 33656: 12505, 33657: 12506, 33658: 12507, 33659: 12508, 33660: 12509, 33661: 12510, 33662: 12511, 33664: 12512, 33665: 12513, 33666: 12514, 33667: 12515, 33668: 12516, 33669: 12517, 33670: 12518, 33671: 12519, 33672: 12520, 33673: 12521, 33674: 12522, 33675: 12523, 33676: 12524, 33677: 12525, 33678: 12526, 33679: 12527, 33680: 12528, 33681: 12529, 33682: 12530, 33683: 12531, 33684: 12532, 33685: 12533, 33686: 12534, 33695: 913, 33696: 914, 33697: 915, 33698: 916, 33699: 917, 33700: 918, 33701: 919, 33702: 920, 33703: 921, 33704: 922, 33705: 923, 33706: 924, 33707: 925, 33708: 926, 33709: 927, 33710: 928, 33711: 929, 33712: 931, 33713: 932, 33714: 933, 33715: 934, 33716: 935, 33717: 936, 33718: 937, 33727: 945, 33728: 946, 33729: 947, 33730: 948, 33731: 949, 33732: 950, 33733: 951, 33734: 952, 33735: 953, 33736: 954, 33737: 955, 33738: 956, 33739: 957, 33740: 958, 33741: 959, 33742: 960, 33743: 961, 33744: 963, 33745: 964, 33746: 965, 33747: 966, 33748: 967, 33749: 968, 33750: 969, 33856: 1040, 33857: 1041, 33858: 1042, 33859: 1043, 33860: 1044, 33861: 1045, 33862: 1025, 33863: 1046, 33864: 1047, 33865: 1048, 33866: 1049, 33867: 1050, 33868: 1051, 33869: 1052, 33870: 1053, 33871: 1054, 33872: 1055, 33873: 1056, 33874: 1057, 33875: 1058, 33876: 1059, 33877: 1060, 33878: 1061, 33879: 1062, 33880: 1063, 33881: 1064, 33882: 1065, 33883: 1066, 33884: 1067, 33885: 1068, 33886: 1069, 33887: 1070, 33888: 1071, 33904: 1072, 33905: 1073, 33906: 1074, 33907: 1075, 33908: 1076, 33909: 1077, 33910: 1105, 33911: 1078, 33912: 1079, 33913: 1080, 33914: 1081, 33915: 1082, 33916: 1083, 33917: 1084, 33918: 1085, 33920: 1086, 33921: 1087, 33922: 1088, 33923: 1089, 33924: 1090, 33925: 1091, 33926: 1092, 33927: 1093, 33928: 1094, 33929: 1095, 33930: 1096, 33931: 1097, 33932: 1098, 33933: 1099, 33934: 1100, 33935: 1101, 33936: 1102, 33937: 1103, 33951: 9472, 33952: 9474, 33953: 9484, 33954: 9488, 33955: 9496, 33956: 9492, 33957: 9500, 33958: 9516, 33959: 9508, 33960: 9524, 33961: 9532, 33962: 9473, 33963: 9475, 33964: 9487, 33965: 9491, 33966: 9499, 33967: 9495, 33968: 9507, 33969: 9523, 33970: 9515, 33971: 9531, 33972: 9547, 33973: 9504, 33974: 9519, 33975: 9512, 33976: 9527, 33977: 9535, 33978: 9501, 33979: 9520, 33980: 9509, 33981: 9528, 33982: 9538, 34624: 9312, 34625: 9313, 34626: 9314, 34627: 9315, 34628: 9316, 34629: 9317, 34630: 9318, 34631: 9319, 34632: 9320, 34633: 9321, 34634: 9322, 34635: 9323, 34636: 9324, 34637: 9325, 34638: 9326, 34639: 9327, 34640: 9328, 34641: 9329, 34642: 9330, 34643: 9331, 34644: 8544, 34645: 8545, 34646: 8546, 34647: 8547, 34648: 8548, 34649: 8549, 34650: 8550, 34651: 8551, 34652: 8552, 34653: 8553, 34655: 13129, 34656: 13076, 34657: 13090, 34658: 13133, 34659: 13080, 34660: 13095, 34661: 13059, 34662: 13110, 34663: 13137, 34664: 13143, 34665: 13069, 34666: 13094, 34667: 13091, 34668: 13099, 34669: 13130, 34670: 13115, 34671: 13212, 34672: 13213, 34673: 13214, 34674: 13198, 34675: 13199, 34676: 13252, 34677: 13217, 34686: 13179, 34688: 12317, 34689: 12319, 34690: 8470, 34691: 13261, 34692: 8481, 34693: 12964, 34694: 12965, 34695: 12966, 34696: 12967, 34697: 12968, 34698: 12849, 34699: 12850, 34700: 12857, 34701: 13182, 34702: 13181, 34703: 13180, 34704: 8786, 34705: 8801, 34706: 8747, 34707: 8750, 34708: 8721, 34709: 8730, 34710: 8869, 34711: 8736, 34712: 8735, 34713: 8895, 34714: 8757, 34715: 8745, 34716: 8746, 34975: 20124, 34976: 21782, 34977: 23043, 34978: 38463, 34979: 21696, 34980: 24859, 34981: 25384, 34982: 23030, 34983: 36898, 34984: 33909, 34985: 33564, 34986: 31312, 34987: 24746, 34988: 25569, 34989: 28197, 34990: 26093, 34991: 33894, 34992: 33446, 34993: 39925, 34994: 26771, 34995: 22311, 34996: 26017, 34997: 25201, 34998: 23451, 34999: 22992, 35000: 34427, 35001: 39156, 35002: 32098, 35003: 32190, 35004: 39822, 35005: 25110, 35006: 31903, 35007: 34999, 35008: 23433, 35009: 24245, 35010: 25353, 35011: 26263, 35012: 26696, 35013: 38343, 35014: 38797, 35015: 26447, 35016: 20197, 35017: 20234, 35018: 20301, 35019: 20381, 35020: 20553, 35021: 22258, 35022: 22839, 35023: 22996, 35024: 23041, 35025: 23561, 35026: 24799, 35027: 24847, 35028: 24944, 35029: 26131, 35030: 26885, 35031: 28858, 35032: 30031, 35033: 30064, 35034: 31227, 35035: 32173, 35036: 32239, 35037: 32963, 35038: 33806, 35039: 34915, 35040: 35586, 35041: 36949, 35042: 36986, 35043: 21307, 35044: 20117, 35045: 20133, 35046: 22495, 35047: 32946, 35048: 37057, 35049: 30959, 35050: 19968, 35051: 22769, 35052: 28322, 35053: 36920, 35054: 31282, 35055: 33576, 35056: 33419, 35057: 39983, 35058: 20801, 35059: 21360, 35060: 21693, 35061: 21729, 35062: 22240, 35063: 23035, 35064: 24341, 35065: 39154, 35066: 28139, 35067: 32996, 35068: 34093, 35136: 38498, 35137: 38512, 35138: 38560, 35139: 38907, 35140: 21515, 35141: 21491, 35142: 23431, 35143: 28879, 35144: 32701, 35145: 36802, 35146: 38632, 35147: 21359, 35148: 40284, 35149: 31418, 35150: 19985, 35151: 30867, 35152: 33276, 35153: 28198, 35154: 22040, 35155: 21764, 35156: 27421, 35157: 34074, 35158: 39995, 35159: 23013, 35160: 21417, 35161: 28006, 35162: 29916, 35163: 38287, 35164: 22082, 35165: 20113, 35166: 36939, 35167: 38642, 35168: 33615, 35169: 39180, 35170: 21473, 35171: 21942, 35172: 23344, 35173: 24433, 35174: 26144, 35175: 26355, 35176: 26628, 35177: 27704, 35178: 27891, 35179: 27945, 35180: 29787, 35181: 30408, 35182: 31310, 35183: 38964, 35184: 33521, 35185: 34907, 35186: 35424, 35187: 37613, 35188: 28082, 35189: 30123, 35190: 30410, 35191: 39365, 35192: 24742, 35193: 35585, 35194: 36234, 35195: 38322, 35196: 27022, 35197: 21421, 35198: 20870, 35200: 22290, 35201: 22576, 35202: 22852, 35203: 23476, 35204: 24310, 35205: 24616, 35206: 25513, 35207: 25588, 35208: 27839, 35209: 28436, 35210: 28814, 35211: 28948, 35212: 29017, 35213: 29141, 35214: 29503, 35215: 32257, 35216: 33398, 35217: 33489, 35218: 34199, 35219: 36960, 35220: 37467, 35221: 40219, 35222: 22633, 35223: 26044, 35224: 27738, 35225: 29989, 35226: 20985, 35227: 22830, 35228: 22885, 35229: 24448, 35230: 24540, 35231: 25276, 35232: 26106, 35233: 27178, 35234: 27431, 35235: 27572, 35236: 29579, 35237: 32705, 35238: 35158, 35239: 40236, 35240: 40206, 35241: 40644, 35242: 23713, 35243: 27798, 35244: 33659, 35245: 20740, 35246: 23627, 35247: 25014, 35248: 33222, 35249: 26742, 35250: 29281, 35251: 20057, 35252: 20474, 35253: 21368, 35254: 24681, 35255: 28201, 35256: 31311, 35257: 38899, 35258: 19979, 35259: 21270, 35260: 20206, 35261: 20309, 35262: 20285, 35263: 20385, 35264: 20339, 35265: 21152, 35266: 21487, 35267: 22025, 35268: 22799, 35269: 23233, 35270: 23478, 35271: 23521, 35272: 31185, 35273: 26247, 35274: 26524, 35275: 26550, 35276: 27468, 35277: 27827, 35278: 28779, 35279: 29634, 35280: 31117, 35281: 31166, 35282: 31292, 35283: 31623, 35284: 33457, 35285: 33499, 35286: 33540, 35287: 33655, 35288: 33775, 35289: 33747, 35290: 34662, 35291: 35506, 35292: 22057, 35293: 36008, 35294: 36838, 35295: 36942, 35296: 38686, 35297: 34442, 35298: 20420, 35299: 23784, 35300: 25105, 35301: 29273, 35302: 30011, 35303: 33253, 35304: 33469, 35305: 34558, 35306: 36032, 35307: 38597, 35308: 39187, 35309: 39381, 35310: 20171, 35311: 20250, 35312: 35299, 35313: 22238, 35314: 22602, 35315: 22730, 35316: 24315, 35317: 24555, 35318: 24618, 35319: 24724, 35320: 24674, 35321: 25040, 35322: 25106, 35323: 25296, 35324: 25913, 35392: 39745, 35393: 26214, 35394: 26800, 35395: 28023, 35396: 28784, 35397: 30028, 35398: 30342, 35399: 32117, 35400: 33445, 35401: 34809, 35402: 38283, 35403: 38542, 35404: 35997, 35405: 20977, 35406: 21182, 35407: 22806, 35408: 21683, 35409: 23475, 35410: 23830, 35411: 24936, 35412: 27010, 35413: 28079, 35414: 30861, 35415: 33995, 35416: 34903, 35417: 35442, 35418: 37799, 35419: 39608, 35420: 28012, 35421: 39336, 35422: 34521, 35423: 22435, 35424: 26623, 35425: 34510, 35426: 37390, 35427: 21123, 35428: 22151, 35429: 21508, 35430: 24275, 35431: 25313, 35432: 25785, 35433: 26684, 35434: 26680, 35435: 27579, 35436: 29554, 35437: 30906, 35438: 31339, 35439: 35226, 35440: 35282, 35441: 36203, 35442: 36611, 35443: 37101, 35444: 38307, 35445: 38548, 35446: 38761, 35447: 23398, 35448: 23731, 35449: 27005, 35450: 38989, 35451: 38990, 35452: 25499, 35453: 31520, 35454: 27179, 35456: 27263, 35457: 26806, 35458: 39949, 35459: 28511, 35460: 21106, 35461: 21917, 35462: 24688, 35463: 25324, 35464: 27963, 35465: 28167, 35466: 28369, 35467: 33883, 35468: 35088, 35469: 36676, 35470: 19988, 35471: 39993, 35472: 21494, 35473: 26907, 35474: 27194, 35475: 38788, 35476: 26666, 35477: 20828, 35478: 31427, 35479: 33970, 35480: 37340, 35481: 37772, 35482: 22107, 35483: 40232, 35484: 26658, 35485: 33541, 35486: 33841, 35487: 31909, 35488: 21000, 35489: 33477, 35490: 29926, 35491: 20094, 35492: 20355, 35493: 20896, 35494: 23506, 35495: 21002, 35496: 21208, 35497: 21223, 35498: 24059, 35499: 21914, 35500: 22570, 35501: 23014, 35502: 23436, 35503: 23448, 35504: 23515, 35505: 24178, 35506: 24185, 35507: 24739, 35508: 24863, 35509: 24931, 35510: 25022, 35511: 25563, 35512: 25954, 35513: 26577, 35514: 26707, 35515: 26874, 35516: 27454, 35517: 27475, 35518: 27735, 35519: 28450, 35520: 28567, 35521: 28485, 35522: 29872, 35523: 29976, 35524: 30435, 35525: 30475, 35526: 31487, 35527: 31649, 35528: 31777, 35529: 32233, 35530: 32566, 35531: 32752, 35532: 32925, 35533: 33382, 35534: 33694, 35535: 35251, 35536: 35532, 35537: 36011, 35538: 36996, 35539: 37969, 35540: 38291, 35541: 38289, 35542: 38306, 35543: 38501, 35544: 38867, 35545: 39208, 35546: 33304, 35547: 20024, 35548: 21547, 35549: 23736, 35550: 24012, 35551: 29609, 35552: 30284, 35553: 30524, 35554: 23721, 35555: 32747, 35556: 36107, 35557: 38593, 35558: 38929, 35559: 38996, 35560: 39000, 35561: 20225, 35562: 20238, 35563: 21361, 35564: 21916, 35565: 22120, 35566: 22522, 35567: 22855, 35568: 23305, 35569: 23492, 35570: 23696, 35571: 24076, 35572: 24190, 35573: 24524, 35574: 25582, 35575: 26426, 35576: 26071, 35577: 26082, 35578: 26399, 35579: 26827, 35580: 26820, 35648: 27231, 35649: 24112, 35650: 27589, 35651: 27671, 35652: 27773, 35653: 30079, 35654: 31048, 35655: 23395, 35656: 31232, 35657: 32000, 35658: 24509, 35659: 35215, 35660: 35352, 35661: 36020, 35662: 36215, 35663: 36556, 35664: 36637, 35665: 39138, 35666: 39438, 35667: 39740, 35668: 20096, 35669: 20605, 35670: 20736, 35671: 22931, 35672: 23452, 35673: 25135, 35674: 25216, 35675: 25836, 35676: 27450, 35677: 29344, 35678: 30097, 35679: 31047, 35680: 32681, 35681: 34811, 35682: 35516, 35683: 35696, 35684: 25516, 35685: 33738, 35686: 38816, 35687: 21513, 35688: 21507, 35689: 21931, 35690: 26708, 35691: 27224, 35692: 35440, 35693: 30759, 35694: 26485, 35695: 40653, 35696: 21364, 35697: 23458, 35698: 33050, 35699: 34384, 35700: 36870, 35701: 19992, 35702: 20037, 35703: 20167, 35704: 20241, 35705: 21450, 35706: 21560, 35707: 23470, 35708: 24339, 35709: 24613, 35710: 25937, 35712: 26429, 35713: 27714, 35714: 27762, 35715: 27875, 35716: 28792, 35717: 29699, 35718: 31350, 35719: 31406, 35720: 31496, 35721: 32026, 35722: 31998, 35723: 32102, 35724: 26087, 35725: 29275, 35726: 21435, 35727: 23621, 35728: 24040, 35729: 25298, 35730: 25312, 35731: 25369, 35732: 28192, 35733: 34394, 35734: 35377, 35735: 36317, 35736: 37624, 35737: 28417, 35738: 31142, 35739: 39770, 35740: 20136, 35741: 20139, 35742: 20140, 35743: 20379, 35744: 20384, 35745: 20689, 35746: 20807, 35747: 31478, 35748: 20849, 35749: 20982, 35750: 21332, 35751: 21281, 35752: 21375, 35753: 21483, 35754: 21932, 35755: 22659, 35756: 23777, 35757: 24375, 35758: 24394, 35759: 24623, 35760: 24656, 35761: 24685, 35762: 25375, 35763: 25945, 35764: 27211, 35765: 27841, 35766: 29378, 35767: 29421, 35768: 30703, 35769: 33016, 35770: 33029, 35771: 33288, 35772: 34126, 35773: 37111, 35774: 37857, 35775: 38911, 35776: 39255, 35777: 39514, 35778: 20208, 35779: 20957, 35780: 23597, 35781: 26241, 35782: 26989, 35783: 23616, 35784: 26354, 35785: 26997, 35786: 29577, 35787: 26704, 35788: 31873, 35789: 20677, 35790: 21220, 35791: 22343, 35792: 24062, 35793: 37670, 35794: 26020, 35795: 27427, 35796: 27453, 35797: 29748, 35798: 31105, 35799: 31165, 35800: 31563, 35801: 32202, 35802: 33465, 35803: 33740, 35804: 34943, 35805: 35167, 35806: 35641, 35807: 36817, 35808: 37329, 35809: 21535, 35810: 37504, 35811: 20061, 35812: 20534, 35813: 21477, 35814: 21306, 35815: 29399, 35816: 29590, 35817: 30697, 35818: 33510, 35819: 36527, 35820: 39366, 35821: 39368, 35822: 39378, 35823: 20855, 35824: 24858, 35825: 34398, 35826: 21936, 35827: 31354, 35828: 20598, 35829: 23507, 35830: 36935, 35831: 38533, 35832: 20018, 35833: 27355, 35834: 37351, 35835: 23633, 35836: 23624, 35904: 25496, 35905: 31391, 35906: 27795, 35907: 38772, 35908: 36705, 35909: 31402, 35910: 29066, 35911: 38536, 35912: 31874, 35913: 26647, 35914: 32368, 35915: 26705, 35916: 37740, 35917: 21234, 35918: 21531, 35919: 34219, 35920: 35347, 35921: 32676, 35922: 36557, 35923: 37089, 35924: 21350, 35925: 34952, 35926: 31041, 35927: 20418, 35928: 20670, 35929: 21009, 35930: 20804, 35931: 21843, 35932: 22317, 35933: 29674, 35934: 22411, 35935: 22865, 35936: 24418, 35937: 24452, 35938: 24693, 35939: 24950, 35940: 24935, 35941: 25001, 35942: 25522, 35943: 25658, 35944: 25964, 35945: 26223, 35946: 26690, 35947: 28179, 35948: 30054, 35949: 31293, 35950: 31995, 35951: 32076, 35952: 32153, 35953: 32331, 35954: 32619, 35955: 33550, 35956: 33610, 35957: 34509, 35958: 35336, 35959: 35427, 35960: 35686, 35961: 36605, 35962: 38938, 35963: 40335, 35964: 33464, 35965: 36814, 35966: 39912, 35968: 21127, 35969: 25119, 35970: 25731, 35971: 28608, 35972: 38553, 35973: 26689, 35974: 20625, 35975: 27424, 35976: 27770, 35977: 28500, 35978: 31348, 35979: 32080, 35980: 34880, 35981: 35363, 35982: 26376, 35983: 20214, 35984: 20537, 35985: 20518, 35986: 20581, 35987: 20860, 35988: 21048, 35989: 21091, 35990: 21927, 35991: 22287, 35992: 22533, 35993: 23244, 35994: 24314, 35995: 25010, 35996: 25080, 35997: 25331, 35998: 25458, 35999: 26908, 36000: 27177, 36001: 29309, 36002: 29356, 36003: 29486, 36004: 30740, 36005: 30831, 36006: 32121, 36007: 30476, 36008: 32937, 36009: 35211, 36010: 35609, 36011: 36066, 36012: 36562, 36013: 36963, 36014: 37749, 36015: 38522, 36016: 38997, 36017: 39443, 36018: 40568, 36019: 20803, 36020: 21407, 36021: 21427, 36022: 24187, 36023: 24358, 36024: 28187, 36025: 28304, 36026: 29572, 36027: 29694, 36028: 32067, 36029: 33335, 36030: 35328, 36031: 35578, 36032: 38480, 36033: 20046, 36034: 20491, 36035: 21476, 36036: 21628, 36037: 22266, 36038: 22993, 36039: 23396, 36040: 24049, 36041: 24235, 36042: 24359, 36043: 25144, 36044: 25925, 36045: 26543, 36046: 28246, 36047: 29392, 36048: 31946, 36049: 34996, 36050: 32929, 36051: 32993, 36052: 33776, 36053: 34382, 36054: 35463, 36055: 36328, 36056: 37431, 36057: 38599, 36058: 39015, 36059: 40723, 36060: 20116, 36061: 20114, 36062: 20237, 36063: 21320, 36064: 21577, 36065: 21566, 36066: 23087, 36067: 24460, 36068: 24481, 36069: 24735, 36070: 26791, 36071: 27278, 36072: 29786, 36073: 30849, 36074: 35486, 36075: 35492, 36076: 35703, 36077: 37264, 36078: 20062, 36079: 39881, 36080: 20132, 36081: 20348, 36082: 20399, 36083: 20505, 36084: 20502, 36085: 20809, 36086: 20844, 36087: 21151, 36088: 21177, 36089: 21246, 36090: 21402, 36091: 21475, 36092: 21521, 36160: 21518, 36161: 21897, 36162: 22353, 36163: 22434, 36164: 22909, 36165: 23380, 36166: 23389, 36167: 23439, 36168: 24037, 36169: 24039, 36170: 24055, 36171: 24184, 36172: 24195, 36173: 24218, 36174: 24247, 36175: 24344, 36176: 24658, 36177: 24908, 36178: 25239, 36179: 25304, 36180: 25511, 36181: 25915, 36182: 26114, 36183: 26179, 36184: 26356, 36185: 26477, 36186: 26657, 36187: 26775, 36188: 27083, 36189: 27743, 36190: 27946, 36191: 28009, 36192: 28207, 36193: 28317, 36194: 30002, 36195: 30343, 36196: 30828, 36197: 31295, 36198: 31968, 36199: 32005, 36200: 32024, 36201: 32094, 36202: 32177, 36203: 32789, 36204: 32771, 36205: 32943, 36206: 32945, 36207: 33108, 36208: 33167, 36209: 33322, 36210: 33618, 36211: 34892, 36212: 34913, 36213: 35611, 36214: 36002, 36215: 36092, 36216: 37066, 36217: 37237, 36218: 37489, 36219: 30783, 36220: 37628, 36221: 38308, 36222: 38477, 36224: 38917, 36225: 39321, 36226: 39640, 36227: 40251, 36228: 21083, 36229: 21163, 36230: 21495, 36231: 21512, 36232: 22741, 36233: 25335, 36234: 28640, 36235: 35946, 36236: 36703, 36237: 40633, 36238: 20811, 36239: 21051, 36240: 21578, 36241: 22269, 36242: 31296, 36243: 37239, 36244: 40288, 36245: 40658, 36246: 29508, 36247: 28425, 36248: 33136, 36249: 29969, 36250: 24573, 36251: 24794, 36252: 39592, 36253: 29403, 36254: 36796, 36255: 27492, 36256: 38915, 36257: 20170, 36258: 22256, 36259: 22372, 36260: 22718, 36261: 23130, 36262: 24680, 36263: 25031, 36264: 26127, 36265: 26118, 36266: 26681, 36267: 26801, 36268: 28151, 36269: 30165, 36270: 32058, 36271: 33390, 36272: 39746, 36273: 20123, 36274: 20304, 36275: 21449, 36276: 21766, 36277: 23919, 36278: 24038, 36279: 24046, 36280: 26619, 36281: 27801, 36282: 29811, 36283: 30722, 36284: 35408, 36285: 37782, 36286: 35039, 36287: 22352, 36288: 24231, 36289: 25387, 36290: 20661, 36291: 20652, 36292: 20877, 36293: 26368, 36294: 21705, 36295: 22622, 36296: 22971, 36297: 23472, 36298: 24425, 36299: 25165, 36300: 25505, 36301: 26685, 36302: 27507, 36303: 28168, 36304: 28797, 36305: 37319, 36306: 29312, 36307: 30741, 36308: 30758, 36309: 31085, 36310: 25998, 36311: 32048, 36312: 33756, 36313: 35009, 36314: 36617, 36315: 38555, 36316: 21092, 36317: 22312, 36318: 26448, 36319: 32618, 36320: 36001, 36321: 20916, 36322: 22338, 36323: 38442, 36324: 22586, 36325: 27018, 36326: 32948, 36327: 21682, 36328: 23822, 36329: 22524, 36330: 30869, 36331: 40442, 36332: 20316, 36333: 21066, 36334: 21643, 36335: 25662, 36336: 26152, 36337: 26388, 36338: 26613, 36339: 31364, 36340: 31574, 36341: 32034, 36342: 37679, 36343: 26716, 36344: 39853, 36345: 31545, 36346: 21273, 36347: 20874, 36348: 21047, 36416: 23519, 36417: 25334, 36418: 25774, 36419: 25830, 36420: 26413, 36421: 27578, 36422: 34217, 36423: 38609, 36424: 30352, 36425: 39894, 36426: 25420, 36427: 37638, 36428: 39851, 36429: 30399, 36430: 26194, 36431: 19977, 36432: 20632, 36433: 21442, 36434: 23665, 36435: 24808, 36436: 25746, 36437: 25955, 36438: 26719, 36439: 29158, 36440: 29642, 36441: 29987, 36442: 31639, 36443: 32386, 36444: 34453, 36445: 35715, 36446: 36059, 36447: 37240, 36448: 39184, 36449: 26028, 36450: 26283, 36451: 27531, 36452: 20181, 36453: 20180, 36454: 20282, 36455: 20351, 36456: 21050, 36457: 21496, 36458: 21490, 36459: 21987, 36460: 22235, 36461: 22763, 36462: 22987, 36463: 22985, 36464: 23039, 36465: 23376, 36466: 23629, 36467: 24066, 36468: 24107, 36469: 24535, 36470: 24605, 36471: 25351, 36472: 25903, 36473: 23388, 36474: 26031, 36475: 26045, 36476: 26088, 36477: 26525, 36478: 27490, 36480: 27515, 36481: 27663, 36482: 29509, 36483: 31049, 36484: 31169, 36485: 31992, 36486: 32025, 36487: 32043, 36488: 32930, 36489: 33026, 36490: 33267, 36491: 35222, 36492: 35422, 36493: 35433, 36494: 35430, 36495: 35468, 36496: 35566, 36497: 36039, 36498: 36060, 36499: 38604, 36500: 39164, 36501: 27503, 36502: 20107, 36503: 20284, 36504: 20365, 36505: 20816, 36506: 23383, 36507: 23546, 36508: 24904, 36509: 25345, 36510: 26178, 36511: 27425, 36512: 28363, 36513: 27835, 36514: 29246, 36515: 29885, 36516: 30164, 36517: 30913, 36518: 31034, 36519: 32780, 36520: 32819, 36521: 33258, 36522: 33940, 36523: 36766, 36524: 27728, 36525: 40575, 36526: 24335, 36527: 35672, 36528: 40235, 36529: 31482, 36530: 36600, 36531: 23437, 36532: 38635, 36533: 19971, 36534: 21489, 36535: 22519, 36536: 22833, 36537: 23241, 36538: 23460, 36539: 24713, 36540: 28287, 36541: 28422, 36542: 30142, 36543: 36074, 36544: 23455, 36545: 34048, 36546: 31712, 36547: 20594, 36548: 26612, 36549: 33437, 36550: 23649, 36551: 34122, 36552: 32286, 36553: 33294, 36554: 20889, 36555: 23556, 36556: 25448, 36557: 36198, 36558: 26012, 36559: 29038, 36560: 31038, 36561: 32023, 36562: 32773, 36563: 35613, 36564: 36554, 36565: 36974, 36566: 34503, 36567: 37034, 36568: 20511, 36569: 21242, 36570: 23610, 36571: 26451, 36572: 28796, 36573: 29237, 36574: 37196, 36575: 37320, 36576: 37675, 36577: 33509, 36578: 23490, 36579: 24369, 36580: 24825, 36581: 20027, 36582: 21462, 36583: 23432, 36584: 25163, 36585: 26417, 36586: 27530, 36587: 29417, 36588: 29664, 36589: 31278, 36590: 33131, 36591: 36259, 36592: 37202, 36593: 39318, 36594: 20754, 36595: 21463, 36596: 21610, 36597: 23551, 36598: 25480, 36599: 27193, 36600: 32172, 36601: 38656, 36602: 22234, 36603: 21454, 36604: 21608, 36672: 23447, 36673: 23601, 36674: 24030, 36675: 20462, 36676: 24833, 36677: 25342, 36678: 27954, 36679: 31168, 36680: 31179, 36681: 32066, 36682: 32333, 36683: 32722, 36684: 33261, 36685: 33311, 36686: 33936, 36687: 34886, 36688: 35186, 36689: 35728, 36690: 36468, 36691: 36655, 36692: 36913, 36693: 37195, 36694: 37228, 36695: 38598, 36696: 37276, 36697: 20160, 36698: 20303, 36699: 20805, 36700: 21313, 36701: 24467, 36702: 25102, 36703: 26580, 36704: 27713, 36705: 28171, 36706: 29539, 36707: 32294, 36708: 37325, 36709: 37507, 36710: 21460, 36711: 22809, 36712: 23487, 36713: 28113, 36714: 31069, 36715: 32302, 36716: 31899, 36717: 22654, 36718: 29087, 36719: 20986, 36720: 34899, 36721: 36848, 36722: 20426, 36723: 23803, 36724: 26149, 36725: 30636, 36726: 31459, 36727: 33308, 36728: 39423, 36729: 20934, 36730: 24490, 36731: 26092, 36732: 26991, 36733: 27529, 36734: 28147, 36736: 28310, 36737: 28516, 36738: 30462, 36739: 32020, 36740: 24033, 36741: 36981, 36742: 37255, 36743: 38918, 36744: 20966, 36745: 21021, 36746: 25152, 36747: 26257, 36748: 26329, 36749: 28186, 36750: 24246, 36751: 32210, 36752: 32626, 36753: 26360, 36754: 34223, 36755: 34295, 36756: 35576, 36757: 21161, 36758: 21465, 36759: 22899, 36760: 24207, 36761: 24464, 36762: 24661, 36763: 37604, 36764: 38500, 36765: 20663, 36766: 20767, 36767: 21213, 36768: 21280, 36769: 21319, 36770: 21484, 36771: 21736, 36772: 21830, 36773: 21809, 36774: 22039, 36775: 22888, 36776: 22974, 36777: 23100, 36778: 23477, 36779: 23558, 36780: 23567, 36781: 23569, 36782: 23578, 36783: 24196, 36784: 24202, 36785: 24288, 36786: 24432, 36787: 25215, 36788: 25220, 36789: 25307, 36790: 25484, 36791: 25463, 36792: 26119, 36793: 26124, 36794: 26157, 36795: 26230, 36796: 26494, 36797: 26786, 36798: 27167, 36799: 27189, 36800: 27836, 36801: 28040, 36802: 28169, 36803: 28248, 36804: 28988, 36805: 28966, 36806: 29031, 36807: 30151, 36808: 30465, 36809: 30813, 36810: 30977, 36811: 31077, 36812: 31216, 36813: 31456, 36814: 31505, 36815: 31911, 36816: 32057, 36817: 32918, 36818: 33750, 36819: 33931, 36820: 34121, 36821: 34909, 36822: 35059, 36823: 35359, 36824: 35388, 36825: 35412, 36826: 35443, 36827: 35937, 36828: 36062, 36829: 37284, 36830: 37478, 36831: 37758, 36832: 37912, 36833: 38556, 36834: 38808, 36835: 19978, 36836: 19976, 36837: 19998, 36838: 20055, 36839: 20887, 36840: 21104, 36841: 22478, 36842: 22580, 36843: 22732, 36844: 23330, 36845: 24120, 36846: 24773, 36847: 25854, 36848: 26465, 36849: 26454, 36850: 27972, 36851: 29366, 36852: 30067, 36853: 31331, 36854: 33976, 36855: 35698, 36856: 37304, 36857: 37664, 36858: 22065, 36859: 22516, 36860: 39166, 36928: 25325, 36929: 26893, 36930: 27542, 36931: 29165, 36932: 32340, 36933: 32887, 36934: 33394, 36935: 35302, 36936: 39135, 36937: 34645, 36938: 36785, 36939: 23611, 36940: 20280, 36941: 20449, 36942: 20405, 36943: 21767, 36944: 23072, 36945: 23517, 36946: 23529, 36947: 24515, 36948: 24910, 36949: 25391, 36950: 26032, 36951: 26187, 36952: 26862, 36953: 27035, 36954: 28024, 36955: 28145, 36956: 30003, 36957: 30137, 36958: 30495, 36959: 31070, 36960: 31206, 36961: 32051, 36962: 33251, 36963: 33455, 36964: 34218, 36965: 35242, 36966: 35386, 36967: 36523, 36968: 36763, 36969: 36914, 36970: 37341, 36971: 38663, 36972: 20154, 36973: 20161, 36974: 20995, 36975: 22645, 36976: 22764, 36977: 23563, 36978: 29978, 36979: 23613, 36980: 33102, 36981: 35338, 36982: 36805, 36983: 38499, 36984: 38765, 36985: 31525, 36986: 35535, 36987: 38920, 36988: 37218, 36989: 22259, 36990: 21416, 36992: 36887, 36993: 21561, 36994: 22402, 36995: 24101, 36996: 25512, 36997: 27700, 36998: 28810, 36999: 30561, 37000: 31883, 37001: 32736, 37002: 34928, 37003: 36930, 37004: 37204, 37005: 37648, 37006: 37656, 37007: 38543, 37008: 29790, 37009: 39620, 37010: 23815, 37011: 23913, 37012: 25968, 37013: 26530, 37014: 36264, 37015: 38619, 37016: 25454, 37017: 26441, 37018: 26905, 37019: 33733, 37020: 38935, 37021: 38592, 37022: 35070, 37023: 28548, 37024: 25722, 37025: 23544, 37026: 19990, 37027: 28716, 37028: 30045, 37029: 26159, 37030: 20932, 37031: 21046, 37032: 21218, 37033: 22995, 37034: 24449, 37035: 24615, 37036: 25104, 37037: 25919, 37038: 25972, 37039: 26143, 37040: 26228, 37041: 26866, 37042: 26646, 37043: 27491, 37044: 28165, 37045: 29298, 37046: 29983, 37047: 30427, 37048: 31934, 37049: 32854, 37050: 22768, 37051: 35069, 37052: 35199, 37053: 35488, 37054: 35475, 37055: 35531, 37056: 36893, 37057: 37266, 37058: 38738, 37059: 38745, 37060: 25993, 37061: 31246, 37062: 33030, 37063: 38587, 37064: 24109, 37065: 24796, 37066: 25114, 37067: 26021, 37068: 26132, 37069: 26512, 37070: 30707, 37071: 31309, 37072: 31821, 37073: 32318, 37074: 33034, 37075: 36012, 37076: 36196, 37077: 36321, 37078: 36447, 37079: 30889, 37080: 20999, 37081: 25305, 37082: 25509, 37083: 25666, 37084: 25240, 37085: 35373, 37086: 31363, 37087: 31680, 37088: 35500, 37089: 38634, 37090: 32118, 37091: 33292, 37092: 34633, 37093: 20185, 37094: 20808, 37095: 21315, 37096: 21344, 37097: 23459, 37098: 23554, 37099: 23574, 37100: 24029, 37101: 25126, 37102: 25159, 37103: 25776, 37104: 26643, 37105: 26676, 37106: 27849, 37107: 27973, 37108: 27927, 37109: 26579, 37110: 28508, 37111: 29006, 37112: 29053, 37113: 26059, 37114: 31359, 37115: 31661, 37116: 32218, 37184: 32330, 37185: 32680, 37186: 33146, 37187: 33307, 37188: 33337, 37189: 34214, 37190: 35438, 37191: 36046, 37192: 36341, 37193: 36984, 37194: 36983, 37195: 37549, 37196: 37521, 37197: 38275, 37198: 39854, 37199: 21069, 37200: 21892, 37201: 28472, 37202: 28982, 37203: 20840, 37204: 31109, 37205: 32341, 37206: 33203, 37207: 31950, 37208: 22092, 37209: 22609, 37210: 23720, 37211: 25514, 37212: 26366, 37213: 26365, 37214: 26970, 37215: 29401, 37216: 30095, 37217: 30094, 37218: 30990, 37219: 31062, 37220: 31199, 37221: 31895, 37222: 32032, 37223: 32068, 37224: 34311, 37225: 35380, 37226: 38459, 37227: 36961, 37228: 40736, 37229: 20711, 37230: 21109, 37231: 21452, 37232: 21474, 37233: 20489, 37234: 21930, 37235: 22766, 37236: 22863, 37237: 29245, 37238: 23435, 37239: 23652, 37240: 21277, 37241: 24803, 37242: 24819, 37243: 25436, 37244: 25475, 37245: 25407, 37246: 25531, 37248: 25805, 37249: 26089, 37250: 26361, 37251: 24035, 37252: 27085, 37253: 27133, 37254: 28437, 37255: 29157, 37256: 20105, 37257: 30185, 37258: 30456, 37259: 31379, 37260: 31967, 37261: 32207, 37262: 32156, 37263: 32865, 37264: 33609, 37265: 33624, 37266: 33900, 37267: 33980, 37268: 34299, 37269: 35013, 37270: 36208, 37271: 36865, 37272: 36973, 37273: 37783, 37274: 38684, 37275: 39442, 37276: 20687, 37277: 22679, 37278: 24974, 37279: 33235, 37280: 34101, 37281: 36104, 37282: 36896, 37283: 20419, 37284: 20596, 37285: 21063, 37286: 21363, 37287: 24687, 37288: 25417, 37289: 26463, 37290: 28204, 37291: 36275, 37292: 36895, 37293: 20439, 37294: 23646, 37295: 36042, 37296: 26063, 37297: 32154, 37298: 21330, 37299: 34966, 37300: 20854, 37301: 25539, 37302: 23384, 37303: 23403, 37304: 23562, 37305: 25613, 37306: 26449, 37307: 36956, 37308: 20182, 37309: 22810, 37310: 22826, 37311: 27760, 37312: 35409, 37313: 21822, 37314: 22549, 37315: 22949, 37316: 24816, 37317: 25171, 37318: 26561, 37319: 33333, 37320: 26965, 37321: 38464, 37322: 39364, 37323: 39464, 37324: 20307, 37325: 22534, 37326: 23550, 37327: 32784, 37328: 23729, 37329: 24111, 37330: 24453, 37331: 24608, 37332: 24907, 37333: 25140, 37334: 26367, 37335: 27888, 37336: 28382, 37337: 32974, 37338: 33151, 37339: 33492, 37340: 34955, 37341: 36024, 37342: 36864, 37343: 36910, 37344: 38538, 37345: 40667, 37346: 39899, 37347: 20195, 37348: 21488, 37349: 22823, 37350: 31532, 37351: 37261, 37352: 38988, 37353: 40441, 37354: 28381, 37355: 28711, 37356: 21331, 37357: 21828, 37358: 23429, 37359: 25176, 37360: 25246, 37361: 25299, 37362: 27810, 37363: 28655, 37364: 29730, 37365: 35351, 37366: 37944, 37367: 28609, 37368: 35582, 37369: 33592, 37370: 20967, 37371: 34552, 37372: 21482, 37440: 21481, 37441: 20294, 37442: 36948, 37443: 36784, 37444: 22890, 37445: 33073, 37446: 24061, 37447: 31466, 37448: 36799, 37449: 26842, 37450: 35895, 37451: 29432, 37452: 40008, 37453: 27197, 37454: 35504, 37455: 20025, 37456: 21336, 37457: 22022, 37458: 22374, 37459: 25285, 37460: 25506, 37461: 26086, 37462: 27470, 37463: 28129, 37464: 28251, 37465: 28845, 37466: 30701, 37467: 31471, 37468: 31658, 37469: 32187, 37470: 32829, 37471: 32966, 37472: 34507, 37473: 35477, 37474: 37723, 37475: 22243, 37476: 22727, 37477: 24382, 37478: 26029, 37479: 26262, 37480: 27264, 37481: 27573, 37482: 30007, 37483: 35527, 37484: 20516, 37485: 30693, 37486: 22320, 37487: 24347, 37488: 24677, 37489: 26234, 37490: 27744, 37491: 30196, 37492: 31258, 37493: 32622, 37494: 33268, 37495: 34584, 37496: 36933, 37497: 39347, 37498: 31689, 37499: 30044, 37500: 31481, 37501: 31569, 37502: 33988, 37504: 36880, 37505: 31209, 37506: 31378, 37507: 33590, 37508: 23265, 37509: 30528, 37510: 20013, 37511: 20210, 37512: 23449, 37513: 24544, 37514: 25277, 37515: 26172, 37516: 26609, 37517: 27880, 37518: 34411, 37519: 34935, 37520: 35387, 37521: 37198, 37522: 37619, 37523: 39376, 37524: 27159, 37525: 28710, 37526: 29482, 37527: 33511, 37528: 33879, 37529: 36015, 37530: 19969, 37531: 20806, 37532: 20939, 37533: 21899, 37534: 23541, 37535: 24086, 37536: 24115, 37537: 24193, 37538: 24340, 37539: 24373, 37540: 24427, 37541: 24500, 37542: 25074, 37543: 25361, 37544: 26274, 37545: 26397, 37546: 28526, 37547: 29266, 37548: 30010, 37549: 30522, 37550: 32884, 37551: 33081, 37552: 33144, 37553: 34678, 37554: 35519, 37555: 35548, 37556: 36229, 37557: 36339, 37558: 37530, 37559: 38263, 37560: 38914, 37561: 40165, 37562: 21189, 37563: 25431, 37564: 30452, 37565: 26389, 37566: 27784, 37567: 29645, 37568: 36035, 37569: 37806, 37570: 38515, 37571: 27941, 37572: 22684, 37573: 26894, 37574: 27084, 37575: 36861, 37576: 37786, 37577: 30171, 37578: 36890, 37579: 22618, 37580: 26626, 37581: 25524, 37582: 27131, 37583: 20291, 37584: 28460, 37585: 26584, 37586: 36795, 37587: 34086, 37588: 32180, 37589: 37716, 37590: 26943, 37591: 28528, 37592: 22378, 37593: 22775, 37594: 23340, 37595: 32044, 37596: 29226, 37597: 21514, 37598: 37347, 37599: 40372, 37600: 20141, 37601: 20302, 37602: 20572, 37603: 20597, 37604: 21059, 37605: 35998, 37606: 21576, 37607: 22564, 37608: 23450, 37609: 24093, 37610: 24213, 37611: 24237, 37612: 24311, 37613: 24351, 37614: 24716, 37615: 25269, 37616: 25402, 37617: 25552, 37618: 26799, 37619: 27712, 37620: 30855, 37621: 31118, 37622: 31243, 37623: 32224, 37624: 33351, 37625: 35330, 37626: 35558, 37627: 36420, 37628: 36883, 37696: 37048, 37697: 37165, 37698: 37336, 37699: 40718, 37700: 27877, 37701: 25688, 37702: 25826, 37703: 25973, 37704: 28404, 37705: 30340, 37706: 31515, 37707: 36969, 37708: 37841, 37709: 28346, 37710: 21746, 37711: 24505, 37712: 25764, 37713: 36685, 37714: 36845, 37715: 37444, 37716: 20856, 37717: 22635, 37718: 22825, 37719: 23637, 37720: 24215, 37721: 28155, 37722: 32399, 37723: 29980, 37724: 36028, 37725: 36578, 37726: 39003, 37727: 28857, 37728: 20253, 37729: 27583, 37730: 28593, 37731: 30000, 37732: 38651, 37733: 20814, 37734: 21520, 37735: 22581, 37736: 22615, 37737: 22956, 37738: 23648, 37739: 24466, 37740: 26007, 37741: 26460, 37742: 28193, 37743: 30331, 37744: 33759, 37745: 36077, 37746: 36884, 37747: 37117, 37748: 37709, 37749: 30757, 37750: 30778, 37751: 21162, 37752: 24230, 37753: 22303, 37754: 22900, 37755: 24594, 37756: 20498, 37757: 20826, 37758: 20908, 37760: 20941, 37761: 20992, 37762: 21776, 37763: 22612, 37764: 22616, 37765: 22871, 37766: 23445, 37767: 23798, 37768: 23947, 37769: 24764, 37770: 25237, 37771: 25645, 37772: 26481, 37773: 26691, 37774: 26812, 37775: 26847, 37776: 30423, 37777: 28120, 37778: 28271, 37779: 28059, 37780: 28783, 37781: 29128, 37782: 24403, 37783: 30168, 37784: 31095, 37785: 31561, 37786: 31572, 37787: 31570, 37788: 31958, 37789: 32113, 37790: 21040, 37791: 33891, 37792: 34153, 37793: 34276, 37794: 35342, 37795: 35588, 37796: 35910, 37797: 36367, 37798: 36867, 37799: 36879, 37800: 37913, 37801: 38518, 37802: 38957, 37803: 39472, 37804: 38360, 37805: 20685, 37806: 21205, 37807: 21516, 37808: 22530, 37809: 23566, 37810: 24999, 37811: 25758, 37812: 27934, 37813: 30643, 37814: 31461, 37815: 33012, 37816: 33796, 37817: 36947, 37818: 37509, 37819: 23776, 37820: 40199, 37821: 21311, 37822: 24471, 37823: 24499, 37824: 28060, 37825: 29305, 37826: 30563, 37827: 31167, 37828: 31716, 37829: 27602, 37830: 29420, 37831: 35501, 37832: 26627, 37833: 27233, 37834: 20984, 37835: 31361, 37836: 26932, 37837: 23626, 37838: 40182, 37839: 33515, 37840: 23493, 37841: 37193, 37842: 28702, 37843: 22136, 37844: 23663, 37845: 24775, 37846: 25958, 37847: 27788, 37848: 35930, 37849: 36929, 37850: 38931, 37851: 21585, 37852: 26311, 37853: 37389, 37854: 22856, 37855: 37027, 37856: 20869, 37857: 20045, 37858: 20970, 37859: 34201, 37860: 35598, 37861: 28760, 37862: 25466, 37863: 37707, 37864: 26978, 37865: 39348, 37866: 32260, 37867: 30071, 37868: 21335, 37869: 26976, 37870: 36575, 37871: 38627, 37872: 27741, 37873: 20108, 37874: 23612, 37875: 24336, 37876: 36841, 37877: 21250, 37878: 36049, 37879: 32905, 37880: 34425, 37881: 24319, 37882: 26085, 37883: 20083, 37884: 20837, 37952: 22914, 37953: 23615, 37954: 38894, 37955: 20219, 37956: 22922, 37957: 24525, 37958: 35469, 37959: 28641, 37960: 31152, 37961: 31074, 37962: 23527, 37963: 33905, 37964: 29483, 37965: 29105, 37966: 24180, 37967: 24565, 37968: 25467, 37969: 25754, 37970: 29123, 37971: 31896, 37972: 20035, 37973: 24316, 37974: 20043, 37975: 22492, 37976: 22178, 37977: 24745, 37978: 28611, 37979: 32013, 37980: 33021, 37981: 33075, 37982: 33215, 37983: 36786, 37984: 35223, 37985: 34468, 37986: 24052, 37987: 25226, 37988: 25773, 37989: 35207, 37990: 26487, 37991: 27874, 37992: 27966, 37993: 29750, 37994: 30772, 37995: 23110, 37996: 32629, 37997: 33453, 37998: 39340, 37999: 20467, 38000: 24259, 38001: 25309, 38002: 25490, 38003: 25943, 38004: 26479, 38005: 30403, 38006: 29260, 38007: 32972, 38008: 32954, 38009: 36649, 38010: 37197, 38011: 20493, 38012: 22521, 38013: 23186, 38014: 26757, 38016: 26995, 38017: 29028, 38018: 29437, 38019: 36023, 38020: 22770, 38021: 36064, 38022: 38506, 38023: 36889, 38024: 34687, 38025: 31204, 38026: 30695, 38027: 33833, 38028: 20271, 38029: 21093, 38030: 21338, 38031: 25293, 38032: 26575, 38033: 27850, 38034: 30333, 38035: 31636, 38036: 31893, 38037: 33334, 38038: 34180, 38039: 36843, 38040: 26333, 38041: 28448, 38042: 29190, 38043: 32283, 38044: 33707, 38045: 39361, 38046: 40614, 38047: 20989, 38048: 31665, 38049: 30834, 38050: 31672, 38051: 32903, 38052: 31560, 38053: 27368, 38054: 24161, 38055: 32908, 38056: 30033, 38057: 30048, 38058: 20843, 38059: 37474, 38060: 28300, 38061: 30330, 38062: 37271, 38063: 39658, 38064: 20240, 38065: 32624, 38066: 25244, 38067: 31567, 38068: 38309, 38069: 40169, 38070: 22138, 38071: 22617, 38072: 34532, 38073: 38588, 38074: 20276, 38075: 21028, 38076: 21322, 38077: 21453, 38078: 21467, 38079: 24070, 38080: 25644, 38081: 26001, 38082: 26495, 38083: 27710, 38084: 27726, 38085: 29256, 38086: 29359, 38087: 29677, 38088: 30036, 38089: 32321, 38090: 33324, 38091: 34281, 38092: 36009, 38093: 31684, 38094: 37318, 38095: 29033, 38096: 38930, 38097: 39151, 38098: 25405, 38099: 26217, 38100: 30058, 38101: 30436, 38102: 30928, 38103: 34115, 38104: 34542, 38105: 21290, 38106: 21329, 38107: 21542, 38108: 22915, 38109: 24199, 38110: 24444, 38111: 24754, 38112: 25161, 38113: 25209, 38114: 25259, 38115: 26000, 38116: 27604, 38117: 27852, 38118: 30130, 38119: 30382, 38120: 30865, 38121: 31192, 38122: 32203, 38123: 32631, 38124: 32933, 38125: 34987, 38126: 35513, 38127: 36027, 38128: 36991, 38129: 38750, 38130: 39131, 38131: 27147, 38132: 31800, 38133: 20633, 38134: 23614, 38135: 24494, 38136: 26503, 38137: 27608, 38138: 29749, 38139: 30473, 38140: 32654, 38208: 40763, 38209: 26570, 38210: 31255, 38211: 21305, 38212: 30091, 38213: 39661, 38214: 24422, 38215: 33181, 38216: 33777, 38217: 32920, 38218: 24380, 38219: 24517, 38220: 30050, 38221: 31558, 38222: 36924, 38223: 26727, 38224: 23019, 38225: 23195, 38226: 32016, 38227: 30334, 38228: 35628, 38229: 20469, 38230: 24426, 38231: 27161, 38232: 27703, 38233: 28418, 38234: 29922, 38235: 31080, 38236: 34920, 38237: 35413, 38238: 35961, 38239: 24287, 38240: 25551, 38241: 30149, 38242: 31186, 38243: 33495, 38244: 37672, 38245: 37618, 38246: 33948, 38247: 34541, 38248: 39981, 38249: 21697, 38250: 24428, 38251: 25996, 38252: 27996, 38253: 28693, 38254: 36007, 38255: 36051, 38256: 38971, 38257: 25935, 38258: 29942, 38259: 19981, 38260: 20184, 38261: 22496, 38262: 22827, 38263: 23142, 38264: 23500, 38265: 20904, 38266: 24067, 38267: 24220, 38268: 24598, 38269: 25206, 38270: 25975, 38272: 26023, 38273: 26222, 38274: 28014, 38275: 29238, 38276: 31526, 38277: 33104, 38278: 33178, 38279: 33433, 38280: 35676, 38281: 36000, 38282: 36070, 38283: 36212, 38284: 38428, 38285: 38468, 38286: 20398, 38287: 25771, 38288: 27494, 38289: 33310, 38290: 33889, 38291: 34154, 38292: 37096, 38293: 23553, 38294: 26963, 38295: 39080, 38296: 33914, 38297: 34135, 38298: 20239, 38299: 21103, 38300: 24489, 38301: 24133, 38302: 26381, 38303: 31119, 38304: 33145, 38305: 35079, 38306: 35206, 38307: 28149, 38308: 24343, 38309: 25173, 38310: 27832, 38311: 20175, 38312: 29289, 38313: 39826, 38314: 20998, 38315: 21563, 38316: 22132, 38317: 22707, 38318: 24996, 38319: 25198, 38320: 28954, 38321: 22894, 38322: 31881, 38323: 31966, 38324: 32027, 38325: 38640, 38326: 25991, 38327: 32862, 38328: 19993, 38329: 20341, 38330: 20853, 38331: 22592, 38332: 24163, 38333: 24179, 38334: 24330, 38335: 26564, 38336: 20006, 38337: 34109, 38338: 38281, 38339: 38491, 38340: 31859, 38341: 38913, 38342: 20731, 38343: 22721, 38344: 30294, 38345: 30887, 38346: 21029, 38347: 30629, 38348: 34065, 38349: 31622, 38350: 20559, 38351: 22793, 38352: 29255, 38353: 31687, 38354: 32232, 38355: 36794, 38356: 36820, 38357: 36941, 38358: 20415, 38359: 21193, 38360: 23081, 38361: 24321, 38362: 38829, 38363: 20445, 38364: 33303, 38365: 37610, 38366: 22275, 38367: 25429, 38368: 27497, 38369: 29995, 38370: 35036, 38371: 36628, 38372: 31298, 38373: 21215, 38374: 22675, 38375: 24917, 38376: 25098, 38377: 26286, 38378: 27597, 38379: 31807, 38380: 33769, 38381: 20515, 38382: 20472, 38383: 21253, 38384: 21574, 38385: 22577, 38386: 22857, 38387: 23453, 38388: 23792, 38389: 23791, 38390: 23849, 38391: 24214, 38392: 25265, 38393: 25447, 38394: 25918, 38395: 26041, 38396: 26379, 38464: 27861, 38465: 27873, 38466: 28921, 38467: 30770, 38468: 32299, 38469: 32990, 38470: 33459, 38471: 33804, 38472: 34028, 38473: 34562, 38474: 35090, 38475: 35370, 38476: 35914, 38477: 37030, 38478: 37586, 38479: 39165, 38480: 40179, 38481: 40300, 38482: 20047, 38483: 20129, 38484: 20621, 38485: 21078, 38486: 22346, 38487: 22952, 38488: 24125, 38489: 24536, 38490: 24537, 38491: 25151, 38492: 26292, 38493: 26395, 38494: 26576, 38495: 26834, 38496: 20882, 38497: 32033, 38498: 32938, 38499: 33192, 38500: 35584, 38501: 35980, 38502: 36031, 38503: 37502, 38504: 38450, 38505: 21536, 38506: 38956, 38507: 21271, 38508: 20693, 38509: 21340, 38510: 22696, 38511: 25778, 38512: 26420, 38513: 29287, 38514: 30566, 38515: 31302, 38516: 37350, 38517: 21187, 38518: 27809, 38519: 27526, 38520: 22528, 38521: 24140, 38522: 22868, 38523: 26412, 38524: 32763, 38525: 20961, 38526: 30406, 38528: 25705, 38529: 30952, 38530: 39764, 38531: 40635, 38532: 22475, 38533: 22969, 38534: 26151, 38535: 26522, 38536: 27598, 38537: 21737, 38538: 27097, 38539: 24149, 38540: 33180, 38541: 26517, 38542: 39850, 38543: 26622, 38544: 40018, 38545: 26717, 38546: 20134, 38547: 20451, 38548: 21448, 38549: 25273, 38550: 26411, 38551: 27819, 38552: 36804, 38553: 20397, 38554: 32365, 38555: 40639, 38556: 19975, 38557: 24930, 38558: 28288, 38559: 28459, 38560: 34067, 38561: 21619, 38562: 26410, 38563: 39749, 38564: 24051, 38565: 31637, 38566: 23724, 38567: 23494, 38568: 34588, 38569: 28234, 38570: 34001, 38571: 31252, 38572: 33032, 38573: 22937, 38574: 31885, 38575: 27665, 38576: 30496, 38577: 21209, 38578: 22818, 38579: 28961, 38580: 29279, 38581: 30683, 38582: 38695, 38583: 40289, 38584: 26891, 38585: 23167, 38586: 23064, 38587: 20901, 38588: 21517, 38589: 21629, 38590: 26126, 38591: 30431, 38592: 36855, 38593: 37528, 38594: 40180, 38595: 23018, 38596: 29277, 38597: 28357, 38598: 20813, 38599: 26825, 38600: 32191, 38601: 32236, 38602: 38754, 38603: 40634, 38604: 25720, 38605: 27169, 38606: 33538, 38607: 22916, 38608: 23391, 38609: 27611, 38610: 29467, 38611: 30450, 38612: 32178, 38613: 32791, 38614: 33945, 38615: 20786, 38616: 26408, 38617: 40665, 38618: 30446, 38619: 26466, 38620: 21247, 38621: 39173, 38622: 23588, 38623: 25147, 38624: 31870, 38625: 36016, 38626: 21839, 38627: 24758, 38628: 32011, 38629: 38272, 38630: 21249, 38631: 20063, 38632: 20918, 38633: 22812, 38634: 29242, 38635: 32822, 38636: 37326, 38637: 24357, 38638: 30690, 38639: 21380, 38640: 24441, 38641: 32004, 38642: 34220, 38643: 35379, 38644: 36493, 38645: 38742, 38646: 26611, 38647: 34222, 38648: 37971, 38649: 24841, 38650: 24840, 38651: 27833, 38652: 30290, 38720: 35565, 38721: 36664, 38722: 21807, 38723: 20305, 38724: 20778, 38725: 21191, 38726: 21451, 38727: 23461, 38728: 24189, 38729: 24736, 38730: 24962, 38731: 25558, 38732: 26377, 38733: 26586, 38734: 28263, 38735: 28044, 38736: 29494, 38737: 29495, 38738: 30001, 38739: 31056, 38740: 35029, 38741: 35480, 38742: 36938, 38743: 37009, 38744: 37109, 38745: 38596, 38746: 34701, 38747: 22805, 38748: 20104, 38749: 20313, 38750: 19982, 38751: 35465, 38752: 36671, 38753: 38928, 38754: 20653, 38755: 24188, 38756: 22934, 38757: 23481, 38758: 24248, 38759: 25562, 38760: 25594, 38761: 25793, 38762: 26332, 38763: 26954, 38764: 27096, 38765: 27915, 38766: 28342, 38767: 29076, 38768: 29992, 38769: 31407, 38770: 32650, 38771: 32768, 38772: 33865, 38773: 33993, 38774: 35201, 38775: 35617, 38776: 36362, 38777: 36965, 38778: 38525, 38779: 39178, 38780: 24958, 38781: 25233, 38782: 27442, 38784: 27779, 38785: 28020, 38786: 32716, 38787: 32764, 38788: 28096, 38789: 32645, 38790: 34746, 38791: 35064, 38792: 26469, 38793: 33713, 38794: 38972, 38795: 38647, 38796: 27931, 38797: 32097, 38798: 33853, 38799: 37226, 38800: 20081, 38801: 21365, 38802: 23888, 38803: 27396, 38804: 28651, 38805: 34253, 38806: 34349, 38807: 35239, 38808: 21033, 38809: 21519, 38810: 23653, 38811: 26446, 38812: 26792, 38813: 29702, 38814: 29827, 38815: 30178, 38816: 35023, 38817: 35041, 38818: 37324, 38819: 38626, 38820: 38520, 38821: 24459, 38822: 29575, 38823: 31435, 38824: 33870, 38825: 25504, 38826: 30053, 38827: 21129, 38828: 27969, 38829: 28316, 38830: 29705, 38831: 30041, 38832: 30827, 38833: 31890, 38834: 38534, 38835: 31452, 38836: 40845, 38837: 20406, 38838: 24942, 38839: 26053, 38840: 34396, 38841: 20102, 38842: 20142, 38843: 20698, 38844: 20001, 38845: 20940, 38846: 23534, 38847: 26009, 38848: 26753, 38849: 28092, 38850: 29471, 38851: 30274, 38852: 30637, 38853: 31260, 38854: 31975, 38855: 33391, 38856: 35538, 38857: 36988, 38858: 37327, 38859: 38517, 38860: 38936, 38861: 21147, 38862: 32209, 38863: 20523, 38864: 21400, 38865: 26519, 38866: 28107, 38867: 29136, 38868: 29747, 38869: 33256, 38870: 36650, 38871: 38563, 38872: 40023, 38873: 40607, 38874: 29792, 38875: 22593, 38876: 28057, 38877: 32047, 38878: 39006, 38879: 20196, 38880: 20278, 38881: 20363, 38882: 20919, 38883: 21169, 38884: 23994, 38885: 24604, 38886: 29618, 38887: 31036, 38888: 33491, 38889: 37428, 38890: 38583, 38891: 38646, 38892: 38666, 38893: 40599, 38894: 40802, 38895: 26278, 38896: 27508, 38897: 21015, 38898: 21155, 38899: 28872, 38900: 35010, 38901: 24265, 38902: 24651, 38903: 24976, 38904: 28451, 38905: 29001, 38906: 31806, 38907: 32244, 38908: 32879, 38976: 34030, 38977: 36899, 38978: 37676, 38979: 21570, 38980: 39791, 38981: 27347, 38982: 28809, 38983: 36034, 38984: 36335, 38985: 38706, 38986: 21172, 38987: 23105, 38988: 24266, 38989: 24324, 38990: 26391, 38991: 27004, 38992: 27028, 38993: 28010, 38994: 28431, 38995: 29282, 38996: 29436, 38997: 31725, 38998: 32769, 38999: 32894, 39000: 34635, 39001: 37070, 39002: 20845, 39003: 40595, 39004: 31108, 39005: 32907, 39006: 37682, 39007: 35542, 39008: 20525, 39009: 21644, 39010: 35441, 39011: 27498, 39012: 36036, 39013: 33031, 39014: 24785, 39015: 26528, 39016: 40434, 39017: 20121, 39018: 20120, 39019: 39952, 39020: 35435, 39021: 34241, 39022: 34152, 39023: 26880, 39024: 28286, 39025: 30871, 39026: 33109, 39071: 24332, 39072: 19984, 39073: 19989, 39074: 20010, 39075: 20017, 39076: 20022, 39077: 20028, 39078: 20031, 39079: 20034, 39080: 20054, 39081: 20056, 39082: 20098, 39083: 20101, 39084: 35947, 39085: 20106, 39086: 33298, 39087: 24333, 39088: 20110, 39089: 20126, 39090: 20127, 39091: 20128, 39092: 20130, 39093: 20144, 39094: 20147, 39095: 20150, 39096: 20174, 39097: 20173, 39098: 20164, 39099: 20166, 39100: 20162, 39101: 20183, 39102: 20190, 39103: 20205, 39104: 20191, 39105: 20215, 39106: 20233, 39107: 20314, 39108: 20272, 39109: 20315, 39110: 20317, 39111: 20311, 39112: 20295, 39113: 20342, 39114: 20360, 39115: 20367, 39116: 20376, 39117: 20347, 39118: 20329, 39119: 20336, 39120: 20369, 39121: 20335, 39122: 20358, 39123: 20374, 39124: 20760, 39125: 20436, 39126: 20447, 39127: 20430, 39128: 20440, 39129: 20443, 39130: 20433, 39131: 20442, 39132: 20432, 39133: 20452, 39134: 20453, 39135: 20506, 39136: 20520, 39137: 20500, 39138: 20522, 39139: 20517, 39140: 20485, 39141: 20252, 39142: 20470, 39143: 20513, 39144: 20521, 39145: 20524, 39146: 20478, 39147: 20463, 39148: 20497, 39149: 20486, 39150: 20547, 39151: 20551, 39152: 26371, 39153: 20565, 39154: 20560, 39155: 20552, 39156: 20570, 39157: 20566, 39158: 20588, 39159: 20600, 39160: 20608, 39161: 20634, 39162: 20613, 39163: 20660, 39164: 20658, 39232: 20681, 39233: 20682, 39234: 20659, 39235: 20674, 39236: 20694, 39237: 20702, 39238: 20709, 39239: 20717, 39240: 20707, 39241: 20718, 39242: 20729, 39243: 20725, 39244: 20745, 39245: 20737, 39246: 20738, 39247: 20758, 39248: 20757, 39249: 20756, 39250: 20762, 39251: 20769, 39252: 20794, 39253: 20791, 39254: 20796, 39255: 20795, 39256: 20799, 39257: 20800, 39258: 20818, 39259: 20812, 39260: 20820, 39261: 20834, 39262: 31480, 39263: 20841, 39264: 20842, 39265: 20846, 39266: 20864, 39267: 20866, 39268: 22232, 39269: 20876, 39270: 20873, 39271: 20879, 39272: 20881, 39273: 20883, 39274: 20885, 39275: 20886, 39276: 20900, 39277: 20902, 39278: 20898, 39279: 20905, 39280: 20906, 39281: 20907, 39282: 20915, 39283: 20913, 39284: 20914, 39285: 20912, 39286: 20917, 39287: 20925, 39288: 20933, 39289: 20937, 39290: 20955, 39291: 20960, 39292: 34389, 39293: 20969, 39294: 20973, 39296: 20976, 39297: 20981, 39298: 20990, 39299: 20996, 39300: 21003, 39301: 21012, 39302: 21006, 39303: 21031, 39304: 21034, 39305: 21038, 39306: 21043, 39307: 21049, 39308: 21071, 39309: 21060, 39310: 21067, 39311: 21068, 39312: 21086, 39313: 21076, 39314: 21098, 39315: 21108, 39316: 21097, 39317: 21107, 39318: 21119, 39319: 21117, 39320: 21133, 39321: 21140, 39322: 21138, 39323: 21105, 39324: 21128, 39325: 21137, 39326: 36776, 39327: 36775, 39328: 21164, 39329: 21165, 39330: 21180, 39331: 21173, 39332: 21185, 39333: 21197, 39334: 21207, 39335: 21214, 39336: 21219, 39337: 21222, 39338: 39149, 39339: 21216, 39340: 21235, 39341: 21237, 39342: 21240, 39343: 21241, 39344: 21254, 39345: 21256, 39346: 30008, 39347: 21261, 39348: 21264, 39349: 21263, 39350: 21269, 39351: 21274, 39352: 21283, 39353: 21295, 39354: 21297, 39355: 21299, 39356: 21304, 39357: 21312, 39358: 21318, 39359: 21317, 39360: 19991, 39361: 21321, 39362: 21325, 39363: 20950, 39364: 21342, 39365: 21353, 39366: 21358, 39367: 22808, 39368: 21371, 39369: 21367, 39370: 21378, 39371: 21398, 39372: 21408, 39373: 21414, 39374: 21413, 39375: 21422, 39376: 21424, 39377: 21430, 39378: 21443, 39379: 31762, 39380: 38617, 39381: 21471, 39382: 26364, 39383: 29166, 39384: 21486, 39385: 21480, 39386: 21485, 39387: 21498, 39388: 21505, 39389: 21565, 39390: 21568, 39391: 21548, 39392: 21549, 39393: 21564, 39394: 21550, 39395: 21558, 39396: 21545, 39397: 21533, 39398: 21582, 39399: 21647, 39400: 21621, 39401: 21646, 39402: 21599, 39403: 21617, 39404: 21623, 39405: 21616, 39406: 21650, 39407: 21627, 39408: 21632, 39409: 21622, 39410: 21636, 39411: 21648, 39412: 21638, 39413: 21703, 39414: 21666, 39415: 21688, 39416: 21669, 39417: 21676, 39418: 21700, 39419: 21704, 39420: 21672, 39488: 21675, 39489: 21698, 39490: 21668, 39491: 21694, 39492: 21692, 39493: 21720, 39494: 21733, 39495: 21734, 39496: 21775, 39497: 21780, 39498: 21757, 39499: 21742, 39500: 21741, 39501: 21754, 39502: 21730, 39503: 21817, 39504: 21824, 39505: 21859, 39506: 21836, 39507: 21806, 39508: 21852, 39509: 21829, 39510: 21846, 39511: 21847, 39512: 21816, 39513: 21811, 39514: 21853, 39515: 21913, 39516: 21888, 39517: 21679, 39518: 21898, 39519: 21919, 39520: 21883, 39521: 21886, 39522: 21912, 39523: 21918, 39524: 21934, 39525: 21884, 39526: 21891, 39527: 21929, 39528: 21895, 39529: 21928, 39530: 21978, 39531: 21957, 39532: 21983, 39533: 21956, 39534: 21980, 39535: 21988, 39536: 21972, 39537: 22036, 39538: 22007, 39539: 22038, 39540: 22014, 39541: 22013, 39542: 22043, 39543: 22009, 39544: 22094, 39545: 22096, 39546: 29151, 39547: 22068, 39548: 22070, 39549: 22066, 39550: 22072, 39552: 22123, 39553: 22116, 39554: 22063, 39555: 22124, 39556: 22122, 39557: 22150, 39558: 22144, 39559: 22154, 39560: 22176, 39561: 22164, 39562: 22159, 39563: 22181, 39564: 22190, 39565: 22198, 39566: 22196, 39567: 22210, 39568: 22204, 39569: 22209, 39570: 22211, 39571: 22208, 39572: 22216, 39573: 22222, 39574: 22225, 39575: 22227, 39576: 22231, 39577: 22254, 39578: 22265, 39579: 22272, 39580: 22271, 39581: 22276, 39582: 22281, 39583: 22280, 39584: 22283, 39585: 22285, 39586: 22291, 39587: 22296, 39588: 22294, 39589: 21959, 39590: 22300, 39591: 22310, 39592: 22327, 39593: 22328, 39594: 22350, 39595: 22331, 39596: 22336, 39597: 22351, 39598: 22377, 39599: 22464, 39600: 22408, 39601: 22369, 39602: 22399, 39603: 22409, 39604: 22419, 39605: 22432, 39606: 22451, 39607: 22436, 39608: 22442, 39609: 22448, 39610: 22467, 39611: 22470, 39612: 22484, 39613: 22482, 39614: 22483, 39615: 22538, 39616: 22486, 39617: 22499, 39618: 22539, 39619: 22553, 39620: 22557, 39621: 22642, 39622: 22561, 39623: 22626, 39624: 22603, 39625: 22640, 39626: 27584, 39627: 22610, 39628: 22589, 39629: 22649, 39630: 22661, 39631: 22713, 39632: 22687, 39633: 22699, 39634: 22714, 39635: 22750, 39636: 22715, 39637: 22712, 39638: 22702, 39639: 22725, 39640: 22739, 39641: 22737, 39642: 22743, 39643: 22745, 39644: 22744, 39645: 22757, 39646: 22748, 39647: 22756, 39648: 22751, 39649: 22767, 39650: 22778, 39651: 22777, 39652: 22779, 39653: 22780, 39654: 22781, 39655: 22786, 39656: 22794, 39657: 22800, 39658: 22811, 39659: 26790, 39660: 22821, 39661: 22828, 39662: 22829, 39663: 22834, 39664: 22840, 39665: 22846, 39666: 31442, 39667: 22869, 39668: 22864, 39669: 22862, 39670: 22874, 39671: 22872, 39672: 22882, 39673: 22880, 39674: 22887, 39675: 22892, 39676: 22889, 39744: 22904, 39745: 22913, 39746: 22941, 39747: 20318, 39748: 20395, 39749: 22947, 39750: 22962, 39751: 22982, 39752: 23016, 39753: 23004, 39754: 22925, 39755: 23001, 39756: 23002, 39757: 23077, 39758: 23071, 39759: 23057, 39760: 23068, 39761: 23049, 39762: 23066, 39763: 23104, 39764: 23148, 39765: 23113, 39766: 23093, 39767: 23094, 39768: 23138, 39769: 23146, 39770: 23194, 39771: 23228, 39772: 23230, 39773: 23243, 39774: 23234, 39775: 23229, 39776: 23267, 39777: 23255, 39778: 23270, 39779: 23273, 39780: 23254, 39781: 23290, 39782: 23291, 39783: 23308, 39784: 23307, 39785: 23318, 39786: 23346, 39787: 23248, 39788: 23338, 39789: 23350, 39790: 23358, 39791: 23363, 39792: 23365, 39793: 23360, 39794: 23377, 39795: 23381, 39796: 23386, 39797: 23387, 39798: 23397, 39799: 23401, 39800: 23408, 39801: 23411, 39802: 23413, 39803: 23416, 39804: 25992, 39805: 23418, 39806: 23424, 39808: 23427, 39809: 23462, 39810: 23480, 39811: 23491, 39812: 23495, 39813: 23497, 39814: 23508, 39815: 23504, 39816: 23524, 39817: 23526, 39818: 23522, 39819: 23518, 39820: 23525, 39821: 23531, 39822: 23536, 39823: 23542, 39824: 23539, 39825: 23557, 39826: 23559, 39827: 23560, 39828: 23565, 39829: 23571, 39830: 23584, 39831: 23586, 39832: 23592, 39833: 23608, 39834: 23609, 39835: 23617, 39836: 23622, 39837: 23630, 39838: 23635, 39839: 23632, 39840: 23631, 39841: 23409, 39842: 23660, 39843: 23662, 39844: 20066, 39845: 23670, 39846: 23673, 39847: 23692, 39848: 23697, 39849: 23700, 39850: 22939, 39851: 23723, 39852: 23739, 39853: 23734, 39854: 23740, 39855: 23735, 39856: 23749, 39857: 23742, 39858: 23751, 39859: 23769, 39860: 23785, 39861: 23805, 39862: 23802, 39863: 23789, 39864: 23948, 39865: 23786, 39866: 23819, 39867: 23829, 39868: 23831, 39869: 23900, 39870: 23839, 39871: 23835, 39872: 23825, 39873: 23828, 39874: 23842, 39875: 23834, 39876: 23833, 39877: 23832, 39878: 23884, 39879: 23890, 39880: 23886, 39881: 23883, 39882: 23916, 39883: 23923, 39884: 23926, 39885: 23943, 39886: 23940, 39887: 23938, 39888: 23970, 39889: 23965, 39890: 23980, 39891: 23982, 39892: 23997, 39893: 23952, 39894: 23991, 39895: 23996, 39896: 24009, 39897: 24013, 39898: 24019, 39899: 24018, 39900: 24022, 39901: 24027, 39902: 24043, 39903: 24050, 39904: 24053, 39905: 24075, 39906: 24090, 39907: 24089, 39908: 24081, 39909: 24091, 39910: 24118, 39911: 24119, 39912: 24132, 39913: 24131, 39914: 24128, 39915: 24142, 39916: 24151, 39917: 24148, 39918: 24159, 39919: 24162, 39920: 24164, 39921: 24135, 39922: 24181, 39923: 24182, 39924: 24186, 39925: 40636, 39926: 24191, 39927: 24224, 39928: 24257, 39929: 24258, 39930: 24264, 39931: 24272, 39932: 24271, 40000: 24278, 40001: 24291, 40002: 24285, 40003: 24282, 40004: 24283, 40005: 24290, 40006: 24289, 40007: 24296, 40008: 24297, 40009: 24300, 40010: 24305, 40011: 24307, 40012: 24304, 40013: 24308, 40014: 24312, 40015: 24318, 40016: 24323, 40017: 24329, 40018: 24413, 40019: 24412, 40020: 24331, 40021: 24337, 40022: 24342, 40023: 24361, 40024: 24365, 40025: 24376, 40026: 24385, 40027: 24392, 40028: 24396, 40029: 24398, 40030: 24367, 40031: 24401, 40032: 24406, 40033: 24407, 40034: 24409, 40035: 24417, 40036: 24429, 40037: 24435, 40038: 24439, 40039: 24451, 40040: 24450, 40041: 24447, 40042: 24458, 40043: 24456, 40044: 24465, 40045: 24455, 40046: 24478, 40047: 24473, 40048: 24472, 40049: 24480, 40050: 24488, 40051: 24493, 40052: 24508, 40053: 24534, 40054: 24571, 40055: 24548, 40056: 24568, 40057: 24561, 40058: 24541, 40059: 24755, 40060: 24575, 40061: 24609, 40062: 24672, 40064: 24601, 40065: 24592, 40066: 24617, 40067: 24590, 40068: 24625, 40069: 24603, 40070: 24597, 40071: 24619, 40072: 24614, 40073: 24591, 40074: 24634, 40075: 24666, 40076: 24641, 40077: 24682, 40078: 24695, 40079: 24671, 40080: 24650, 40081: 24646, 40082: 24653, 40083: 24675, 40084: 24643, 40085: 24676, 40086: 24642, 40087: 24684, 40088: 24683, 40089: 24665, 40090: 24705, 40091: 24717, 40092: 24807, 40093: 24707, 40094: 24730, 40095: 24708, 40096: 24731, 40097: 24726, 40098: 24727, 40099: 24722, 40100: 24743, 40101: 24715, 40102: 24801, 40103: 24760, 40104: 24800, 40105: 24787, 40106: 24756, 40107: 24560, 40108: 24765, 40109: 24774, 40110: 24757, 40111: 24792, 40112: 24909, 40113: 24853, 40114: 24838, 40115: 24822, 40116: 24823, 40117: 24832, 40118: 24820, 40119: 24826, 40120: 24835, 40121: 24865, 40122: 24827, 40123: 24817, 40124: 24845, 40125: 24846, 40126: 24903, 40127: 24894, 40128: 24872, 40129: 24871, 40130: 24906, 40131: 24895, 40132: 24892, 40133: 24876, 40134: 24884, 40135: 24893, 40136: 24898, 40137: 24900, 40138: 24947, 40139: 24951, 40140: 24920, 40141: 24921, 40142: 24922, 40143: 24939, 40144: 24948, 40145: 24943, 40146: 24933, 40147: 24945, 40148: 24927, 40149: 24925, 40150: 24915, 40151: 24949, 40152: 24985, 40153: 24982, 40154: 24967, 40155: 25004, 40156: 24980, 40157: 24986, 40158: 24970, 40159: 24977, 40160: 25003, 40161: 25006, 40162: 25036, 40163: 25034, 40164: 25033, 40165: 25079, 40166: 25032, 40167: 25027, 40168: 25030, 40169: 25018, 40170: 25035, 40171: 32633, 40172: 25037, 40173: 25062, 40174: 25059, 40175: 25078, 40176: 25082, 40177: 25076, 40178: 25087, 40179: 25085, 40180: 25084, 40181: 25086, 40182: 25088, 40183: 25096, 40184: 25097, 40185: 25101, 40186: 25100, 40187: 25108, 40188: 25115, 40256: 25118, 40257: 25121, 40258: 25130, 40259: 25134, 40260: 25136, 40261: 25138, 40262: 25139, 40263: 25153, 40264: 25166, 40265: 25182, 40266: 25187, 40267: 25179, 40268: 25184, 40269: 25192, 40270: 25212, 40271: 25218, 40272: 25225, 40273: 25214, 40274: 25234, 40275: 25235, 40276: 25238, 40277: 25300, 40278: 25219, 40279: 25236, 40280: 25303, 40281: 25297, 40282: 25275, 40283: 25295, 40284: 25343, 40285: 25286, 40286: 25812, 40287: 25288, 40288: 25308, 40289: 25292, 40290: 25290, 40291: 25282, 40292: 25287, 40293: 25243, 40294: 25289, 40295: 25356, 40296: 25326, 40297: 25329, 40298: 25383, 40299: 25346, 40300: 25352, 40301: 25327, 40302: 25333, 40303: 25424, 40304: 25406, 40305: 25421, 40306: 25628, 40307: 25423, 40308: 25494, 40309: 25486, 40310: 25472, 40311: 25515, 40312: 25462, 40313: 25507, 40314: 25487, 40315: 25481, 40316: 25503, 40317: 25525, 40318: 25451, 40320: 25449, 40321: 25534, 40322: 25577, 40323: 25536, 40324: 25542, 40325: 25571, 40326: 25545, 40327: 25554, 40328: 25590, 40329: 25540, 40330: 25622, 40331: 25652, 40332: 25606, 40333: 25619, 40334: 25638, 40335: 25654, 40336: 25885, 40337: 25623, 40338: 25640, 40339: 25615, 40340: 25703, 40341: 25711, 40342: 25718, 40343: 25678, 40344: 25898, 40345: 25749, 40346: 25747, 40347: 25765, 40348: 25769, 40349: 25736, 40350: 25788, 40351: 25818, 40352: 25810, 40353: 25797, 40354: 25799, 40355: 25787, 40356: 25816, 40357: 25794, 40358: 25841, 40359: 25831, 40360: 33289, 40361: 25824, 40362: 25825, 40363: 25260, 40364: 25827, 40365: 25839, 40366: 25900, 40367: 25846, 40368: 25844, 40369: 25842, 40370: 25850, 40371: 25856, 40372: 25853, 40373: 25880, 40374: 25884, 40375: 25861, 40376: 25892, 40377: 25891, 40378: 25899, 40379: 25908, 40380: 25909, 40381: 25911, 40382: 25910, 40383: 25912, 40384: 30027, 40385: 25928, 40386: 25942, 40387: 25941, 40388: 25933, 40389: 25944, 40390: 25950, 40391: 25949, 40392: 25970, 40393: 25976, 40394: 25986, 40395: 25987, 40396: 35722, 40397: 26011, 40398: 26015, 40399: 26027, 40400: 26039, 40401: 26051, 40402: 26054, 40403: 26049, 40404: 26052, 40405: 26060, 40406: 26066, 40407: 26075, 40408: 26073, 40409: 26080, 40410: 26081, 40411: 26097, 40412: 26482, 40413: 26122, 40414: 26115, 40415: 26107, 40416: 26483, 40417: 26165, 40418: 26166, 40419: 26164, 40420: 26140, 40421: 26191, 40422: 26180, 40423: 26185, 40424: 26177, 40425: 26206, 40426: 26205, 40427: 26212, 40428: 26215, 40429: 26216, 40430: 26207, 40431: 26210, 40432: 26224, 40433: 26243, 40434: 26248, 40435: 26254, 40436: 26249, 40437: 26244, 40438: 26264, 40439: 26269, 40440: 26305, 40441: 26297, 40442: 26313, 40443: 26302, 40444: 26300, 40512: 26308, 40513: 26296, 40514: 26326, 40515: 26330, 40516: 26336, 40517: 26175, 40518: 26342, 40519: 26345, 40520: 26352, 40521: 26357, 40522: 26359, 40523: 26383, 40524: 26390, 40525: 26398, 40526: 26406, 40527: 26407, 40528: 38712, 40529: 26414, 40530: 26431, 40531: 26422, 40532: 26433, 40533: 26424, 40534: 26423, 40535: 26438, 40536: 26462, 40537: 26464, 40538: 26457, 40539: 26467, 40540: 26468, 40541: 26505, 40542: 26480, 40543: 26537, 40544: 26492, 40545: 26474, 40546: 26508, 40547: 26507, 40548: 26534, 40549: 26529, 40550: 26501, 40551: 26551, 40552: 26607, 40553: 26548, 40554: 26604, 40555: 26547, 40556: 26601, 40557: 26552, 40558: 26596, 40559: 26590, 40560: 26589, 40561: 26594, 40562: 26606, 40563: 26553, 40564: 26574, 40565: 26566, 40566: 26599, 40567: 27292, 40568: 26654, 40569: 26694, 40570: 26665, 40571: 26688, 40572: 26701, 40573: 26674, 40574: 26702, 40576: 26803, 40577: 26667, 40578: 26713, 40579: 26723, 40580: 26743, 40581: 26751, 40582: 26783, 40583: 26767, 40584: 26797, 40585: 26772, 40586: 26781, 40587: 26779, 40588: 26755, 40589: 27310, 40590: 26809, 40591: 26740, 40592: 26805, 40593: 26784, 40594: 26810, 40595: 26895, 40596: 26765, 40597: 26750, 40598: 26881, 40599: 26826, 40600: 26888, 40601: 26840, 40602: 26914, 40603: 26918, 40604: 26849, 40605: 26892, 40606: 26829, 40607: 26836, 40608: 26855, 40609: 26837, 40610: 26934, 40611: 26898, 40612: 26884, 40613: 26839, 40614: 26851, 40615: 26917, 40616: 26873, 40617: 26848, 40618: 26863, 40619: 26920, 40620: 26922, 40621: 26906, 40622: 26915, 40623: 26913, 40624: 26822, 40625: 27001, 40626: 26999, 40627: 26972, 40628: 27000, 40629: 26987, 40630: 26964, 40631: 27006, 40632: 26990, 40633: 26937, 40634: 26996, 40635: 26941, 40636: 26969, 40637: 26928, 40638: 26977, 40639: 26974, 40640: 26973, 40641: 27009, 40642: 26986, 40643: 27058, 40644: 27054, 40645: 27088, 40646: 27071, 40647: 27073, 40648: 27091, 40649: 27070, 40650: 27086, 40651: 23528, 40652: 27082, 40653: 27101, 40654: 27067, 40655: 27075, 40656: 27047, 40657: 27182, 40658: 27025, 40659: 27040, 40660: 27036, 40661: 27029, 40662: 27060, 40663: 27102, 40664: 27112, 40665: 27138, 40666: 27163, 40667: 27135, 40668: 27402, 40669: 27129, 40670: 27122, 40671: 27111, 40672: 27141, 40673: 27057, 40674: 27166, 40675: 27117, 40676: 27156, 40677: 27115, 40678: 27146, 40679: 27154, 40680: 27329, 40681: 27171, 40682: 27155, 40683: 27204, 40684: 27148, 40685: 27250, 40686: 27190, 40687: 27256, 40688: 27207, 40689: 27234, 40690: 27225, 40691: 27238, 40692: 27208, 40693: 27192, 40694: 27170, 40695: 27280, 40696: 27277, 40697: 27296, 40698: 27268, 40699: 27298, 40700: 27299, 40768: 27287, 40769: 34327, 40770: 27323, 40771: 27331, 40772: 27330, 40773: 27320, 40774: 27315, 40775: 27308, 40776: 27358, 40777: 27345, 40778: 27359, 40779: 27306, 40780: 27354, 40781: 27370, 40782: 27387, 40783: 27397, 40784: 34326, 40785: 27386, 40786: 27410, 40787: 27414, 40788: 39729, 40789: 27423, 40790: 27448, 40791: 27447, 40792: 30428, 40793: 27449, 40794: 39150, 40795: 27463, 40796: 27459, 40797: 27465, 40798: 27472, 40799: 27481, 40800: 27476, 40801: 27483, 40802: 27487, 40803: 27489, 40804: 27512, 40805: 27513, 40806: 27519, 40807: 27520, 40808: 27524, 40809: 27523, 40810: 27533, 40811: 27544, 40812: 27541, 40813: 27550, 40814: 27556, 40815: 27562, 40816: 27563, 40817: 27567, 40818: 27570, 40819: 27569, 40820: 27571, 40821: 27575, 40822: 27580, 40823: 27590, 40824: 27595, 40825: 27603, 40826: 27615, 40827: 27628, 40828: 27627, 40829: 27635, 40830: 27631, 40832: 40638, 40833: 27656, 40834: 27667, 40835: 27668, 40836: 27675, 40837: 27684, 40838: 27683, 40839: 27742, 40840: 27733, 40841: 27746, 40842: 27754, 40843: 27778, 40844: 27789, 40845: 27802, 40846: 27777, 40847: 27803, 40848: 27774, 40849: 27752, 40850: 27763, 40851: 27794, 40852: 27792, 40853: 27844, 40854: 27889, 40855: 27859, 40856: 27837, 40857: 27863, 40858: 27845, 40859: 27869, 40860: 27822, 40861: 27825, 40862: 27838, 40863: 27834, 40864: 27867, 40865: 27887, 40866: 27865, 40867: 27882, 40868: 27935, 40869: 34893, 40870: 27958, 40871: 27947, 40872: 27965, 40873: 27960, 40874: 27929, 40875: 27957, 40876: 27955, 40877: 27922, 40878: 27916, 40879: 28003, 40880: 28051, 40881: 28004, 40882: 27994, 40883: 28025, 40884: 27993, 40885: 28046, 40886: 28053, 40887: 28644, 40888: 28037, 40889: 28153, 40890: 28181, 40891: 28170, 40892: 28085, 40893: 28103, 40894: 28134, 40895: 28088, 40896: 28102, 40897: 28140, 40898: 28126, 40899: 28108, 40900: 28136, 40901: 28114, 40902: 28101, 40903: 28154, 40904: 28121, 40905: 28132, 40906: 28117, 40907: 28138, 40908: 28142, 40909: 28205, 40910: 28270, 40911: 28206, 40912: 28185, 40913: 28274, 40914: 28255, 40915: 28222, 40916: 28195, 40917: 28267, 40918: 28203, 40919: 28278, 40920: 28237, 40921: 28191, 40922: 28227, 40923: 28218, 40924: 28238, 40925: 28196, 40926: 28415, 40927: 28189, 40928: 28216, 40929: 28290, 40930: 28330, 40931: 28312, 40932: 28361, 40933: 28343, 40934: 28371, 40935: 28349, 40936: 28335, 40937: 28356, 40938: 28338, 40939: 28372, 40940: 28373, 40941: 28303, 40942: 28325, 40943: 28354, 40944: 28319, 40945: 28481, 40946: 28433, 40947: 28748, 40948: 28396, 40949: 28408, 40950: 28414, 40951: 28479, 40952: 28402, 40953: 28465, 40954: 28399, 40955: 28466, 40956: 28364, 57408: 28478, 57409: 28435, 57410: 28407, 57411: 28550, 57412: 28538, 57413: 28536, 57414: 28545, 57415: 28544, 57416: 28527, 57417: 28507, 57418: 28659, 57419: 28525, 57420: 28546, 57421: 28540, 57422: 28504, 57423: 28558, 57424: 28561, 57425: 28610, 57426: 28518, 57427: 28595, 57428: 28579, 57429: 28577, 57430: 28580, 57431: 28601, 57432: 28614, 57433: 28586, 57434: 28639, 57435: 28629, 57436: 28652, 57437: 28628, 57438: 28632, 57439: 28657, 57440: 28654, 57441: 28635, 57442: 28681, 57443: 28683, 57444: 28666, 57445: 28689, 57446: 28673, 57447: 28687, 57448: 28670, 57449: 28699, 57450: 28698, 57451: 28532, 57452: 28701, 57453: 28696, 57454: 28703, 57455: 28720, 57456: 28734, 57457: 28722, 57458: 28753, 57459: 28771, 57460: 28825, 57461: 28818, 57462: 28847, 57463: 28913, 57464: 28844, 57465: 28856, 57466: 28851, 57467: 28846, 57468: 28895, 57469: 28875, 57470: 28893, 57472: 28889, 57473: 28937, 57474: 28925, 57475: 28956, 57476: 28953, 57477: 29029, 57478: 29013, 57479: 29064, 57480: 29030, 57481: 29026, 57482: 29004, 57483: 29014, 57484: 29036, 57485: 29071, 57486: 29179, 57487: 29060, 57488: 29077, 57489: 29096, 57490: 29100, 57491: 29143, 57492: 29113, 57493: 29118, 57494: 29138, 57495: 29129, 57496: 29140, 57497: 29134, 57498: 29152, 57499: 29164, 57500: 29159, 57501: 29173, 57502: 29180, 57503: 29177, 57504: 29183, 57505: 29197, 57506: 29200, 57507: 29211, 57508: 29224, 57509: 29229, 57510: 29228, 57511: 29232, 57512: 29234, 57513: 29243, 57514: 29244, 57515: 29247, 57516: 29248, 57517: 29254, 57518: 29259, 57519: 29272, 57520: 29300, 57521: 29310, 57522: 29314, 57523: 29313, 57524: 29319, 57525: 29330, 57526: 29334, 57527: 29346, 57528: 29351, 57529: 29369, 57530: 29362, 57531: 29379, 57532: 29382, 57533: 29380, 57534: 29390, 57535: 29394, 57536: 29410, 57537: 29408, 57538: 29409, 57539: 29433, 57540: 29431, 57541: 20495, 57542: 29463, 57543: 29450, 57544: 29468, 57545: 29462, 57546: 29469, 57547: 29492, 57548: 29487, 57549: 29481, 57550: 29477, 57551: 29502, 57552: 29518, 57553: 29519, 57554: 40664, 57555: 29527, 57556: 29546, 57557: 29544, 57558: 29552, 57559: 29560, 57560: 29557, 57561: 29563, 57562: 29562, 57563: 29640, 57564: 29619, 57565: 29646, 57566: 29627, 57567: 29632, 57568: 29669, 57569: 29678, 57570: 29662, 57571: 29858, 57572: 29701, 57573: 29807, 57574: 29733, 57575: 29688, 57576: 29746, 57577: 29754, 57578: 29781, 57579: 29759, 57580: 29791, 57581: 29785, 57582: 29761, 57583: 29788, 57584: 29801, 57585: 29808, 57586: 29795, 57587: 29802, 57588: 29814, 57589: 29822, 57590: 29835, 57591: 29854, 57592: 29863, 57593: 29898, 57594: 29903, 57595: 29908, 57596: 29681, 57664: 29920, 57665: 29923, 57666: 29927, 57667: 29929, 57668: 29934, 57669: 29938, 57670: 29936, 57671: 29937, 57672: 29944, 57673: 29943, 57674: 29956, 57675: 29955, 57676: 29957, 57677: 29964, 57678: 29966, 57679: 29965, 57680: 29973, 57681: 29971, 57682: 29982, 57683: 29990, 57684: 29996, 57685: 30012, 57686: 30020, 57687: 30029, 57688: 30026, 57689: 30025, 57690: 30043, 57691: 30022, 57692: 30042, 57693: 30057, 57694: 30052, 57695: 30055, 57696: 30059, 57697: 30061, 57698: 30072, 57699: 30070, 57700: 30086, 57701: 30087, 57702: 30068, 57703: 30090, 57704: 30089, 57705: 30082, 57706: 30100, 57707: 30106, 57708: 30109, 57709: 30117, 57710: 30115, 57711: 30146, 57712: 30131, 57713: 30147, 57714: 30133, 57715: 30141, 57716: 30136, 57717: 30140, 57718: 30129, 57719: 30157, 57720: 30154, 57721: 30162, 57722: 30169, 57723: 30179, 57724: 30174, 57725: 30206, 57726: 30207, 57728: 30204, 57729: 30209, 57730: 30192, 57731: 30202, 57732: 30194, 57733: 30195, 57734: 30219, 57735: 30221, 57736: 30217, 57737: 30239, 57738: 30247, 57739: 30240, 57740: 30241, 57741: 30242, 57742: 30244, 57743: 30260, 57744: 30256, 57745: 30267, 57746: 30279, 57747: 30280, 57748: 30278, 57749: 30300, 57750: 30296, 57751: 30305, 57752: 30306, 57753: 30312, 57754: 30313, 57755: 30314, 57756: 30311, 57757: 30316, 57758: 30320, 57759: 30322, 57760: 30326, 57761: 30328, 57762: 30332, 57763: 30336, 57764: 30339, 57765: 30344, 57766: 30347, 57767: 30350, 57768: 30358, 57769: 30355, 57770: 30361, 57771: 30362, 57772: 30384, 57773: 30388, 57774: 30392, 57775: 30393, 57776: 30394, 57777: 30402, 57778: 30413, 57779: 30422, 57780: 30418, 57781: 30430, 57782: 30433, 57783: 30437, 57784: 30439, 57785: 30442, 57786: 34351, 57787: 30459, 57788: 30472, 57789: 30471, 57790: 30468, 57791: 30505, 57792: 30500, 57793: 30494, 57794: 30501, 57795: 30502, 57796: 30491, 57797: 30519, 57798: 30520, 57799: 30535, 57800: 30554, 57801: 30568, 57802: 30571, 57803: 30555, 57804: 30565, 57805: 30591, 57806: 30590, 57807: 30585, 57808: 30606, 57809: 30603, 57810: 30609, 57811: 30624, 57812: 30622, 57813: 30640, 57814: 30646, 57815: 30649, 57816: 30655, 57817: 30652, 57818: 30653, 57819: 30651, 57820: 30663, 57821: 30669, 57822: 30679, 57823: 30682, 57824: 30684, 57825: 30691, 57826: 30702, 57827: 30716, 57828: 30732, 57829: 30738, 57830: 31014, 57831: 30752, 57832: 31018, 57833: 30789, 57834: 30862, 57835: 30836, 57836: 30854, 57837: 30844, 57838: 30874, 57839: 30860, 57840: 30883, 57841: 30901, 57842: 30890, 57843: 30895, 57844: 30929, 57845: 30918, 57846: 30923, 57847: 30932, 57848: 30910, 57849: 30908, 57850: 30917, 57851: 30922, 57852: 30956, 57920: 30951, 57921: 30938, 57922: 30973, 57923: 30964, 57924: 30983, 57925: 30994, 57926: 30993, 57927: 31001, 57928: 31020, 57929: 31019, 57930: 31040, 57931: 31072, 57932: 31063, 57933: 31071, 57934: 31066, 57935: 31061, 57936: 31059, 57937: 31098, 57938: 31103, 57939: 31114, 57940: 31133, 57941: 31143, 57942: 40779, 57943: 31146, 57944: 31150, 57945: 31155, 57946: 31161, 57947: 31162, 57948: 31177, 57949: 31189, 57950: 31207, 57951: 31212, 57952: 31201, 57953: 31203, 57954: 31240, 57955: 31245, 57956: 31256, 57957: 31257, 57958: 31264, 57959: 31263, 57960: 31104, 57961: 31281, 57962: 31291, 57963: 31294, 57964: 31287, 57965: 31299, 57966: 31319, 57967: 31305, 57968: 31329, 57969: 31330, 57970: 31337, 57971: 40861, 57972: 31344, 57973: 31353, 57974: 31357, 57975: 31368, 57976: 31383, 57977: 31381, 57978: 31384, 57979: 31382, 57980: 31401, 57981: 31432, 57982: 31408, 57984: 31414, 57985: 31429, 57986: 31428, 57987: 31423, 57988: 36995, 57989: 31431, 57990: 31434, 57991: 31437, 57992: 31439, 57993: 31445, 57994: 31443, 57995: 31449, 57996: 31450, 57997: 31453, 57998: 31457, 57999: 31458, 58000: 31462, 58001: 31469, 58002: 31472, 58003: 31490, 58004: 31503, 58005: 31498, 58006: 31494, 58007: 31539, 58008: 31512, 58009: 31513, 58010: 31518, 58011: 31541, 58012: 31528, 58013: 31542, 58014: 31568, 58015: 31610, 58016: 31492, 58017: 31565, 58018: 31499, 58019: 31564, 58020: 31557, 58021: 31605, 58022: 31589, 58023: 31604, 58024: 31591, 58025: 31600, 58026: 31601, 58027: 31596, 58028: 31598, 58029: 31645, 58030: 31640, 58031: 31647, 58032: 31629, 58033: 31644, 58034: 31642, 58035: 31627, 58036: 31634, 58037: 31631, 58038: 31581, 58039: 31641, 58040: 31691, 58041: 31681, 58042: 31692, 58043: 31695, 58044: 31668, 58045: 31686, 58046: 31709, 58047: 31721, 58048: 31761, 58049: 31764, 58050: 31718, 58051: 31717, 58052: 31840, 58053: 31744, 58054: 31751, 58055: 31763, 58056: 31731, 58057: 31735, 58058: 31767, 58059: 31757, 58060: 31734, 58061: 31779, 58062: 31783, 58063: 31786, 58064: 31775, 58065: 31799, 58066: 31787, 58067: 31805, 58068: 31820, 58069: 31811, 58070: 31828, 58071: 31823, 58072: 31808, 58073: 31824, 58074: 31832, 58075: 31839, 58076: 31844, 58077: 31830, 58078: 31845, 58079: 31852, 58080: 31861, 58081: 31875, 58082: 31888, 58083: 31908, 58084: 31917, 58085: 31906, 58086: 31915, 58087: 31905, 58088: 31912, 58089: 31923, 58090: 31922, 58091: 31921, 58092: 31918, 58093: 31929, 58094: 31933, 58095: 31936, 58096: 31941, 58097: 31938, 58098: 31960, 58099: 31954, 58100: 31964, 58101: 31970, 58102: 39739, 58103: 31983, 58104: 31986, 58105: 31988, 58106: 31990, 58107: 31994, 58108: 32006, 58176: 32002, 58177: 32028, 58178: 32021, 58179: 32010, 58180: 32069, 58181: 32075, 58182: 32046, 58183: 32050, 58184: 32063, 58185: 32053, 58186: 32070, 58187: 32115, 58188: 32086, 58189: 32078, 58190: 32114, 58191: 32104, 58192: 32110, 58193: 32079, 58194: 32099, 58195: 32147, 58196: 32137, 58197: 32091, 58198: 32143, 58199: 32125, 58200: 32155, 58201: 32186, 58202: 32174, 58203: 32163, 58204: 32181, 58205: 32199, 58206: 32189, 58207: 32171, 58208: 32317, 58209: 32162, 58210: 32175, 58211: 32220, 58212: 32184, 58213: 32159, 58214: 32176, 58215: 32216, 58216: 32221, 58217: 32228, 58218: 32222, 58219: 32251, 58220: 32242, 58221: 32225, 58222: 32261, 58223: 32266, 58224: 32291, 58225: 32289, 58226: 32274, 58227: 32305, 58228: 32287, 58229: 32265, 58230: 32267, 58231: 32290, 58232: 32326, 58233: 32358, 58234: 32315, 58235: 32309, 58236: 32313, 58237: 32323, 58238: 32311, 58240: 32306, 58241: 32314, 58242: 32359, 58243: 32349, 58244: 32342, 58245: 32350, 58246: 32345, 58247: 32346, 58248: 32377, 58249: 32362, 58250: 32361, 58251: 32380, 58252: 32379, 58253: 32387, 58254: 32213, 58255: 32381, 58256: 36782, 58257: 32383, 58258: 32392, 58259: 32393, 58260: 32396, 58261: 32402, 58262: 32400, 58263: 32403, 58264: 32404, 58265: 32406, 58266: 32398, 58267: 32411, 58268: 32412, 58269: 32568, 58270: 32570, 58271: 32581, 58272: 32588, 58273: 32589, 58274: 32590, 58275: 32592, 58276: 32593, 58277: 32597, 58278: 32596, 58279: 32600, 58280: 32607, 58281: 32608, 58282: 32616, 58283: 32617, 58284: 32615, 58285: 32632, 58286: 32642, 58287: 32646, 58288: 32643, 58289: 32648, 58290: 32647, 58291: 32652, 58292: 32660, 58293: 32670, 58294: 32669, 58295: 32666, 58296: 32675, 58297: 32687, 58298: 32690, 58299: 32697, 58300: 32686, 58301: 32694, 58302: 32696, 58303: 35697, 58304: 32709, 58305: 32710, 58306: 32714, 58307: 32725, 58308: 32724, 58309: 32737, 58310: 32742, 58311: 32745, 58312: 32755, 58313: 32761, 58314: 39132, 58315: 32774, 58316: 32772, 58317: 32779, 58318: 32786, 58319: 32792, 58320: 32793, 58321: 32796, 58322: 32801, 58323: 32808, 58324: 32831, 58325: 32827, 58326: 32842, 58327: 32838, 58328: 32850, 58329: 32856, 58330: 32858, 58331: 32863, 58332: 32866, 58333: 32872, 58334: 32883, 58335: 32882, 58336: 32880, 58337: 32886, 58338: 32889, 58339: 32893, 58340: 32895, 58341: 32900, 58342: 32902, 58343: 32901, 58344: 32923, 58345: 32915, 58346: 32922, 58347: 32941, 58348: 20880, 58349: 32940, 58350: 32987, 58351: 32997, 58352: 32985, 58353: 32989, 58354: 32964, 58355: 32986, 58356: 32982, 58357: 33033, 58358: 33007, 58359: 33009, 58360: 33051, 58361: 33065, 58362: 33059, 58363: 33071, 58364: 33099, 58432: 38539, 58433: 33094, 58434: 33086, 58435: 33107, 58436: 33105, 58437: 33020, 58438: 33137, 58439: 33134, 58440: 33125, 58441: 33126, 58442: 33140, 58443: 33155, 58444: 33160, 58445: 33162, 58446: 33152, 58447: 33154, 58448: 33184, 58449: 33173, 58450: 33188, 58451: 33187, 58452: 33119, 58453: 33171, 58454: 33193, 58455: 33200, 58456: 33205, 58457: 33214, 58458: 33208, 58459: 33213, 58460: 33216, 58461: 33218, 58462: 33210, 58463: 33225, 58464: 33229, 58465: 33233, 58466: 33241, 58467: 33240, 58468: 33224, 58469: 33242, 58470: 33247, 58471: 33248, 58472: 33255, 58473: 33274, 58474: 33275, 58475: 33278, 58476: 33281, 58477: 33282, 58478: 33285, 58479: 33287, 58480: 33290, 58481: 33293, 58482: 33296, 58483: 33302, 58484: 33321, 58485: 33323, 58486: 33336, 58487: 33331, 58488: 33344, 58489: 33369, 58490: 33368, 58491: 33373, 58492: 33370, 58493: 33375, 58494: 33380, 58496: 33378, 58497: 33384, 58498: 33386, 58499: 33387, 58500: 33326, 58501: 33393, 58502: 33399, 58503: 33400, 58504: 33406, 58505: 33421, 58506: 33426, 58507: 33451, 58508: 33439, 58509: 33467, 58510: 33452, 58511: 33505, 58512: 33507, 58513: 33503, 58514: 33490, 58515: 33524, 58516: 33523, 58517: 33530, 58518: 33683, 58519: 33539, 58520: 33531, 58521: 33529, 58522: 33502, 58523: 33542, 58524: 33500, 58525: 33545, 58526: 33497, 58527: 33589, 58528: 33588, 58529: 33558, 58530: 33586, 58531: 33585, 58532: 33600, 58533: 33593, 58534: 33616, 58535: 33605, 58536: 33583, 58537: 33579, 58538: 33559, 58539: 33560, 58540: 33669, 58541: 33690, 58542: 33706, 58543: 33695, 58544: 33698, 58545: 33686, 58546: 33571, 58547: 33678, 58548: 33671, 58549: 33674, 58550: 33660, 58551: 33717, 58552: 33651, 58553: 33653, 58554: 33696, 58555: 33673, 58556: 33704, 58557: 33780, 58558: 33811, 58559: 33771, 58560: 33742, 58561: 33789, 58562: 33795, 58563: 33752, 58564: 33803, 58565: 33729, 58566: 33783, 58567: 33799, 58568: 33760, 58569: 33778, 58570: 33805, 58571: 33826, 58572: 33824, 58573: 33725, 58574: 33848, 58575: 34054, 58576: 33787, 58577: 33901, 58578: 33834, 58579: 33852, 58580: 34138, 58581: 33924, 58582: 33911, 58583: 33899, 58584: 33965, 58585: 33902, 58586: 33922, 58587: 33897, 58588: 33862, 58589: 33836, 58590: 33903, 58591: 33913, 58592: 33845, 58593: 33994, 58594: 33890, 58595: 33977, 58596: 33983, 58597: 33951, 58598: 34009, 58599: 33997, 58600: 33979, 58601: 34010, 58602: 34000, 58603: 33985, 58604: 33990, 58605: 34006, 58606: 33953, 58607: 34081, 58608: 34047, 58609: 34036, 58610: 34071, 58611: 34072, 58612: 34092, 58613: 34079, 58614: 34069, 58615: 34068, 58616: 34044, 58617: 34112, 58618: 34147, 58619: 34136, 58620: 34120, 58688: 34113, 58689: 34306, 58690: 34123, 58691: 34133, 58692: 34176, 58693: 34212, 58694: 34184, 58695: 34193, 58696: 34186, 58697: 34216, 58698: 34157, 58699: 34196, 58700: 34203, 58701: 34282, 58702: 34183, 58703: 34204, 58704: 34167, 58705: 34174, 58706: 34192, 58707: 34249, 58708: 34234, 58709: 34255, 58710: 34233, 58711: 34256, 58712: 34261, 58713: 34269, 58714: 34277, 58715: 34268, 58716: 34297, 58717: 34314, 58718: 34323, 58719: 34315, 58720: 34302, 58721: 34298, 58722: 34310, 58723: 34338, 58724: 34330, 58725: 34352, 58726: 34367, 58727: 34381, 58728: 20053, 58729: 34388, 58730: 34399, 58731: 34407, 58732: 34417, 58733: 34451, 58734: 34467, 58735: 34473, 58736: 34474, 58737: 34443, 58738: 34444, 58739: 34486, 58740: 34479, 58741: 34500, 58742: 34502, 58743: 34480, 58744: 34505, 58745: 34851, 58746: 34475, 58747: 34516, 58748: 34526, 58749: 34537, 58750: 34540, 58752: 34527, 58753: 34523, 58754: 34543, 58755: 34578, 58756: 34566, 58757: 34568, 58758: 34560, 58759: 34563, 58760: 34555, 58761: 34577, 58762: 34569, 58763: 34573, 58764: 34553, 58765: 34570, 58766: 34612, 58767: 34623, 58768: 34615, 58769: 34619, 58770: 34597, 58771: 34601, 58772: 34586, 58773: 34656, 58774: 34655, 58775: 34680, 58776: 34636, 58777: 34638, 58778: 34676, 58779: 34647, 58780: 34664, 58781: 34670, 58782: 34649, 58783: 34643, 58784: 34659, 58785: 34666, 58786: 34821, 58787: 34722, 58788: 34719, 58789: 34690, 58790: 34735, 58791: 34763, 58792: 34749, 58793: 34752, 58794: 34768, 58795: 38614, 58796: 34731, 58797: 34756, 58798: 34739, 58799: 34759, 58800: 34758, 58801: 34747, 58802: 34799, 58803: 34802, 58804: 34784, 58805: 34831, 58806: 34829, 58807: 34814, 58808: 34806, 58809: 34807, 58810: 34830, 58811: 34770, 58812: 34833, 58813: 34838, 58814: 34837, 58815: 34850, 58816: 34849, 58817: 34865, 58818: 34870, 58819: 34873, 58820: 34855, 58821: 34875, 58822: 34884, 58823: 34882, 58824: 34898, 58825: 34905, 58826: 34910, 58827: 34914, 58828: 34923, 58829: 34945, 58830: 34942, 58831: 34974, 58832: 34933, 58833: 34941, 58834: 34997, 58835: 34930, 58836: 34946, 58837: 34967, 58838: 34962, 58839: 34990, 58840: 34969, 58841: 34978, 58842: 34957, 58843: 34980, 58844: 34992, 58845: 35007, 58846: 34993, 58847: 35011, 58848: 35012, 58849: 35028, 58850: 35032, 58851: 35033, 58852: 35037, 58853: 35065, 58854: 35074, 58855: 35068, 58856: 35060, 58857: 35048, 58858: 35058, 58859: 35076, 58860: 35084, 58861: 35082, 58862: 35091, 58863: 35139, 58864: 35102, 58865: 35109, 58866: 35114, 58867: 35115, 58868: 35137, 58869: 35140, 58870: 35131, 58871: 35126, 58872: 35128, 58873: 35148, 58874: 35101, 58875: 35168, 58876: 35166, 58944: 35174, 58945: 35172, 58946: 35181, 58947: 35178, 58948: 35183, 58949: 35188, 58950: 35191, 58951: 35198, 58952: 35203, 58953: 35208, 58954: 35210, 58955: 35219, 58956: 35224, 58957: 35233, 58958: 35241, 58959: 35238, 58960: 35244, 58961: 35247, 58962: 35250, 58963: 35258, 58964: 35261, 58965: 35263, 58966: 35264, 58967: 35290, 58968: 35292, 58969: 35293, 58970: 35303, 58971: 35316, 58972: 35320, 58973: 35331, 58974: 35350, 58975: 35344, 58976: 35340, 58977: 35355, 58978: 35357, 58979: 35365, 58980: 35382, 58981: 35393, 58982: 35419, 58983: 35410, 58984: 35398, 58985: 35400, 58986: 35452, 58987: 35437, 58988: 35436, 58989: 35426, 58990: 35461, 58991: 35458, 58992: 35460, 58993: 35496, 58994: 35489, 58995: 35473, 58996: 35493, 58997: 35494, 58998: 35482, 58999: 35491, 59000: 35524, 59001: 35533, 59002: 35522, 59003: 35546, 59004: 35563, 59005: 35571, 59006: 35559, 59008: 35556, 59009: 35569, 59010: 35604, 59011: 35552, 59012: 35554, 59013: 35575, 59014: 35550, 59015: 35547, 59016: 35596, 59017: 35591, 59018: 35610, 59019: 35553, 59020: 35606, 59021: 35600, 59022: 35607, 59023: 35616, 59024: 35635, 59025: 38827, 59026: 35622, 59027: 35627, 59028: 35646, 59029: 35624, 59030: 35649, 59031: 35660, 59032: 35663, 59033: 35662, 59034: 35657, 59035: 35670, 59036: 35675, 59037: 35674, 59038: 35691, 59039: 35679, 59040: 35692, 59041: 35695, 59042: 35700, 59043: 35709, 59044: 35712, 59045: 35724, 59046: 35726, 59047: 35730, 59048: 35731, 59049: 35734, 59050: 35737, 59051: 35738, 59052: 35898, 59053: 35905, 59054: 35903, 59055: 35912, 59056: 35916, 59057: 35918, 59058: 35920, 59059: 35925, 59060: 35938, 59061: 35948, 59062: 35960, 59063: 35962, 59064: 35970, 59065: 35977, 59066: 35973, 59067: 35978, 59068: 35981, 59069: 35982, 59070: 35988, 59071: 35964, 59072: 35992, 59073: 25117, 59074: 36013, 59075: 36010, 59076: 36029, 59077: 36018, 59078: 36019, 59079: 36014, 59080: 36022, 59081: 36040, 59082: 36033, 59083: 36068, 59084: 36067, 59085: 36058, 59086: 36093, 59087: 36090, 59088: 36091, 59089: 36100, 59090: 36101, 59091: 36106, 59092: 36103, 59093: 36111, 59094: 36109, 59095: 36112, 59096: 40782, 59097: 36115, 59098: 36045, 59099: 36116, 59100: 36118, 59101: 36199, 59102: 36205, 59103: 36209, 59104: 36211, 59105: 36225, 59106: 36249, 59107: 36290, 59108: 36286, 59109: 36282, 59110: 36303, 59111: 36314, 59112: 36310, 59113: 36300, 59114: 36315, 59115: 36299, 59116: 36330, 59117: 36331, 59118: 36319, 59119: 36323, 59120: 36348, 59121: 36360, 59122: 36361, 59123: 36351, 59124: 36381, 59125: 36382, 59126: 36368, 59127: 36383, 59128: 36418, 59129: 36405, 59130: 36400, 59131: 36404, 59132: 36426, 59200: 36423, 59201: 36425, 59202: 36428, 59203: 36432, 59204: 36424, 59205: 36441, 59206: 36452, 59207: 36448, 59208: 36394, 59209: 36451, 59210: 36437, 59211: 36470, 59212: 36466, 59213: 36476, 59214: 36481, 59215: 36487, 59216: 36485, 59217: 36484, 59218: 36491, 59219: 36490, 59220: 36499, 59221: 36497, 59222: 36500, 59223: 36505, 59224: 36522, 59225: 36513, 59226: 36524, 59227: 36528, 59228: 36550, 59229: 36529, 59230: 36542, 59231: 36549, 59232: 36552, 59233: 36555, 59234: 36571, 59235: 36579, 59236: 36604, 59237: 36603, 59238: 36587, 59239: 36606, 59240: 36618, 59241: 36613, 59242: 36629, 59243: 36626, 59244: 36633, 59245: 36627, 59246: 36636, 59247: 36639, 59248: 36635, 59249: 36620, 59250: 36646, 59251: 36659, 59252: 36667, 59253: 36665, 59254: 36677, 59255: 36674, 59256: 36670, 59257: 36684, 59258: 36681, 59259: 36678, 59260: 36686, 59261: 36695, 59262: 36700, 59264: 36706, 59265: 36707, 59266: 36708, 59267: 36764, 59268: 36767, 59269: 36771, 59270: 36781, 59271: 36783, 59272: 36791, 59273: 36826, 59274: 36837, 59275: 36834, 59276: 36842, 59277: 36847, 59278: 36999, 59279: 36852, 59280: 36869, 59281: 36857, 59282: 36858, 59283: 36881, 59284: 36885, 59285: 36897, 59286: 36877, 59287: 36894, 59288: 36886, 59289: 36875, 59290: 36903, 59291: 36918, 59292: 36917, 59293: 36921, 59294: 36856, 59295: 36943, 59296: 36944, 59297: 36945, 59298: 36946, 59299: 36878, 59300: 36937, 59301: 36926, 59302: 36950, 59303: 36952, 59304: 36958, 59305: 36968, 59306: 36975, 59307: 36982, 59308: 38568, 59309: 36978, 59310: 36994, 59311: 36989, 59312: 36993, 59313: 36992, 59314: 37002, 59315: 37001, 59316: 37007, 59317: 37032, 59318: 37039, 59319: 37041, 59320: 37045, 59321: 37090, 59322: 37092, 59323: 25160, 59324: 37083, 59325: 37122, 59326: 37138, 59327: 37145, 59328: 37170, 59329: 37168, 59330: 37194, 59331: 37206, 59332: 37208, 59333: 37219, 59334: 37221, 59335: 37225, 59336: 37235, 59337: 37234, 59338: 37259, 59339: 37257, 59340: 37250, 59341: 37282, 59342: 37291, 59343: 37295, 59344: 37290, 59345: 37301, 59346: 37300, 59347: 37306, 59348: 37312, 59349: 37313, 59350: 37321, 59351: 37323, 59352: 37328, 59353: 37334, 59354: 37343, 59355: 37345, 59356: 37339, 59357: 37372, 59358: 37365, 59359: 37366, 59360: 37406, 59361: 37375, 59362: 37396, 59363: 37420, 59364: 37397, 59365: 37393, 59366: 37470, 59367: 37463, 59368: 37445, 59369: 37449, 59370: 37476, 59371: 37448, 59372: 37525, 59373: 37439, 59374: 37451, 59375: 37456, 59376: 37532, 59377: 37526, 59378: 37523, 59379: 37531, 59380: 37466, 59381: 37583, 59382: 37561, 59383: 37559, 59384: 37609, 59385: 37647, 59386: 37626, 59387: 37700, 59388: 37678, 59456: 37657, 59457: 37666, 59458: 37658, 59459: 37667, 59460: 37690, 59461: 37685, 59462: 37691, 59463: 37724, 59464: 37728, 59465: 37756, 59466: 37742, 59467: 37718, 59468: 37808, 59469: 37804, 59470: 37805, 59471: 37780, 59472: 37817, 59473: 37846, 59474: 37847, 59475: 37864, 59476: 37861, 59477: 37848, 59478: 37827, 59479: 37853, 59480: 37840, 59481: 37832, 59482: 37860, 59483: 37914, 59484: 37908, 59485: 37907, 59486: 37891, 59487: 37895, 59488: 37904, 59489: 37942, 59490: 37931, 59491: 37941, 59492: 37921, 59493: 37946, 59494: 37953, 59495: 37970, 59496: 37956, 59497: 37979, 59498: 37984, 59499: 37986, 59500: 37982, 59501: 37994, 59502: 37417, 59503: 38000, 59504: 38005, 59505: 38007, 59506: 38013, 59507: 37978, 59508: 38012, 59509: 38014, 59510: 38017, 59511: 38015, 59512: 38274, 59513: 38279, 59514: 38282, 59515: 38292, 59516: 38294, 59517: 38296, 59518: 38297, 59520: 38304, 59521: 38312, 59522: 38311, 59523: 38317, 59524: 38332, 59525: 38331, 59526: 38329, 59527: 38334, 59528: 38346, 59529: 28662, 59530: 38339, 59531: 38349, 59532: 38348, 59533: 38357, 59534: 38356, 59535: 38358, 59536: 38364, 59537: 38369, 59538: 38373, 59539: 38370, 59540: 38433, 59541: 38440, 59542: 38446, 59543: 38447, 59544: 38466, 59545: 38476, 59546: 38479, 59547: 38475, 59548: 38519, 59549: 38492, 59550: 38494, 59551: 38493, 59552: 38495, 59553: 38502, 59554: 38514, 59555: 38508, 59556: 38541, 59557: 38552, 59558: 38549, 59559: 38551, 59560: 38570, 59561: 38567, 59562: 38577, 59563: 38578, 59564: 38576, 59565: 38580, 59566: 38582, 59567: 38584, 59568: 38585, 59569: 38606, 59570: 38603, 59571: 38601, 59572: 38605, 59573: 35149, 59574: 38620, 59575: 38669, 59576: 38613, 59577: 38649, 59578: 38660, 59579: 38662, 59580: 38664, 59581: 38675, 59582: 38670, 59583: 38673, 59584: 38671, 59585: 38678, 59586: 38681, 59587: 38692, 59588: 38698, 59589: 38704, 59590: 38713, 59591: 38717, 59592: 38718, 59593: 38724, 59594: 38726, 59595: 38728, 59596: 38722, 59597: 38729, 59598: 38748, 59599: 38752, 59600: 38756, 59601: 38758, 59602: 38760, 59603: 21202, 59604: 38763, 59605: 38769, 59606: 38777, 59607: 38789, 59608: 38780, 59609: 38785, 59610: 38778, 59611: 38790, 59612: 38795, 59613: 38799, 59614: 38800, 59615: 38812, 59616: 38824, 59617: 38822, 59618: 38819, 59619: 38835, 59620: 38836, 59621: 38851, 59622: 38854, 59623: 38856, 59624: 38859, 59625: 38876, 59626: 38893, 59627: 40783, 59628: 38898, 59629: 31455, 59630: 38902, 59631: 38901, 59632: 38927, 59633: 38924, 59634: 38968, 59635: 38948, 59636: 38945, 59637: 38967, 59638: 38973, 59639: 38982, 59640: 38991, 59641: 38987, 59642: 39019, 59643: 39023, 59644: 39024, 59712: 39025, 59713: 39028, 59714: 39027, 59715: 39082, 59716: 39087, 59717: 39089, 59718: 39094, 59719: 39108, 59720: 39107, 59721: 39110, 59722: 39145, 59723: 39147, 59724: 39171, 59725: 39177, 59726: 39186, 59727: 39188, 59728: 39192, 59729: 39201, 59730: 39197, 59731: 39198, 59732: 39204, 59733: 39200, 59734: 39212, 59735: 39214, 59736: 39229, 59737: 39230, 59738: 39234, 59739: 39241, 59740: 39237, 59741: 39248, 59742: 39243, 59743: 39249, 59744: 39250, 59745: 39244, 59746: 39253, 59747: 39319, 59748: 39320, 59749: 39333, 59750: 39341, 59751: 39342, 59752: 39356, 59753: 39391, 59754: 39387, 59755: 39389, 59756: 39384, 59757: 39377, 59758: 39405, 59759: 39406, 59760: 39409, 59761: 39410, 59762: 39419, 59763: 39416, 59764: 39425, 59765: 39439, 59766: 39429, 59767: 39394, 59768: 39449, 59769: 39467, 59770: 39479, 59771: 39493, 59772: 39490, 59773: 39488, 59774: 39491, 59776: 39486, 59777: 39509, 59778: 39501, 59779: 39515, 59780: 39511, 59781: 39519, 59782: 39522, 59783: 39525, 59784: 39524, 59785: 39529, 59786: 39531, 59787: 39530, 59788: 39597, 59789: 39600, 59790: 39612, 59791: 39616, 59792: 39631, 59793: 39633, 59794: 39635, 59795: 39636, 59796: 39646, 59797: 39647, 59798: 39650, 59799: 39651, 59800: 39654, 59801: 39663, 59802: 39659, 59803: 39662, 59804: 39668, 59805: 39665, 59806: 39671, 59807: 39675, 59808: 39686, 59809: 39704, 59810: 39706, 59811: 39711, 59812: 39714, 59813: 39715, 59814: 39717, 59815: 39719, 59816: 39720, 59817: 39721, 59818: 39722, 59819: 39726, 59820: 39727, 59821: 39730, 59822: 39748, 59823: 39747, 59824: 39759, 59825: 39757, 59826: 39758, 59827: 39761, 59828: 39768, 59829: 39796, 59830: 39827, 59831: 39811, 59832: 39825, 59833: 39830, 59834: 39831, 59835: 39839, 59836: 39840, 59837: 39848, 59838: 39860, 59839: 39872, 59840: 39882, 59841: 39865, 59842: 39878, 59843: 39887, 59844: 39889, 59845: 39890, 59846: 39907, 59847: 39906, 59848: 39908, 59849: 39892, 59850: 39905, 59851: 39994, 59852: 39922, 59853: 39921, 59854: 39920, 59855: 39957, 59856: 39956, 59857: 39945, 59858: 39955, 59859: 39948, 59860: 39942, 59861: 39944, 59862: 39954, 59863: 39946, 59864: 39940, 59865: 39982, 59866: 39963, 59867: 39973, 59868: 39972, 59869: 39969, 59870: 39984, 59871: 40007, 59872: 39986, 59873: 40006, 59874: 39998, 59875: 40026, 59876: 40032, 59877: 40039, 59878: 40054, 59879: 40056, 59880: 40167, 59881: 40172, 59882: 40176, 59883: 40201, 59884: 40200, 59885: 40171, 59886: 40195, 59887: 40198, 59888: 40234, 59889: 40230, 59890: 40367, 59891: 40227, 59892: 40223, 59893: 40260, 59894: 40213, 59895: 40210, 59896: 40257, 59897: 40255, 59898: 40254, 59899: 40262, 59900: 40264, 59968: 40285, 59969: 40286, 59970: 40292, 59971: 40273, 59972: 40272, 59973: 40281, 59974: 40306, 59975: 40329, 59976: 40327, 59977: 40363, 59978: 40303, 59979: 40314, 59980: 40346, 59981: 40356, 59982: 40361, 59983: 40370, 59984: 40388, 59985: 40385, 59986: 40379, 59987: 40376, 59988: 40378, 59989: 40390, 59990: 40399, 59991: 40386, 59992: 40409, 59993: 40403, 59994: 40440, 59995: 40422, 59996: 40429, 59997: 40431, 59998: 40445, 59999: 40474, 60000: 40475, 60001: 40478, 60002: 40565, 60003: 40569, 60004: 40573, 60005: 40577, 60006: 40584, 60007: 40587, 60008: 40588, 60009: 40594, 60010: 40597, 60011: 40593, 60012: 40605, 60013: 40613, 60014: 40617, 60015: 40632, 60016: 40618, 60017: 40621, 60018: 38753, 60019: 40652, 60020: 40654, 60021: 40655, 60022: 40656, 60023: 40660, 60024: 40668, 60025: 40670, 60026: 40669, 60027: 40672, 60028: 40677, 60029: 40680, 60030: 40687, 60032: 40692, 60033: 40694, 60034: 40695, 60035: 40697, 60036: 40699, 60037: 40700, 60038: 40701, 60039: 40711, 60040: 40712, 60041: 30391, 60042: 40725, 60043: 40737, 60044: 40748, 60045: 40766, 60046: 40778, 60047: 40786, 60048: 40788, 60049: 40803, 60050: 40799, 60051: 40800, 60052: 40801, 60053: 40806, 60054: 40807, 60055: 40812, 60056: 40810, 60057: 40823, 60058: 40818, 60059: 40822, 60060: 40853, 60061: 40860, 60062: 40864, 60063: 22575, 60064: 27079, 60065: 36953, 60066: 29796, 60067: 20956, 60068: 29081, 60736: 32394, 60737: 35100, 60738: 37704, 60739: 37512, 60740: 34012, 60741: 20425, 60742: 28859, 60743: 26161, 60744: 26824, 60745: 37625, 60746: 26363, 60747: 24389, 60748: 20008, 60749: 20193, 60750: 20220, 60751: 20224, 60752: 20227, 60753: 20281, 60754: 20310, 60755: 20370, 60756: 20362, 60757: 20378, 60758: 20372, 60759: 20429, 60760: 20544, 60761: 20514, 60762: 20479, 60763: 20510, 60764: 20550, 60765: 20592, 60766: 20546, 60767: 20628, 60768: 20724, 60769: 20696, 60770: 20810, 60771: 20836, 60772: 20893, 60773: 20926, 60774: 20972, 60775: 21013, 60776: 21148, 60777: 21158, 60778: 21184, 60779: 21211, 60780: 21248, 60781: 21255, 60782: 21284, 60783: 21362, 60784: 21395, 60785: 21426, 60786: 21469, 60787: 64014, 60788: 21660, 60789: 21642, 60790: 21673, 60791: 21759, 60792: 21894, 60793: 22361, 60794: 22373, 60795: 22444, 60796: 22472, 60797: 22471, 60798: 64015, 60800: 64016, 60801: 22686, 60802: 22706, 60803: 22795, 60804: 22867, 60805: 22875, 60806: 22877, 60807: 22883, 60808: 22948, 60809: 22970, 60810: 23382, 60811: 23488, 60812: 29999, 60813: 23512, 60814: 23532, 60815: 23582, 60816: 23718, 60817: 23738, 60818: 23797, 60819: 23847, 60820: 23891, 60821: 64017, 60822: 23874, 60823: 23917, 60824: 23992, 60825: 23993, 60826: 24016, 60827: 24353, 60828: 24372, 60829: 24423, 60830: 24503, 60831: 24542, 60832: 24669, 60833: 24709, 60834: 24714, 60835: 24798, 60836: 24789, 60837: 24864, 60838: 24818, 60839: 24849, 60840: 24887, 60841: 24880, 60842: 24984, 60843: 25107, 60844: 25254, 60845: 25589, 60846: 25696, 60847: 25757, 60848: 25806, 60849: 25934, 60850: 26112, 60851: 26133, 60852: 26171, 60853: 26121, 60854: 26158, 60855: 26142, 60856: 26148, 60857: 26213, 60858: 26199, 60859: 26201, 60860: 64018, 60861: 26227, 60862: 26265, 60863: 26272, 60864: 26290, 60865: 26303, 60866: 26362, 60867: 26382, 60868: 63785, 60869: 26470, 60870: 26555, 60871: 26706, 60872: 26560, 60873: 26625, 60874: 26692, 60875: 26831, 60876: 64019, 60877: 26984, 60878: 64020, 60879: 27032, 60880: 27106, 60881: 27184, 60882: 27243, 60883: 27206, 60884: 27251, 60885: 27262, 60886: 27362, 60887: 27364, 60888: 27606, 60889: 27711, 60890: 27740, 60891: 27782, 60892: 27759, 60893: 27866, 60894: 27908, 60895: 28039, 60896: 28015, 60897: 28054, 60898: 28076, 60899: 28111, 60900: 28152, 60901: 28146, 60902: 28156, 60903: 28217, 60904: 28252, 60905: 28199, 60906: 28220, 60907: 28351, 60908: 28552, 60909: 28597, 60910: 28661, 60911: 28677, 60912: 28679, 60913: 28712, 60914: 28805, 60915: 28843, 60916: 28943, 60917: 28932, 60918: 29020, 60919: 28998, 60920: 28999, 60921: 64021, 60922: 29121, 60923: 29182, 60924: 29361, 60992: 29374, 60993: 29476, 60994: 64022, 60995: 29559, 60996: 29629, 60997: 29641, 60998: 29654, 60999: 29667, 61000: 29650, 61001: 29703, 61002: 29685, 61003: 29734, 61004: 29738, 61005: 29737, 61006: 29742, 61007: 29794, 61008: 29833, 61009: 29855, 61010: 29953, 61011: 30063, 61012: 30338, 61013: 30364, 61014: 30366, 61015: 30363, 61016: 30374, 61017: 64023, 61018: 30534, 61019: 21167, 61020: 30753, 61021: 30798, 61022: 30820, 61023: 30842, 61024: 31024, 61025: 64024, 61026: 64025, 61027: 64026, 61028: 31124, 61029: 64027, 61030: 31131, 61031: 31441, 61032: 31463, 61033: 64028, 61034: 31467, 61035: 31646, 61036: 64029, 61037: 32072, 61038: 32092, 61039: 32183, 61040: 32160, 61041: 32214, 61042: 32338, 61043: 32583, 61044: 32673, 61045: 64030, 61046: 33537, 61047: 33634, 61048: 33663, 61049: 33735, 61050: 33782, 61051: 33864, 61052: 33972, 61053: 34131, 61054: 34137, 61056: 34155, 61057: 64031, 61058: 34224, 61059: 64032, 61060: 64033, 61061: 34823, 61062: 35061, 61063: 35346, 61064: 35383, 61065: 35449, 61066: 35495, 61067: 35518, 61068: 35551, 61069: 64034, 61070: 35574, 61071: 35667, 61072: 35711, 61073: 36080, 61074: 36084, 61075: 36114, 61076: 36214, 61077: 64035, 61078: 36559, 61079: 64036, 61080: 64037, 61081: 36967, 61082: 37086, 61083: 64038, 61084: 37141, 61085: 37159, 61086: 37338, 61087: 37335, 61088: 37342, 61089: 37357, 61090: 37358, 61091: 37348, 61092: 37349, 61093: 37382, 61094: 37392, 61095: 37386, 61096: 37434, 61097: 37440, 61098: 37436, 61099: 37454, 61100: 37465, 61101: 37457, 61102: 37433, 61103: 37479, 61104: 37543, 61105: 37495, 61106: 37496, 61107: 37607, 61108: 37591, 61109: 37593, 61110: 37584, 61111: 64039, 61112: 37589, 61113: 37600, 61114: 37587, 61115: 37669, 61116: 37665, 61117: 37627, 61118: 64040, 61119: 37662, 61120: 37631, 61121: 37661, 61122: 37634, 61123: 37744, 61124: 37719, 61125: 37796, 61126: 37830, 61127: 37854, 61128: 37880, 61129: 37937, 61130: 37957, 61131: 37960, 61132: 38290, 61133: 63964, 61134: 64041, 61135: 38557, 61136: 38575, 61137: 38707, 61138: 38715, 61139: 38723, 61140: 38733, 61141: 38735, 61142: 38737, 61143: 38741, 61144: 38999, 61145: 39013, 61146: 64042, 61147: 64043, 61148: 39207, 61149: 64044, 61150: 39326, 61151: 39502, 61152: 39641, 61153: 39644, 61154: 39797, 61155: 39794, 61156: 39823, 61157: 39857, 61158: 39867, 61159: 39936, 61160: 40304, 61161: 40299, 61162: 64045, 61163: 40473, 61164: 40657, 61167: 8560, 61168: 8561, 61169: 8562, 61170: 8563, 61171: 8564, 61172: 8565, 61173: 8566, 61174: 8567, 61175: 8568, 61176: 8569, 61177: 65506, 61178: 65508, 61179: 65287, 61180: 65282, 61504: 57344, 61505: 57345, 61506: 57346, 61507: 57347, 61508: 57348, 61509: 57349, 61510: 57350, 61511: 57351, 61512: 57352, 61513: 57353, 61514: 57354, 61515: 57355, 61516: 57356, 61517: 57357, 61518: 57358, 61519: 57359, 61520: 57360, 61521: 57361, 61522: 57362, 61523: 57363, 61524: 57364, 61525: 57365, 61526: 57366, 61527: 57367, 61528: 57368, 61529: 57369, 61530: 57370, 61531: 57371, 61532: 57372, 61533: 57373, 61534: 57374, 61535: 57375, 61536: 57376, 61537: 57377, 61538: 57378, 61539: 57379, 61540: 57380, 61541: 57381, 61542: 57382, 61543: 57383, 61544: 57384, 61545: 57385, 61546: 57386, 61547: 57387, 61548: 57388, 61549: 57389, 61550: 57390, 61551: 57391, 61552: 57392, 61553: 57393, 61554: 57394, 61555: 57395, 61556: 57396, 61557: 57397, 61558: 57398, 61559: 57399, 61560: 57400, 61561: 57401, 61562: 57402, 61563: 57403, 61564: 57404, 61565: 57405, 61566: 57406, 61568: 57407, 61569: 57408, 61570: 57409, 61571: 57410, 61572: 57411, 61573: 57412, 61574: 57413, 61575: 57414, 61576: 57415, 61577: 57416, 61578: 57417, 61579: 57418, 61580: 57419, 61581: 57420, 61582: 57421, 61583: 57422, 61584: 57423, 61585: 57424, 61586: 57425, 61587: 57426, 61588: 57427, 61589: 57428, 61590: 57429, 61591: 57430, 61592: 57431, 61593: 57432, 61594: 57433, 61595: 57434, 61596: 57435, 61597: 57436, 61598: 57437, 61599: 57438, 61600: 57439, 61601: 57440, 61602: 57441, 61603: 57442, 61604: 57443, 61605: 57444, 61606: 57445, 61607: 57446, 61608: 57447, 61609: 57448, 61610: 57449, 61611: 57450, 61612: 57451, 61613: 57452, 61614: 57453, 61615: 57454, 61616: 57455, 61617: 57456, 61618: 57457, 61619: 57458, 61620: 57459, 61621: 57460, 61622: 57461, 61623: 57462, 61624: 57463, 61625: 57464, 61626: 57465, 61627: 57466, 61628: 57467, 61629: 57468, 61630: 57469, 61631: 57470, 61632: 57471, 61633: 57472, 61634: 57473, 61635: 57474, 61636: 57475, 61637: 57476, 61638: 57477, 61639: 57478, 61640: 57479, 61641: 57480, 61642: 57481, 61643: 57482, 61644: 57483, 61645: 57484, 61646: 57485, 61647: 57486, 61648: 57487, 61649: 57488, 61650: 57489, 61651: 57490, 61652: 57491, 61653: 57492, 61654: 57493, 61655: 57494, 61656: 57495, 61657: 57496, 61658: 57497, 61659: 57498, 61660: 57499, 61661: 57500, 61662: 57501, 61663: 57502, 61664: 57503, 61665: 57504, 61666: 57505, 61667: 57506, 61668: 57507, 61669: 57508, 61670: 57509, 61671: 57510, 61672: 57511, 61673: 57512, 61674: 57513, 61675: 57514, 61676: 57515, 61677: 57516, 61678: 57517, 61679: 57518, 61680: 57519, 61681: 57520, 61682: 57521, 61683: 57522, 61684: 57523, 61685: 57524, 61686: 57525, 61687: 57526, 61688: 57527, 61689: 57528, 61690: 57529, 61691: 57530, 61692: 57531, 61760: 57532, 61761: 57533, 61762: 57534, 61763: 57535, 61764: 57536, 61765: 57537, 61766: 57538, 61767: 57539, 61768: 57540, 61769: 57541, 61770: 57542, 61771: 57543, 61772: 57544, 61773: 57545, 61774: 57546, 61775: 57547, 61776: 57548, 61777: 57549, 61778: 57550, 61779: 57551, 61780: 57552, 61781: 57553, 61782: 57554, 61783: 57555, 61784: 57556, 61785: 57557, 61786: 57558, 61787: 57559, 61788: 57560, 61789: 57561, 61790: 57562, 61791: 57563, 61792: 57564, 61793: 57565, 61794: 57566, 61795: 57567, 61796: 57568, 61797: 57569, 61798: 57570, 61799: 57571, 61800: 57572, 61801: 57573, 61802: 57574, 61803: 57575, 61804: 57576, 61805: 57577, 61806: 57578, 61807: 57579, 61808: 57580, 61809: 57581, 61810: 57582, 61811: 57583, 61812: 57584, 61813: 57585, 61814: 57586, 61815: 57587, 61816: 57588, 61817: 57589, 61818: 57590, 61819: 57591, 61820: 57592, 61821: 57593, 61822: 57594, 61824: 57595, 61825: 57596, 61826: 57597, 61827: 57598, 61828: 57599, 61829: 57600, 61830: 57601, 61831: 57602, 61832: 57603, 61833: 57604, 61834: 57605, 61835: 57606, 61836: 57607, 61837: 57608, 61838: 57609, 61839: 57610, 61840: 57611, 61841: 57612, 61842: 57613, 61843: 57614, 61844: 57615, 61845: 57616, 61846: 57617, 61847: 57618, 61848: 57619, 61849: 57620, 61850: 57621, 61851: 57622, 61852: 57623, 61853: 57624, 61854: 57625, 61855: 57626, 61856: 57627, 61857: 57628, 61858: 57629, 61859: 57630, 61860: 57631, 61861: 57632, 61862: 57633, 61863: 57634, 61864: 57635, 61865: 57636, 61866: 57637, 61867: 57638, 61868: 57639, 61869: 57640, 61870: 57641, 61871: 57642, 61872: 57643, 61873: 57644, 61874: 57645, 61875: 57646, 61876: 57647, 61877: 57648, 61878: 57649, 61879: 57650, 61880: 57651, 61881: 57652, 61882: 57653, 61883: 57654, 61884: 57655, 61885: 57656, 61886: 57657, 61887: 57658, 61888: 57659, 61889: 57660, 61890: 57661, 61891: 57662, 61892: 57663, 61893: 57664, 61894: 57665, 61895: 57666, 61896: 57667, 61897: 57668, 61898: 57669, 61899: 57670, 61900: 57671, 61901: 57672, 61902: 57673, 61903: 57674, 61904: 57675, 61905: 57676, 61906: 57677, 61907: 57678, 61908: 57679, 61909: 57680, 61910: 57681, 61911: 57682, 61912: 57683, 61913: 57684, 61914: 57685, 61915: 57686, 61916: 57687, 61917: 57688, 61918: 57689, 61919: 57690, 61920: 57691, 61921: 57692, 61922: 57693, 61923: 57694, 61924: 57695, 61925: 57696, 61926: 57697, 61927: 57698, 61928: 57699, 61929: 57700, 61930: 57701, 61931: 57702, 61932: 57703, 61933: 57704, 61934: 57705, 61935: 57706, 61936: 57707, 61937: 57708, 61938: 57709, 61939: 57710, 61940: 57711, 61941: 57712, 61942: 57713, 61943: 57714, 61944: 57715, 61945: 57716, 61946: 57717, 61947: 57718, 61948: 57719, 62016: 57720, 62017: 57721, 62018: 57722, 62019: 57723, 62020: 57724, 62021: 57725, 62022: 57726, 62023: 57727, 62024: 57728, 62025: 57729, 62026: 57730, 62027: 57731, 62028: 57732, 62029: 57733, 62030: 57734, 62031: 57735, 62032: 57736, 62033: 57737, 62034: 57738, 62035: 57739, 62036: 57740, 62037: 57741, 62038: 57742, 62039: 57743, 62040: 57744, 62041: 57745, 62042: 57746, 62043: 57747, 62044: 57748, 62045: 57749, 62046: 57750, 62047: 57751, 62048: 57752, 62049: 57753, 62050: 57754, 62051: 57755, 62052: 57756, 62053: 57757, 62054: 57758, 62055: 57759, 62056: 57760, 62057: 57761, 62058: 57762, 62059: 57763, 62060: 57764, 62061: 57765, 62062: 57766, 62063: 57767, 62064: 57768, 62065: 57769, 62066: 57770, 62067: 57771, 62068: 57772, 62069: 57773, 62070: 57774, 62071: 57775, 62072: 57776, 62073: 57777, 62074: 57778, 62075: 57779, 62076: 57780, 62077: 57781, 62078: 57782, 62080: 57783, 62081: 57784, 62082: 57785, 62083: 57786, 62084: 57787, 62085: 57788, 62086: 57789, 62087: 57790, 62088: 57791, 62089: 57792, 62090: 57793, 62091: 57794, 62092: 57795, 62093: 57796, 62094: 57797, 62095: 57798, 62096: 57799, 62097: 57800, 62098: 57801, 62099: 57802, 62100: 57803, 62101: 57804, 62102: 57805, 62103: 57806, 62104: 57807, 62105: 57808, 62106: 57809, 62107: 57810, 62108: 57811, 62109: 57812, 62110: 57813, 62111: 57814, 62112: 57815, 62113: 57816, 62114: 57817, 62115: 57818, 62116: 57819, 62117: 57820, 62118: 57821, 62119: 57822, 62120: 57823, 62121: 57824, 62122: 57825, 62123: 57826, 62124: 57827, 62125: 57828, 62126: 57829, 62127: 57830, 62128: 57831, 62129: 57832, 62130: 57833, 62131: 57834, 62132: 57835, 62133: 57836, 62134: 57837, 62135: 57838, 62136: 57839, 62137: 57840, 62138: 57841, 62139: 57842, 62140: 57843, 62141: 57844, 62142: 57845, 62143: 57846, 62144: 57847, 62145: 57848, 62146: 57849, 62147: 57850, 62148: 57851, 62149: 57852, 62150: 57853, 62151: 57854, 62152: 57855, 62153: 57856, 62154: 57857, 62155: 57858, 62156: 57859, 62157: 57860, 62158: 57861, 62159: 57862, 62160: 57863, 62161: 57864, 62162: 57865, 62163: 57866, 62164: 57867, 62165: 57868, 62166: 57869, 62167: 57870, 62168: 57871, 62169: 57872, 62170: 57873, 62171: 57874, 62172: 57875, 62173: 57876, 62174: 57877, 62175: 57878, 62176: 57879, 62177: 57880, 62178: 57881, 62179: 57882, 62180: 57883, 62181: 57884, 62182: 57885, 62183: 57886, 62184: 57887, 62185: 57888, 62186: 57889, 62187: 57890, 62188: 57891, 62189: 57892, 62190: 57893, 62191: 57894, 62192: 57895, 62193: 57896, 62194: 57897, 62195: 57898, 62196: 57899, 62197: 57900, 62198: 57901, 62199: 57902, 62200: 57903, 62201: 57904, 62202: 57905, 62203: 57906, 62204: 57907, 62272: 57908, 62273: 57909, 62274: 57910, 62275: 57911, 62276: 57912, 62277: 57913, 62278: 57914, 62279: 57915, 62280: 57916, 62281: 57917, 62282: 57918, 62283: 57919, 62284: 57920, 62285: 57921, 62286: 57922, 62287: 57923, 62288: 57924, 62289: 57925, 62290: 57926, 62291: 57927, 62292: 57928, 62293: 57929, 62294: 57930, 62295: 57931, 62296: 57932, 62297: 57933, 62298: 57934, 62299: 57935, 62300: 57936, 62301: 57937, 62302: 57938, 62303: 57939, 62304: 57940, 62305: 57941, 62306: 57942, 62307: 57943, 62308: 57944, 62309: 57945, 62310: 57946, 62311: 57947, 62312: 57948, 62313: 57949, 62314: 57950, 62315: 57951, 62316: 57952, 62317: 57953, 62318: 57954, 62319: 57955, 62320: 57956, 62321: 57957, 62322: 57958, 62323: 57959, 62324: 57960, 62325: 57961, 62326: 57962, 62327: 57963, 62328: 57964, 62329: 57965, 62330: 57966, 62331: 57967, 62332: 57968, 62333: 57969, 62334: 57970, 62336: 57971, 62337: 57972, 62338: 57973, 62339: 57974, 62340: 57975, 62341: 57976, 62342: 57977, 62343: 57978, 62344: 57979, 62345: 57980, 62346: 57981, 62347: 57982, 62348: 57983, 62349: 57984, 62350: 57985, 62351: 57986, 62352: 57987, 62353: 57988, 62354: 57989, 62355: 57990, 62356: 57991, 62357: 57992, 62358: 57993, 62359: 57994, 62360: 57995, 62361: 57996, 62362: 57997, 62363: 57998, 62364: 57999, 62365: 58000, 62366: 58001, 62367: 58002, 62368: 58003, 62369: 58004, 62370: 58005, 62371: 58006, 62372: 58007, 62373: 58008, 62374: 58009, 62375: 58010, 62376: 58011, 62377: 58012, 62378: 58013, 62379: 58014, 62380: 58015, 62381: 58016, 62382: 58017, 62383: 58018, 62384: 58019, 62385: 58020, 62386: 58021, 62387: 58022, 62388: 58023, 62389: 58024, 62390: 58025, 62391: 58026, 62392: 58027, 62393: 58028, 62394: 58029, 62395: 58030, 62396: 58031, 62397: 58032, 62398: 58033, 62399: 58034, 62400: 58035, 62401: 58036, 62402: 58037, 62403: 58038, 62404: 58039, 62405: 58040, 62406: 58041, 62407: 58042, 62408: 58043, 62409: 58044, 62410: 58045, 62411: 58046, 62412: 58047, 62413: 58048, 62414: 58049, 62415: 58050, 62416: 58051, 62417: 58052, 62418: 58053, 62419: 58054, 62420: 58055, 62421: 58056, 62422: 58057, 62423: 58058, 62424: 58059, 62425: 58060, 62426: 58061, 62427: 58062, 62428: 58063, 62429: 58064, 62430: 58065, 62431: 58066, 62432: 58067, 62433: 58068, 62434: 58069, 62435: 58070, 62436: 58071, 62437: 58072, 62438: 58073, 62439: 58074, 62440: 58075, 62441: 58076, 62442: 58077, 62443: 58078, 62444: 58079, 62445: 58080, 62446: 58081, 62447: 58082, 62448: 58083, 62449: 58084, 62450: 58085, 62451: 58086, 62452: 58087, 62453: 58088, 62454: 58089, 62455: 58090, 62456: 58091, 62457: 58092, 62458: 58093, 62459: 58094, 62460: 58095, 62528: 58096, 62529: 58097, 62530: 58098, 62531: 58099, 62532: 58100, 62533: 58101, 62534: 58102, 62535: 58103, 62536: 58104, 62537: 58105, 62538: 58106, 62539: 58107, 62540: 58108, 62541: 58109, 62542: 58110, 62543: 58111, 62544: 58112, 62545: 58113, 62546: 58114, 62547: 58115, 62548: 58116, 62549: 58117, 62550: 58118, 62551: 58119, 62552: 58120, 62553: 58121, 62554: 58122, 62555: 58123, 62556: 58124, 62557: 58125, 62558: 58126, 62559: 58127, 62560: 58128, 62561: 58129, 62562: 58130, 62563: 58131, 62564: 58132, 62565: 58133, 62566: 58134, 62567: 58135, 62568: 58136, 62569: 58137, 62570: 58138, 62571: 58139, 62572: 58140, 62573: 58141, 62574: 58142, 62575: 58143, 62576: 58144, 62577: 58145, 62578: 58146, 62579: 58147, 62580: 58148, 62581: 58149, 62582: 58150, 62583: 58151, 62584: 58152, 62585: 58153, 62586: 58154, 62587: 58155, 62588: 58156, 62589: 58157, 62590: 58158, 62592: 58159, 62593: 58160, 62594: 58161, 62595: 58162, 62596: 58163, 62597: 58164, 62598: 58165, 62599: 58166, 62600: 58167, 62601: 58168, 62602: 58169, 62603: 58170, 62604: 58171, 62605: 58172, 62606: 58173, 62607: 58174, 62608: 58175, 62609: 58176, 62610: 58177, 62611: 58178, 62612: 58179, 62613: 58180, 62614: 58181, 62615: 58182, 62616: 58183, 62617: 58184, 62618: 58185, 62619: 58186, 62620: 58187, 62621: 58188, 62622: 58189, 62623: 58190, 62624: 58191, 62625: 58192, 62626: 58193, 62627: 58194, 62628: 58195, 62629: 58196, 62630: 58197, 62631: 58198, 62632: 58199, 62633: 58200, 62634: 58201, 62635: 58202, 62636: 58203, 62637: 58204, 62638: 58205, 62639: 58206, 62640: 58207, 62641: 58208, 62642: 58209, 62643: 58210, 62644: 58211, 62645: 58212, 62646: 58213, 62647: 58214, 62648: 58215, 62649: 58216, 62650: 58217, 62651: 58218, 62652: 58219, 62653: 58220, 62654: 58221, 62655: 58222, 62656: 58223, 62657: 58224, 62658: 58225, 62659: 58226, 62660: 58227, 62661: 58228, 62662: 58229, 62663: 58230, 62664: 58231, 62665: 58232, 62666: 58233, 62667: 58234, 62668: 58235, 62669: 58236, 62670: 58237, 62671: 58238, 62672: 58239, 62673: 58240, 62674: 58241, 62675: 58242, 62676: 58243, 62677: 58244, 62678: 58245, 62679: 58246, 62680: 58247, 62681: 58248, 62682: 58249, 62683: 58250, 62684: 58251, 62685: 58252, 62686: 58253, 62687: 58254, 62688: 58255, 62689: 58256, 62690: 58257, 62691: 58258, 62692: 58259, 62693: 58260, 62694: 58261, 62695: 58262, 62696: 58263, 62697: 58264, 62698: 58265, 62699: 58266, 62700: 58267, 62701: 58268, 62702: 58269, 62703: 58270, 62704: 58271, 62705: 58272, 62706: 58273, 62707: 58274, 62708: 58275, 62709: 58276, 62710: 58277, 62711: 58278, 62712: 58279, 62713: 58280, 62714: 58281, 62715: 58282, 62716: 58283, 62784: 58284, 62785: 58285, 62786: 58286, 62787: 58287, 62788: 58288, 62789: 58289, 62790: 58290, 62791: 58291, 62792: 58292, 62793: 58293, 62794: 58294, 62795: 58295, 62796: 58296, 62797: 58297, 62798: 58298, 62799: 58299, 62800: 58300, 62801: 58301, 62802: 58302, 62803: 58303, 62804: 58304, 62805: 58305, 62806: 58306, 62807: 58307, 62808: 58308, 62809: 58309, 62810: 58310, 62811: 58311, 62812: 58312, 62813: 58313, 62814: 58314, 62815: 58315, 62816: 58316, 62817: 58317, 62818: 58318, 62819: 58319, 62820: 58320, 62821: 58321, 62822: 58322, 62823: 58323, 62824: 58324, 62825: 58325, 62826: 58326, 62827: 58327, 62828: 58328, 62829: 58329, 62830: 58330, 62831: 58331, 62832: 58332, 62833: 58333, 62834: 58334, 62835: 58335, 62836: 58336, 62837: 58337, 62838: 58338, 62839: 58339, 62840: 58340, 62841: 58341, 62842: 58342, 62843: 58343, 62844: 58344, 62845: 58345, 62846: 58346, 62848: 58347, 62849: 58348, 62850: 58349, 62851: 58350, 62852: 58351, 62853: 58352, 62854: 58353, 62855: 58354, 62856: 58355, 62857: 58356, 62858: 58357, 62859: 58358, 62860: 58359, 62861: 58360, 62862: 58361, 62863: 58362, 62864: 58363, 62865: 58364, 62866: 58365, 62867: 58366, 62868: 58367, 62869: 58368, 62870: 58369, 62871: 58370, 62872: 58371, 62873: 58372, 62874: 58373, 62875: 58374, 62876: 58375, 62877: 58376, 62878: 58377, 62879: 58378, 62880: 58379, 62881: 58380, 62882: 58381, 62883: 58382, 62884: 58383, 62885: 58384, 62886: 58385, 62887: 58386, 62888: 58387, 62889: 58388, 62890: 58389, 62891: 58390, 62892: 58391, 62893: 58392, 62894: 58393, 62895: 58394, 62896: 58395, 62897: 58396, 62898: 58397, 62899: 58398, 62900: 58399, 62901: 58400, 62902: 58401, 62903: 58402, 62904: 58403, 62905: 58404, 62906: 58405, 62907: 58406, 62908: 58407, 62909: 58408, 62910: 58409, 62911: 58410, 62912: 58411, 62913: 58412, 62914: 58413, 62915: 58414, 62916: 58415, 62917: 58416, 62918: 58417, 62919: 58418, 62920: 58419, 62921: 58420, 62922: 58421, 62923: 58422, 62924: 58423, 62925: 58424, 62926: 58425, 62927: 58426, 62928: 58427, 62929: 58428, 62930: 58429, 62931: 58430, 62932: 58431, 62933: 58432, 62934: 58433, 62935: 58434, 62936: 58435, 62937: 58436, 62938: 58437, 62939: 58438, 62940: 58439, 62941: 58440, 62942: 58441, 62943: 58442, 62944: 58443, 62945: 58444, 62946: 58445, 62947: 58446, 62948: 58447, 62949: 58448, 62950: 58449, 62951: 58450, 62952: 58451, 62953: 58452, 62954: 58453, 62955: 58454, 62956: 58455, 62957: 58456, 62958: 58457, 62959: 58458, 62960: 58459, 62961: 58460, 62962: 58461, 62963: 58462, 62964: 58463, 62965: 58464, 62966: 58465, 62967: 58466, 62968: 58467, 62969: 58468, 62970: 58469, 62971: 58470, 62972: 58471, 63040: 58472, 63041: 58473, 63042: 58474, 63043: 58475, 63044: 58476, 63045: 58477, 63046: 58478, 63047: 58479, 63048: 58480, 63049: 58481, 63050: 58482, 63051: 58483, 63052: 58484, 63053: 58485, 63054: 58486, 63055: 58487, 63056: 58488, 63057: 58489, 63058: 58490, 63059: 58491, 63060: 58492, 63061: 58493, 63062: 58494, 63063: 58495, 63064: 58496, 63065: 58497, 63066: 58498, 63067: 58499, 63068: 58500, 63069: 58501, 63070: 58502, 63071: 58503, 63072: 58504, 63073: 58505, 63074: 58506, 63075: 58507, 63076: 58508, 63077: 58509, 63078: 58510, 63079: 58511, 63080: 58512, 63081: 58513, 63082: 58514, 63083: 58515, 63084: 58516, 63085: 58517, 63086: 58518, 63087: 58519, 63088: 58520, 63089: 58521, 63090: 58522, 63091: 58523, 63092: 58524, 63093: 58525, 63094: 58526, 63095: 58527, 63096: 58528, 63097: 58529, 63098: 58530, 63099: 58531, 63100: 58532, 63101: 58533, 63102: 58534, 63104: 58535, 63105: 58536, 63106: 58537, 63107: 58538, 63108: 58539, 63109: 58540, 63110: 58541, 63111: 58542, 63112: 58543, 63113: 58544, 63114: 58545, 63115: 58546, 63116: 58547, 63117: 58548, 63118: 58549, 63119: 58550, 63120: 58551, 63121: 58552, 63122: 58553, 63123: 58554, 63124: 58555, 63125: 58556, 63126: 58557, 63127: 58558, 63128: 58559, 63129: 58560, 63130: 58561, 63131: 58562, 63132: 58563, 63133: 58564, 63134: 58565, 63135: 58566, 63136: 58567, 63137: 58568, 63138: 58569, 63139: 58570, 63140: 58571, 63141: 58572, 63142: 58573, 63143: 58574, 63144: 58575, 63145: 58576, 63146: 58577, 63147: 58578, 63148: 58579, 63149: 58580, 63150: 58581, 63151: 58582, 63152: 58583, 63153: 58584, 63154: 58585, 63155: 58586, 63156: 58587, 63157: 58588, 63158: 58589, 63159: 58590, 63160: 58591, 63161: 58592, 63162: 58593, 63163: 58594, 63164: 58595, 63165: 58596, 63166: 58597, 63167: 58598, 63168: 58599, 63169: 58600, 63170: 58601, 63171: 58602, 63172: 58603, 63173: 58604, 63174: 58605, 63175: 58606, 63176: 58607, 63177: 58608, 63178: 58609, 63179: 58610, 63180: 58611, 63181: 58612, 63182: 58613, 63183: 58614, 63184: 58615, 63185: 58616, 63186: 58617, 63187: 58618, 63188: 58619, 63189: 58620, 63190: 58621, 63191: 58622, 63192: 58623, 63193: 58624, 63194: 58625, 63195: 58626, 63196: 58627, 63197: 58628, 63198: 58629, 63199: 58630, 63200: 58631, 63201: 58632, 63202: 58633, 63203: 58634, 63204: 58635, 63205: 58636, 63206: 58637, 63207: 58638, 63208: 58639, 63209: 58640, 63210: 58641, 63211: 58642, 63212: 58643, 63213: 58644, 63214: 58645, 63215: 58646, 63216: 58647, 63217: 58648, 63218: 58649, 63219: 58650, 63220: 58651, 63221: 58652, 63222: 58653, 63223: 58654, 63224: 58655, 63225: 58656, 63226: 58657, 63227: 58658, 63228: 58659, 63296: 58660, 63297: 58661, 63298: 58662, 63299: 58663, 63300: 58664, 63301: 58665, 63302: 58666, 63303: 58667, 63304: 58668, 63305: 58669, 63306: 58670, 63307: 58671, 63308: 58672, 63309: 58673, 63310: 58674, 63311: 58675, 63312: 58676, 63313: 58677, 63314: 58678, 63315: 58679, 63316: 58680, 63317: 58681, 63318: 58682, 63319: 58683, 63320: 58684, 63321: 58685, 63322: 58686, 63323: 58687, 63324: 58688, 63325: 58689, 63326: 58690, 63327: 58691, 63328: 58692, 63329: 58693, 63330: 58694, 63331: 58695, 63332: 58696, 63333: 58697, 63334: 58698, 63335: 58699, 63336: 58700, 63337: 58701, 63338: 58702, 63339: 58703, 63340: 58704, 63341: 58705, 63342: 58706, 63343: 58707, 63344: 58708, 63345: 58709, 63346: 58710, 63347: 58711, 63348: 58712, 63349: 58713, 63350: 58714, 63351: 58715, 63352: 58716, 63353: 58717, 63354: 58718, 63355: 58719, 63356: 58720, 63357: 58721, 63358: 58722, 63360: 58723, 63361: 58724, 63362: 58725, 63363: 58726, 63364: 58727, 63365: 58728, 63366: 58729, 63367: 58730, 63368: 58731, 63369: 58732, 63370: 58733, 63371: 58734, 63372: 58735, 63373: 58736, 63374: 58737, 63375: 58738, 63376: 58739, 63377: 58740, 63378: 58741, 63379: 58742, 63380: 58743, 63381: 58744, 63382: 58745, 63383: 58746, 63384: 58747, 63385: 58748, 63386: 58749, 63387: 58750, 63388: 58751, 63389: 58752, 63390: 58753, 63391: 58754, 63392: 58755, 63393: 58756, 63394: 58757, 63395: 58758, 63396: 58759, 63397: 58760, 63398: 58761, 63399: 58762, 63400: 58763, 63401: 58764, 63402: 58765, 63403: 58766, 63404: 58767, 63405: 58768, 63406: 58769, 63407: 58770, 63408: 58771, 63409: 58772, 63410: 58773, 63411: 58774, 63412: 58775, 63413: 58776, 63414: 58777, 63415: 58778, 63416: 58779, 63417: 58780, 63418: 58781, 63419: 58782, 63420: 58783, 63421: 58784, 63422: 58785, 63423: 58786, 63424: 58787, 63425: 58788, 63426: 58789, 63427: 58790, 63428: 58791, 63429: 58792, 63430: 58793, 63431: 58794, 63432: 58795, 63433: 58796, 63434: 58797, 63435: 58798, 63436: 58799, 63437: 58800, 63438: 58801, 63439: 58802, 63440: 58803, 63441: 58804, 63442: 58805, 63443: 58806, 63444: 58807, 63445: 58808, 63446: 58809, 63447: 58810, 63448: 58811, 63449: 58812, 63450: 58813, 63451: 58814, 63452: 58815, 63453: 58816, 63454: 58817, 63455: 58818, 63456: 58819, 63457: 58820, 63458: 58821, 63459: 58822, 63460: 58823, 63461: 58824, 63462: 58825, 63463: 58826, 63464: 58827, 63465: 58828, 63466: 58829, 63467: 58830, 63468: 58831, 63469: 58832, 63470: 58833, 63471: 58834, 63472: 58835, 63473: 58836, 63474: 58837, 63475: 58838, 63476: 58839, 63477: 58840, 63478: 58841, 63479: 58842, 63480: 58843, 63481: 58844, 63482: 58845, 63483: 58846, 63484: 58847, 63552: 58848, 63553: 58849, 63554: 58850, 63555: 58851, 63556: 58852, 63557: 58853, 63558: 58854, 63559: 58855, 63560: 58856, 63561: 58857, 63562: 58858, 63563: 58859, 63564: 58860, 63565: 58861, 63566: 58862, 63567: 58863, 63568: 58864, 63569: 58865, 63570: 58866, 63571: 58867, 63572: 58868, 63573: 58869, 63574: 58870, 63575: 58871, 63576: 58872, 63577: 58873, 63578: 58874, 63579: 58875, 63580: 58876, 63581: 58877, 63582: 58878, 63583: 58879, 63584: 58880, 63585: 58881, 63586: 58882, 63587: 58883, 63588: 58884, 63589: 58885, 63590: 58886, 63591: 58887, 63592: 58888, 63593: 58889, 63594: 58890, 63595: 58891, 63596: 58892, 63597: 58893, 63598: 58894, 63599: 58895, 63600: 58896, 63601: 58897, 63602: 58898, 63603: 58899, 63604: 58900, 63605: 58901, 63606: 58902, 63607: 58903, 63608: 58904, 63609: 58905, 63610: 58906, 63611: 58907, 63612: 58908, 63613: 58909, 63614: 58910, 63616: 58911, 63617: 58912, 63618: 58913, 63619: 58914, 63620: 58915, 63621: 58916, 63622: 58917, 63623: 58918, 63624: 58919, 63625: 58920, 63626: 58921, 63627: 58922, 63628: 58923, 63629: 58924, 63630: 58925, 63631: 58926, 63632: 58927, 63633: 58928, 63634: 58929, 63635: 58930, 63636: 58931, 63637: 58932, 63638: 58933, 63639: 58934, 63640: 58935, 63641: 58936, 63642: 58937, 63643: 58938, 63644: 58939, 63645: 58940, 63646: 58941, 63647: 58942, 63648: 58943, 63649: 58944, 63650: 58945, 63651: 58946, 63652: 58947, 63653: 58948, 63654: 58949, 63655: 58950, 63656: 58951, 63657: 58952, 63658: 58953, 63659: 58954, 63660: 58955, 63661: 58956, 63662: 58957, 63663: 58958, 63664: 58959, 63665: 58960, 63666: 58961, 63667: 58962, 63668: 58963, 63669: 58964, 63670: 58965, 63671: 58966, 63672: 58967, 63673: 58968, 63674: 58969, 63675: 58970, 63676: 58971, 63677: 58972, 63678: 58973, 63679: 58974, 63680: 58975, 63681: 58976, 63682: 58977, 63683: 58978, 63684: 58979, 63685: 58980, 63686: 58981, 63687: 58982, 63688: 58983, 63689: 58984, 63690: 58985, 63691: 58986, 63692: 58987, 63693: 58988, 63694: 58989, 63695: 58990, 63696: 58991, 63697: 58992, 63698: 58993, 63699: 58994, 63700: 58995, 63701: 58996, 63702: 58997, 63703: 58998, 63704: 58999, 63705: 59000, 63706: 59001, 63707: 59002, 63708: 59003, 63709: 59004, 63710: 59005, 63711: 59006, 63712: 59007, 63713: 59008, 63714: 59009, 63715: 59010, 63716: 59011, 63717: 59012, 63718: 59013, 63719: 59014, 63720: 59015, 63721: 59016, 63722: 59017, 63723: 59018, 63724: 59019, 63725: 59020, 63726: 59021, 63727: 59022, 63728: 59023, 63729: 59024, 63730: 59025, 63731: 59026, 63732: 59027, 63733: 59028, 63734: 59029, 63735: 59030, 63736: 59031, 63737: 59032, 63738: 59033, 63739: 59034, 63740: 59035, 64064: 8560, 64065: 8561, 64066: 8562, 64067: 8563, 64068: 8564, 64069: 8565, 64070: 8566, 64071: 8567, 64072: 8568, 64073: 8569, 64074: 8544, 64075: 8545, 64076: 8546, 64077: 8547, 64078: 8548, 64079: 8549, 64080: 8550, 64081: 8551, 64082: 8552, 64083: 8553, 64084: 65506, 64085: 65508, 64086: 65287, 64087: 65282, 64088: 12849, 64089: 8470, 64090: 8481, 64091: 8757, 64092: 32394, 64093: 35100, 64094: 37704, 64095: 37512, 64096: 34012, 64097: 20425, 64098: 28859, 64099: 26161, 64100: 26824, 64101: 37625, 64102: 26363, 64103: 24389, 64104: 20008, 64105: 20193, 64106: 20220, 64107: 20224, 64108: 20227, 64109: 20281, 64110: 20310, 64111: 20370, 64112: 20362, 64113: 20378, 64114: 20372, 64115: 20429, 64116: 20544, 64117: 20514, 64118: 20479, 64119: 20510, 64120: 20550, 64121: 20592, 64122: 20546, 64123: 20628, 64124: 20724, 64125: 20696, 64126: 20810, 64128: 20836, 64129: 20893, 64130: 20926, 64131: 20972, 64132: 21013, 64133: 21148, 64134: 21158, 64135: 21184, 64136: 21211, 64137: 21248, 64138: 21255, 64139: 21284, 64140: 21362, 64141: 21395, 64142: 21426, 64143: 21469, 64144: 64014, 64145: 21660, 64146: 21642, 64147: 21673, 64148: 21759, 64149: 21894, 64150: 22361, 64151: 22373, 64152: 22444, 64153: 22472, 64154: 22471, 64155: 64015, 64156: 64016, 64157: 22686, 64158: 22706, 64159: 22795, 64160: 22867, 64161: 22875, 64162: 22877, 64163: 22883, 64164: 22948, 64165: 22970, 64166: 23382, 64167: 23488, 64168: 29999, 64169: 23512, 64170: 23532, 64171: 23582, 64172: 23718, 64173: 23738, 64174: 23797, 64175: 23847, 64176: 23891, 64177: 64017, 64178: 23874, 64179: 23917, 64180: 23992, 64181: 23993, 64182: 24016, 64183: 24353, 64184: 24372, 64185: 24423, 64186: 24503, 64187: 24542, 64188: 24669, 64189: 24709, 64190: 24714, 64191: 24798, 64192: 24789, 64193: 24864, 64194: 24818, 64195: 24849, 64196: 24887, 64197: 24880, 64198: 24984, 64199: 25107, 64200: 25254, 64201: 25589, 64202: 25696, 64203: 25757, 64204: 25806, 64205: 25934, 64206: 26112, 64207: 26133, 64208: 26171, 64209: 26121, 64210: 26158, 64211: 26142, 64212: 26148, 64213: 26213, 64214: 26199, 64215: 26201, 64216: 64018, 64217: 26227, 64218: 26265, 64219: 26272, 64220: 26290, 64221: 26303, 64222: 26362, 64223: 26382, 64224: 63785, 64225: 26470, 64226: 26555, 64227: 26706, 64228: 26560, 64229: 26625, 64230: 26692, 64231: 26831, 64232: 64019, 64233: 26984, 64234: 64020, 64235: 27032, 64236: 27106, 64237: 27184, 64238: 27243, 64239: 27206, 64240: 27251, 64241: 27262, 64242: 27362, 64243: 27364, 64244: 27606, 64245: 27711, 64246: 27740, 64247: 27782, 64248: 27759, 64249: 27866, 64250: 27908, 64251: 28039, 64252: 28015, 64320: 28054, 64321: 28076, 64322: 28111, 64323: 28152, 64324: 28146, 64325: 28156, 64326: 28217, 64327: 28252, 64328: 28199, 64329: 28220, 64330: 28351, 64331: 28552, 64332: 28597, 64333: 28661, 64334: 28677, 64335: 28679, 64336: 28712, 64337: 28805, 64338: 28843, 64339: 28943, 64340: 28932, 64341: 29020, 64342: 28998, 64343: 28999, 64344: 64021, 64345: 29121, 64346: 29182, 64347: 29361, 64348: 29374, 64349: 29476, 64350: 64022, 64351: 29559, 64352: 29629, 64353: 29641, 64354: 29654, 64355: 29667, 64356: 29650, 64357: 29703, 64358: 29685, 64359: 29734, 64360: 29738, 64361: 29737, 64362: 29742, 64363: 29794, 64364: 29833, 64365: 29855, 64366: 29953, 64367: 30063, 64368: 30338, 64369: 30364, 64370: 30366, 64371: 30363, 64372: 30374, 64373: 64023, 64374: 30534, 64375: 21167, 64376: 30753, 64377: 30798, 64378: 30820, 64379: 30842, 64380: 31024, 64381: 64024, 64382: 64025, 64384: 64026, 64385: 31124, 64386: 64027, 64387: 31131, 64388: 31441, 64389: 31463, 64390: 64028, 64391: 31467, 64392: 31646, 64393: 64029, 64394: 32072, 64395: 32092, 64396: 32183, 64397: 32160, 64398: 32214, 64399: 32338, 64400: 32583, 64401: 32673, 64402: 64030, 64403: 33537, 64404: 33634, 64405: 33663, 64406: 33735, 64407: 33782, 64408: 33864, 64409: 33972, 64410: 34131, 64411: 34137, 64412: 34155, 64413: 64031, 64414: 34224, 64415: 64032, 64416: 64033, 64417: 34823, 64418: 35061, 64419: 35346, 64420: 35383, 64421: 35449, 64422: 35495, 64423: 35518, 64424: 35551, 64425: 64034, 64426: 35574, 64427: 35667, 64428: 35711, 64429: 36080, 64430: 36084, 64431: 36114, 64432: 36214, 64433: 64035, 64434: 36559, 64435: 64036, 64436: 64037, 64437: 36967, 64438: 37086, 64439: 64038, 64440: 37141, 64441: 37159, 64442: 37338, 64443: 37335, 64444: 37342, 64445: 37357, 64446: 37358, 64447: 37348, 64448: 37349, 64449: 37382, 64450: 37392, 64451: 37386, 64452: 37434, 64453: 37440, 64454: 37436, 64455: 37454, 64456: 37465, 64457: 37457, 64458: 37433, 64459: 37479, 64460: 37543, 64461: 37495, 64462: 37496, 64463: 37607, 64464: 37591, 64465: 37593, 64466: 37584, 64467: 64039, 64468: 37589, 64469: 37600, 64470: 37587, 64471: 37669, 64472: 37665, 64473: 37627, 64474: 64040, 64475: 37662, 64476: 37631, 64477: 37661, 64478: 37634, 64479: 37744, 64480: 37719, 64481: 37796, 64482: 37830, 64483: 37854, 64484: 37880, 64485: 37937, 64486: 37957, 64487: 37960, 64488: 38290, 64489: 63964, 64490: 64041, 64491: 38557, 64492: 38575, 64493: 38707, 64494: 38715, 64495: 38723, 64496: 38733, 64497: 38735, 64498: 38737, 64499: 38741, 64500: 38999, 64501: 39013, 64502: 64042, 64503: 64043, 64504: 39207, 64505: 64044, 64506: 39326, 64507: 39502, 64508: 39641, 64576: 39644, 64577: 39797, 64578: 39794, 64579: 39823, 64580: 39857, 64581: 39867, 64582: 39936, 64583: 40304, 64584: 40299, 64585: 64045, 64586: 40473, 64587: 40657 }; /** * @author takahiro / https://github.com/takahirox */ function DataViewEx( buffer, littleEndian ) { this.dv = new DataView( buffer ); this.offset = 0; this.littleEndian = ( littleEndian !== undefined ) ? littleEndian : true; this.encoder = new CharsetEncoder(); } DataViewEx.prototype = { constructor: DataViewEx, getInt8: function () { var value = this.dv.getInt8( this.offset ); this.offset += 1; return value; }, getInt8Array: function ( size ) { var a = []; for ( var i = 0; i < size; i ++ ) { a.push( this.getInt8() ); } return a; }, getUint8: function () { var value = this.dv.getUint8( this.offset ); this.offset += 1; return value; }, getUint8Array: function ( size ) { var a = []; for ( var i = 0; i < size; i ++ ) { a.push( this.getUint8() ); } return a; }, getInt16: function () { var value = this.dv.getInt16( this.offset, this.littleEndian ); this.offset += 2; return value; }, getInt16Array: function ( size ) { var a = []; for ( var i = 0; i < size; i ++ ) { a.push( this.getInt16() ); } return a; }, getUint16: function () { var value = this.dv.getUint16( this.offset, this.littleEndian ); this.offset += 2; return value; }, getUint16Array: function ( size ) { var a = []; for ( var i = 0; i < size; i ++ ) { a.push( this.getUint16() ); } return a; }, getInt32: function () { var value = this.dv.getInt32( this.offset, this.littleEndian ); this.offset += 4; return value; }, getInt32Array: function ( size ) { var a = []; for ( var i = 0; i < size; i ++ ) { a.push( this.getInt32() ); } return a; }, getUint32: function () { var value = this.dv.getUint32( this.offset, this.littleEndian ); this.offset += 4; return value; }, getUint32Array: function ( size ) { var a = []; for ( var i = 0; i < size; i ++ ) { a.push( this.getUint32() ); } return a; }, getFloat32: function () { var value = this.dv.getFloat32( this.offset, this.littleEndian ); this.offset += 4; return value; }, getFloat32Array: function ( size ) { var a = []; for ( var i = 0; i < size; i ++ ) { a.push( this.getFloat32() ); } return a; }, getFloat64: function () { var value = this.dv.getFloat64( this.offset, this.littleEndian ); this.offset += 8; return value; }, getFloat64Array: function ( size ) { var a = []; for ( var i = 0; i < size; i ++ ) { a.push( this.getFloat64() ); } return a; }, getIndex: function ( type, isUnsigned ) { switch ( type ) { case 1: return ( isUnsigned === true ) ? this.getUint8() : this.getInt8(); case 2: return ( isUnsigned === true ) ? this.getUint16() : this.getInt16(); case 4: return this.getInt32(); // No Uint32 default: throw 'unknown number type ' + type + ' exception.'; } }, getIndexArray: function ( type, size, isUnsigned ) { var a = []; for ( var i = 0; i < size; i ++ ) { a.push( this.getIndex( type, isUnsigned ) ); } return a; }, getChars: function ( size ) { var str = ''; while ( size > 0 ) { var value = this.getUint8(); size --; if ( value === 0 ) { break; } str += String.fromCharCode( value ); } while ( size > 0 ) { this.getUint8(); size --; } return str; }, getSjisStringsAsUnicode: function ( size ) { var a = []; while ( size > 0 ) { var value = this.getUint8(); size --; if ( value === 0 ) { break; } a.push( value ); } while ( size > 0 ) { this.getUint8(); size --; } return this.encoder.s2u( new Uint8Array( a ) ); }, getUnicodeStrings: function ( size ) { var str = ''; while ( size > 0 ) { var value = this.getUint16(); size -= 2; if ( value === 0 ) { break; } str += String.fromCharCode( value ); } while ( size > 0 ) { this.getUint8(); size --; } return str; }, getTextBuffer: function () { var size = this.getUint32(); return this.getUnicodeStrings( size ); } }; /** * @author takahiro / https://github.com/takahirox */ function DataCreationHelper() { } DataCreationHelper.prototype = { constructor: DataCreationHelper, leftToRightVector3: function ( v ) { v[ 2 ] = - v[ 2 ]; }, leftToRightQuaternion: function ( q ) { q[ 0 ] = - q[ 0 ]; q[ 1 ] = - q[ 1 ]; }, leftToRightEuler: function ( r ) { r[ 0 ] = - r[ 0 ]; r[ 1 ] = - r[ 1 ]; }, leftToRightIndexOrder: function ( p ) { var tmp = p[ 2 ]; p[ 2 ] = p[ 0 ]; p[ 0 ] = tmp; }, leftToRightVector3Range: function ( v1, v2 ) { var tmp = - v2[ 2 ]; v2[ 2 ] = - v1[ 2 ]; v1[ 2 ] = tmp; }, leftToRightEulerRange: function ( r1, r2 ) { var tmp1 = - r2[ 0 ]; var tmp2 = - r2[ 1 ]; r2[ 0 ] = - r1[ 0 ]; r2[ 1 ] = - r1[ 1 ]; r1[ 0 ] = tmp1; r1[ 1 ] = tmp2; } }; /** * @author takahiro / https://github.com/takahirox */ function Parser() { } Parser.prototype.parsePmd = function ( buffer, leftToRight ) { var pmd = {}; var dv = new DataViewEx( buffer ); pmd.metadata = {}; pmd.metadata.format = 'pmd'; pmd.metadata.coordinateSystem = 'left'; var parseHeader = function () { var metadata = pmd.metadata; metadata.magic = dv.getChars( 3 ); if ( metadata.magic !== 'Pmd' ) { throw 'PMD file magic is not Pmd, but ' + metadata.magic; } metadata.version = dv.getFloat32(); metadata.modelName = dv.getSjisStringsAsUnicode( 20 ); metadata.comment = dv.getSjisStringsAsUnicode( 256 ); }; var parseVertices = function () { var parseVertex = function () { var p = {}; p.position = dv.getFloat32Array( 3 ); p.normal = dv.getFloat32Array( 3 ); p.uv = dv.getFloat32Array( 2 ); p.skinIndices = dv.getUint16Array( 2 ); p.skinWeights = [ dv.getUint8() / 100 ]; p.skinWeights.push( 1.0 - p.skinWeights[ 0 ] ); p.edgeFlag = dv.getUint8(); return p; }; var metadata = pmd.metadata; metadata.vertexCount = dv.getUint32(); pmd.vertices = []; for ( var i = 0; i < metadata.vertexCount; i ++ ) { pmd.vertices.push( parseVertex() ); } }; var parseFaces = function () { var parseFace = function () { var p = {}; p.indices = dv.getUint16Array( 3 ); return p; }; var metadata = pmd.metadata; metadata.faceCount = dv.getUint32() / 3; pmd.faces = []; for ( var i = 0; i < metadata.faceCount; i ++ ) { pmd.faces.push( parseFace() ); } }; var parseMaterials = function () { var parseMaterial = function () { var p = {}; p.diffuse = dv.getFloat32Array( 4 ); p.shininess = dv.getFloat32(); p.specular = dv.getFloat32Array( 3 ); p.ambient = dv.getFloat32Array( 3 ); p.toonIndex = dv.getInt8(); p.edgeFlag = dv.getUint8(); p.faceCount = dv.getUint32() / 3; p.fileName = dv.getSjisStringsAsUnicode( 20 ); return p; }; var metadata = pmd.metadata; metadata.materialCount = dv.getUint32(); pmd.materials = []; for ( var i = 0; i < metadata.materialCount; i ++ ) { pmd.materials.push( parseMaterial() ); } }; var parseBones = function () { var parseBone = function () { var p = {}; p.name = dv.getSjisStringsAsUnicode( 20 ); p.parentIndex = dv.getInt16(); p.tailIndex = dv.getInt16(); p.type = dv.getUint8(); p.ikIndex = dv.getInt16(); p.position = dv.getFloat32Array( 3 ); return p; }; var metadata = pmd.metadata; metadata.boneCount = dv.getUint16(); pmd.bones = []; for ( var i = 0; i < metadata.boneCount; i ++ ) { pmd.bones.push( parseBone() ); } }; var parseIks = function () { var parseIk = function () { var p = {}; p.target = dv.getUint16(); p.effector = dv.getUint16(); p.linkCount = dv.getUint8(); p.iteration = dv.getUint16(); p.maxAngle = dv.getFloat32(); p.links = []; for ( var i = 0; i < p.linkCount; i ++ ) { var link = {}; link.index = dv.getUint16(); p.links.push( link ); } return p; }; var metadata = pmd.metadata; metadata.ikCount = dv.getUint16(); pmd.iks = []; for ( var i = 0; i < metadata.ikCount; i ++ ) { pmd.iks.push( parseIk() ); } }; var parseMorphs = function () { var parseMorph = function () { var p = {}; p.name = dv.getSjisStringsAsUnicode( 20 ); p.elementCount = dv.getUint32(); p.type = dv.getUint8(); p.elements = []; for ( var i = 0; i < p.elementCount; i ++ ) { p.elements.push( { index: dv.getUint32(), position: dv.getFloat32Array( 3 ) } ); } return p; }; var metadata = pmd.metadata; metadata.morphCount = dv.getUint16(); pmd.morphs = []; for ( var i = 0; i < metadata.morphCount; i ++ ) { pmd.morphs.push( parseMorph() ); } }; var parseMorphFrames = function () { var parseMorphFrame = function () { var p = {}; p.index = dv.getUint16(); return p; }; var metadata = pmd.metadata; metadata.morphFrameCount = dv.getUint8(); pmd.morphFrames = []; for ( var i = 0; i < metadata.morphFrameCount; i ++ ) { pmd.morphFrames.push( parseMorphFrame() ); } }; var parseBoneFrameNames = function () { var parseBoneFrameName = function () { var p = {}; p.name = dv.getSjisStringsAsUnicode( 50 ); return p; }; var metadata = pmd.metadata; metadata.boneFrameNameCount = dv.getUint8(); pmd.boneFrameNames = []; for ( var i = 0; i < metadata.boneFrameNameCount; i ++ ) { pmd.boneFrameNames.push( parseBoneFrameName() ); } }; var parseBoneFrames = function () { var parseBoneFrame = function () { var p = {}; p.boneIndex = dv.getInt16(); p.frameIndex = dv.getUint8(); return p; }; var metadata = pmd.metadata; metadata.boneFrameCount = dv.getUint32(); pmd.boneFrames = []; for ( var i = 0; i < metadata.boneFrameCount; i ++ ) { pmd.boneFrames.push( parseBoneFrame() ); } }; var parseEnglishHeader = function () { var metadata = pmd.metadata; metadata.englishCompatibility = dv.getUint8(); if ( metadata.englishCompatibility > 0 ) { metadata.englishModelName = dv.getSjisStringsAsUnicode( 20 ); metadata.englishComment = dv.getSjisStringsAsUnicode( 256 ); } }; var parseEnglishBoneNames = function () { var parseEnglishBoneName = function () { var p = {}; p.name = dv.getSjisStringsAsUnicode( 20 ); return p; }; var metadata = pmd.metadata; if ( metadata.englishCompatibility === 0 ) { return; } pmd.englishBoneNames = []; for ( var i = 0; i < metadata.boneCount; i ++ ) { pmd.englishBoneNames.push( parseEnglishBoneName() ); } }; var parseEnglishMorphNames = function () { var parseEnglishMorphName = function () { var p = {}; p.name = dv.getSjisStringsAsUnicode( 20 ); return p; }; var metadata = pmd.metadata; if ( metadata.englishCompatibility === 0 ) { return; } pmd.englishMorphNames = []; for ( var i = 0; i < metadata.morphCount - 1; i ++ ) { pmd.englishMorphNames.push( parseEnglishMorphName() ); } }; var parseEnglishBoneFrameNames = function () { var parseEnglishBoneFrameName = function () { var p = {}; p.name = dv.getSjisStringsAsUnicode( 50 ); return p; }; var metadata = pmd.metadata; if ( metadata.englishCompatibility === 0 ) { return; } pmd.englishBoneFrameNames = []; for ( var i = 0; i < metadata.boneFrameNameCount; i ++ ) { pmd.englishBoneFrameNames.push( parseEnglishBoneFrameName() ); } }; var parseToonTextures = function () { var parseToonTexture = function () { var p = {}; p.fileName = dv.getSjisStringsAsUnicode( 100 ); return p; }; pmd.toonTextures = []; for ( var i = 0; i < 10; i ++ ) { pmd.toonTextures.push( parseToonTexture() ); } }; var parseRigidBodies = function () { var parseRigidBody = function () { var p = {}; p.name = dv.getSjisStringsAsUnicode( 20 ); p.boneIndex = dv.getInt16(); p.groupIndex = dv.getUint8(); p.groupTarget = dv.getUint16(); p.shapeType = dv.getUint8(); p.width = dv.getFloat32(); p.height = dv.getFloat32(); p.depth = dv.getFloat32(); p.position = dv.getFloat32Array( 3 ); p.rotation = dv.getFloat32Array( 3 ); p.weight = dv.getFloat32(); p.positionDamping = dv.getFloat32(); p.rotationDamping = dv.getFloat32(); p.restitution = dv.getFloat32(); p.friction = dv.getFloat32(); p.type = dv.getUint8(); return p; }; var metadata = pmd.metadata; metadata.rigidBodyCount = dv.getUint32(); pmd.rigidBodies = []; for ( var i = 0; i < metadata.rigidBodyCount; i ++ ) { pmd.rigidBodies.push( parseRigidBody() ); } }; var parseConstraints = function () { var parseConstraint = function () { var p = {}; p.name = dv.getSjisStringsAsUnicode( 20 ); p.rigidBodyIndex1 = dv.getUint32(); p.rigidBodyIndex2 = dv.getUint32(); p.position = dv.getFloat32Array( 3 ); p.rotation = dv.getFloat32Array( 3 ); p.translationLimitation1 = dv.getFloat32Array( 3 ); p.translationLimitation2 = dv.getFloat32Array( 3 ); p.rotationLimitation1 = dv.getFloat32Array( 3 ); p.rotationLimitation2 = dv.getFloat32Array( 3 ); p.springPosition = dv.getFloat32Array( 3 ); p.springRotation = dv.getFloat32Array( 3 ); return p; }; var metadata = pmd.metadata; metadata.constraintCount = dv.getUint32(); pmd.constraints = []; for ( var i = 0; i < metadata.constraintCount; i ++ ) { pmd.constraints.push( parseConstraint() ); } }; parseHeader(); parseVertices(); parseFaces(); parseMaterials(); parseBones(); parseIks(); parseMorphs(); parseMorphFrames(); parseBoneFrameNames(); parseBoneFrames(); parseEnglishHeader(); parseEnglishBoneNames(); parseEnglishMorphNames(); parseEnglishBoneFrameNames(); parseToonTextures(); parseRigidBodies(); parseConstraints(); if ( leftToRight === true ) this.leftToRightModel( pmd ); // console.log( pmd ); // for console debug return pmd; }; Parser.prototype.parsePmx = function ( buffer, leftToRight ) { var pmx = {}; var dv = new DataViewEx( buffer ); pmx.metadata = {}; pmx.metadata.format = 'pmx'; pmx.metadata.coordinateSystem = 'left'; var parseHeader = function () { var metadata = pmx.metadata; metadata.magic = dv.getChars( 4 ); // Note: don't remove the last blank space. if ( metadata.magic !== 'PMX ' ) { throw 'PMX file magic is not PMX , but ' + metadata.magic; } metadata.version = dv.getFloat32(); if ( metadata.version !== 2.0 && metadata.version !== 2.1 ) { throw 'PMX version ' + metadata.version + ' is not supported.'; } metadata.headerSize = dv.getUint8(); metadata.encoding = dv.getUint8(); metadata.additionalUvNum = dv.getUint8(); metadata.vertexIndexSize = dv.getUint8(); metadata.textureIndexSize = dv.getUint8(); metadata.materialIndexSize = dv.getUint8(); metadata.boneIndexSize = dv.getUint8(); metadata.morphIndexSize = dv.getUint8(); metadata.rigidBodyIndexSize = dv.getUint8(); metadata.modelName = dv.getTextBuffer(); metadata.englishModelName = dv.getTextBuffer(); metadata.comment = dv.getTextBuffer(); metadata.englishComment = dv.getTextBuffer(); }; var parseVertices = function () { var parseVertex = function () { var p = {}; p.position = dv.getFloat32Array( 3 ); p.normal = dv.getFloat32Array( 3 ); p.uv = dv.getFloat32Array( 2 ); p.auvs = []; for ( var i = 0; i < pmx.metadata.additionalUvNum; i ++ ) { p.auvs.push( dv.getFloat32Array( 4 ) ); } p.type = dv.getUint8(); var indexSize = metadata.boneIndexSize; if ( p.type === 0 ) { // BDEF1 p.skinIndices = dv.getIndexArray( indexSize, 1 ); p.skinWeights = [ 1.0 ]; } else if ( p.type === 1 ) { // BDEF2 p.skinIndices = dv.getIndexArray( indexSize, 2 ); p.skinWeights = dv.getFloat32Array( 1 ); p.skinWeights.push( 1.0 - p.skinWeights[ 0 ] ); } else if ( p.type === 2 ) { // BDEF4 p.skinIndices = dv.getIndexArray( indexSize, 4 ); p.skinWeights = dv.getFloat32Array( 4 ); } else if ( p.type === 3 ) { // SDEF p.skinIndices = dv.getIndexArray( indexSize, 2 ); p.skinWeights = dv.getFloat32Array( 1 ); p.skinWeights.push( 1.0 - p.skinWeights[ 0 ] ); p.skinC = dv.getFloat32Array( 3 ); p.skinR0 = dv.getFloat32Array( 3 ); p.skinR1 = dv.getFloat32Array( 3 ); // SDEF is not supported yet and is handled as BDEF2 so far. // TODO: SDEF support p.type = 1; } else { throw 'unsupport bone type ' + p.type + ' exception.'; } p.edgeRatio = dv.getFloat32(); return p; }; var metadata = pmx.metadata; metadata.vertexCount = dv.getUint32(); pmx.vertices = []; for ( var i = 0; i < metadata.vertexCount; i ++ ) { pmx.vertices.push( parseVertex() ); } }; var parseFaces = function () { var parseFace = function () { var p = {}; p.indices = dv.getIndexArray( metadata.vertexIndexSize, 3, true ); return p; }; var metadata = pmx.metadata; metadata.faceCount = dv.getUint32() / 3; pmx.faces = []; for ( var i = 0; i < metadata.faceCount; i ++ ) { pmx.faces.push( parseFace() ); } }; var parseTextures = function () { var parseTexture = function () { return dv.getTextBuffer(); }; var metadata = pmx.metadata; metadata.textureCount = dv.getUint32(); pmx.textures = []; for ( var i = 0; i < metadata.textureCount; i ++ ) { pmx.textures.push( parseTexture() ); } }; var parseMaterials = function () { var parseMaterial = function () { var p = {}; p.name = dv.getTextBuffer(); p.englishName = dv.getTextBuffer(); p.diffuse = dv.getFloat32Array( 4 ); p.specular = dv.getFloat32Array( 3 ); p.shininess = dv.getFloat32(); p.ambient = dv.getFloat32Array( 3 ); p.flag = dv.getUint8(); p.edgeColor = dv.getFloat32Array( 4 ); p.edgeSize = dv.getFloat32(); p.textureIndex = dv.getIndex( pmx.metadata.textureIndexSize ); p.envTextureIndex = dv.getIndex( pmx.metadata.textureIndexSize ); p.envFlag = dv.getUint8(); p.toonFlag = dv.getUint8(); if ( p.toonFlag === 0 ) { p.toonIndex = dv.getIndex( pmx.metadata.textureIndexSize ); } else if ( p.toonFlag === 1 ) { p.toonIndex = dv.getInt8(); } else { throw 'unknown toon flag ' + p.toonFlag + ' exception.'; } p.comment = dv.getTextBuffer(); p.faceCount = dv.getUint32() / 3; return p; }; var metadata = pmx.metadata; metadata.materialCount = dv.getUint32(); pmx.materials = []; for ( var i = 0; i < metadata.materialCount; i ++ ) { pmx.materials.push( parseMaterial() ); } }; var parseBones = function () { var parseBone = function () { var p = {}; p.name = dv.getTextBuffer(); p.englishName = dv.getTextBuffer(); p.position = dv.getFloat32Array( 3 ); p.parentIndex = dv.getIndex( pmx.metadata.boneIndexSize ); p.transformationClass = dv.getUint32(); p.flag = dv.getUint16(); if ( p.flag & 0x1 ) { p.connectIndex = dv.getIndex( pmx.metadata.boneIndexSize ); } else { p.offsetPosition = dv.getFloat32Array( 3 ); } if ( p.flag & 0x100 || p.flag & 0x200 ) { // Note: I don't think Grant is an appropriate name // but I found that some English translated MMD tools use this term // so I've named it Grant so far. // I'd rename to more appropriate name from Grant later. var grant = {}; grant.isLocal = ( p.flag & 0x80 ) !== 0 ? true : false; grant.affectRotation = ( p.flag & 0x100 ) !== 0 ? true : false; grant.affectPosition = ( p.flag & 0x200 ) !== 0 ? true : false; grant.parentIndex = dv.getIndex( pmx.metadata.boneIndexSize ); grant.ratio = dv.getFloat32(); p.grant = grant; } if ( p.flag & 0x400 ) { p.fixAxis = dv.getFloat32Array( 3 ); } if ( p.flag & 0x800 ) { p.localXVector = dv.getFloat32Array( 3 ); p.localZVector = dv.getFloat32Array( 3 ); } if ( p.flag & 0x2000 ) { p.key = dv.getUint32(); } if ( p.flag & 0x20 ) { var ik = {}; ik.effector = dv.getIndex( pmx.metadata.boneIndexSize ); ik.target = null; ik.iteration = dv.getUint32(); ik.maxAngle = dv.getFloat32(); ik.linkCount = dv.getUint32(); ik.links = []; for ( var i = 0; i < ik.linkCount; i ++ ) { var link = {}; link.index = dv.getIndex( pmx.metadata.boneIndexSize ); link.angleLimitation = dv.getUint8(); if ( link.angleLimitation === 1 ) { link.lowerLimitationAngle = dv.getFloat32Array( 3 ); link.upperLimitationAngle = dv.getFloat32Array( 3 ); } ik.links.push( link ); } p.ik = ik; } return p; }; var metadata = pmx.metadata; metadata.boneCount = dv.getUint32(); pmx.bones = []; for ( var i = 0; i < metadata.boneCount; i ++ ) { pmx.bones.push( parseBone() ); } }; var parseMorphs = function () { var parseMorph = function () { var p = {}; p.name = dv.getTextBuffer(); p.englishName = dv.getTextBuffer(); p.panel = dv.getUint8(); p.type = dv.getUint8(); p.elementCount = dv.getUint32(); p.elements = []; for ( var i = 0; i < p.elementCount; i ++ ) { if ( p.type === 0 ) { // group morph var m = {}; m.index = dv.getIndex( pmx.metadata.morphIndexSize ); m.ratio = dv.getFloat32(); p.elements.push( m ); } else if ( p.type === 1 ) { // vertex morph var m = {}; m.index = dv.getIndex( pmx.metadata.vertexIndexSize, true ); m.position = dv.getFloat32Array( 3 ); p.elements.push( m ); } else if ( p.type === 2 ) { // bone morph var m = {}; m.index = dv.getIndex( pmx.metadata.boneIndexSize ); m.position = dv.getFloat32Array( 3 ); m.rotation = dv.getFloat32Array( 4 ); p.elements.push( m ); } else if ( p.type === 3 ) { // uv morph var m = {}; m.index = dv.getIndex( pmx.metadata.vertexIndexSize, true ); m.uv = dv.getFloat32Array( 4 ); p.elements.push( m ); } else if ( p.type === 4 ) { // additional uv1 // TODO: implement } else if ( p.type === 5 ) { // additional uv2 // TODO: implement } else if ( p.type === 6 ) { // additional uv3 // TODO: implement } else if ( p.type === 7 ) { // additional uv4 // TODO: implement } else if ( p.type === 8 ) { // material morph var m = {}; m.index = dv.getIndex( pmx.metadata.materialIndexSize ); m.type = dv.getUint8(); m.diffuse = dv.getFloat32Array( 4 ); m.specular = dv.getFloat32Array( 3 ); m.shininess = dv.getFloat32(); m.ambient = dv.getFloat32Array( 3 ); m.edgeColor = dv.getFloat32Array( 4 ); m.edgeSize = dv.getFloat32(); m.textureColor = dv.getFloat32Array( 4 ); m.sphereTextureColor = dv.getFloat32Array( 4 ); m.toonColor = dv.getFloat32Array( 4 ); p.elements.push( m ); } } return p; }; var metadata = pmx.metadata; metadata.morphCount = dv.getUint32(); pmx.morphs = []; for ( var i = 0; i < metadata.morphCount; i ++ ) { pmx.morphs.push( parseMorph() ); } }; var parseFrames = function () { var parseFrame = function () { var p = {}; p.name = dv.getTextBuffer(); p.englishName = dv.getTextBuffer(); p.type = dv.getUint8(); p.elementCount = dv.getUint32(); p.elements = []; for ( var i = 0; i < p.elementCount; i ++ ) { var e = {}; e.target = dv.getUint8(); e.index = ( e.target === 0 ) ? dv.getIndex( pmx.metadata.boneIndexSize ) : dv.getIndex( pmx.metadata.morphIndexSize ); p.elements.push( e ); } return p; }; var metadata = pmx.metadata; metadata.frameCount = dv.getUint32(); pmx.frames = []; for ( var i = 0; i < metadata.frameCount; i ++ ) { pmx.frames.push( parseFrame() ); } }; var parseRigidBodies = function () { var parseRigidBody = function () { var p = {}; p.name = dv.getTextBuffer(); p.englishName = dv.getTextBuffer(); p.boneIndex = dv.getIndex( pmx.metadata.boneIndexSize ); p.groupIndex = dv.getUint8(); p.groupTarget = dv.getUint16(); p.shapeType = dv.getUint8(); p.width = dv.getFloat32(); p.height = dv.getFloat32(); p.depth = dv.getFloat32(); p.position = dv.getFloat32Array( 3 ); p.rotation = dv.getFloat32Array( 3 ); p.weight = dv.getFloat32(); p.positionDamping = dv.getFloat32(); p.rotationDamping = dv.getFloat32(); p.restitution = dv.getFloat32(); p.friction = dv.getFloat32(); p.type = dv.getUint8(); return p; }; var metadata = pmx.metadata; metadata.rigidBodyCount = dv.getUint32(); pmx.rigidBodies = []; for ( var i = 0; i < metadata.rigidBodyCount; i ++ ) { pmx.rigidBodies.push( parseRigidBody() ); } }; var parseConstraints = function () { var parseConstraint = function () { var p = {}; p.name = dv.getTextBuffer(); p.englishName = dv.getTextBuffer(); p.type = dv.getUint8(); p.rigidBodyIndex1 = dv.getIndex( pmx.metadata.rigidBodyIndexSize ); p.rigidBodyIndex2 = dv.getIndex( pmx.metadata.rigidBodyIndexSize ); p.position = dv.getFloat32Array( 3 ); p.rotation = dv.getFloat32Array( 3 ); p.translationLimitation1 = dv.getFloat32Array( 3 ); p.translationLimitation2 = dv.getFloat32Array( 3 ); p.rotationLimitation1 = dv.getFloat32Array( 3 ); p.rotationLimitation2 = dv.getFloat32Array( 3 ); p.springPosition = dv.getFloat32Array( 3 ); p.springRotation = dv.getFloat32Array( 3 ); return p; }; var metadata = pmx.metadata; metadata.constraintCount = dv.getUint32(); pmx.constraints = []; for ( var i = 0; i < metadata.constraintCount; i ++ ) { pmx.constraints.push( parseConstraint() ); } }; parseHeader(); parseVertices(); parseFaces(); parseTextures(); parseMaterials(); parseBones(); parseMorphs(); parseFrames(); parseRigidBodies(); parseConstraints(); if ( leftToRight === true ) this.leftToRightModel( pmx ); // console.log( pmx ); // for console debug return pmx; }; Parser.prototype.parseVmd = function ( buffer, leftToRight ) { var vmd = {}; var dv = new DataViewEx( buffer ); vmd.metadata = {}; vmd.metadata.coordinateSystem = 'left'; var parseHeader = function () { var metadata = vmd.metadata; metadata.magic = dv.getChars( 30 ); if ( metadata.magic !== 'Vocaloid Motion Data 0002' ) { throw 'VMD file magic is not Vocaloid Motion Data 0002, but ' + metadata.magic; } metadata.name = dv.getSjisStringsAsUnicode( 20 ); }; var parseMotions = function () { var parseMotion = function () { var p = {}; p.boneName = dv.getSjisStringsAsUnicode( 15 ); p.frameNum = dv.getUint32(); p.position = dv.getFloat32Array( 3 ); p.rotation = dv.getFloat32Array( 4 ); p.interpolation = dv.getUint8Array( 64 ); return p; }; var metadata = vmd.metadata; metadata.motionCount = dv.getUint32(); vmd.motions = []; for ( var i = 0; i < metadata.motionCount; i ++ ) { vmd.motions.push( parseMotion() ); } }; var parseMorphs = function () { var parseMorph = function () { var p = {}; p.morphName = dv.getSjisStringsAsUnicode( 15 ); p.frameNum = dv.getUint32(); p.weight = dv.getFloat32(); return p; }; var metadata = vmd.metadata; metadata.morphCount = dv.getUint32(); vmd.morphs = []; for ( var i = 0; i < metadata.morphCount; i ++ ) { vmd.morphs.push( parseMorph() ); } }; var parseCameras = function () { var parseCamera = function () { var p = {}; p.frameNum = dv.getUint32(); p.distance = dv.getFloat32(); p.position = dv.getFloat32Array( 3 ); p.rotation = dv.getFloat32Array( 3 ); p.interpolation = dv.getUint8Array( 24 ); p.fov = dv.getUint32(); p.perspective = dv.getUint8(); return p; }; var metadata = vmd.metadata; metadata.cameraCount = dv.getUint32(); vmd.cameras = []; for ( var i = 0; i < metadata.cameraCount; i ++ ) { vmd.cameras.push( parseCamera() ); } }; parseHeader(); parseMotions(); parseMorphs(); parseCameras(); if ( leftToRight === true ) this.leftToRightVmd( vmd ); // console.log( vmd ); // for console debug return vmd; }; Parser.prototype.parseVpd = function ( text, leftToRight ) { var vpd = {}; vpd.metadata = {}; vpd.metadata.coordinateSystem = 'left'; vpd.bones = []; var commentPatternG = /\/\/\w*(\r|\n|\r\n)/g; var newlinePattern = /\r|\n|\r\n/; var lines = text.replace( commentPatternG, '' ).split( newlinePattern ); function throwError() { throw 'the file seems not vpd file.'; } function checkMagic() { if ( lines[ 0 ] !== 'Vocaloid Pose Data file' ) { throwError(); } } function parseHeader() { if ( lines.length < 4 ) { throwError(); } vpd.metadata.parentFile = lines[ 2 ]; vpd.metadata.boneCount = parseInt( lines[ 3 ] ); } function parseBones() { var boneHeaderPattern = /^\s*(Bone[0-9]+)\s*\{\s*(.*)$/; var boneVectorPattern = /^\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*;/; var boneQuaternionPattern = /^\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*;/; var boneFooterPattern = /^\s*}/; var bones = vpd.bones; var n = null; var v = null; var q = null; for ( var i = 4; i < lines.length; i ++ ) { var line = lines[ i ]; var result; result = line.match( boneHeaderPattern ); if ( result !== null ) { if ( n !== null ) { throwError(); } n = result[ 2 ]; } result = line.match( boneVectorPattern ); if ( result !== null ) { if ( v !== null ) { throwError(); } v = [ parseFloat( result[ 1 ] ), parseFloat( result[ 2 ] ), parseFloat( result[ 3 ] ) ]; } result = line.match( boneQuaternionPattern ); if ( result !== null ) { if ( q !== null ) { throwError(); } q = [ parseFloat( result[ 1 ] ), parseFloat( result[ 2 ] ), parseFloat( result[ 3 ] ), parseFloat( result[ 4 ] ) ]; } result = line.match( boneFooterPattern ); if ( result !== null ) { if ( n === null || v === null || q === null ) { throwError(); } bones.push( { name: n, translation: v, quaternion: q } ); n = null; v = null; q = null; } } if ( n !== null || v !== null || q !== null ) { throwError(); } } checkMagic(); parseHeader(); parseBones(); if ( leftToRight === true ) this.leftToRightVpd( vpd ); // console.log( vpd ); // for console debug return vpd; }; Parser.prototype.mergeVmds = function ( vmds ) { var v = {}; v.metadata = {}; v.metadata.name = vmds[ 0 ].metadata.name; v.metadata.coordinateSystem = vmds[ 0 ].metadata.coordinateSystem; v.metadata.motionCount = 0; v.metadata.morphCount = 0; v.metadata.cameraCount = 0; v.motions = []; v.morphs = []; v.cameras = []; for ( var i = 0; i < vmds.length; i ++ ) { var v2 = vmds[ i ]; v.metadata.motionCount += v2.metadata.motionCount; v.metadata.morphCount += v2.metadata.morphCount; v.metadata.cameraCount += v2.metadata.cameraCount; for ( var j = 0; j < v2.metadata.motionCount; j ++ ) { v.motions.push( v2.motions[ j ] ); } for ( var j = 0; j < v2.metadata.morphCount; j ++ ) { v.morphs.push( v2.morphs[ j ] ); } for ( var j = 0; j < v2.metadata.cameraCount; j ++ ) { v.cameras.push( v2.cameras[ j ] ); } } return v; }; Parser.prototype.leftToRightModel = function ( model ) { if ( model.metadata.coordinateSystem === 'right' ) { return; } model.metadata.coordinateSystem = 'right'; var helper = new DataCreationHelper(); for ( var i = 0; i < model.metadata.vertexCount; i ++ ) { helper.leftToRightVector3( model.vertices[ i ].position ); helper.leftToRightVector3( model.vertices[ i ].normal ); } for ( var i = 0; i < model.metadata.faceCount; i ++ ) { helper.leftToRightIndexOrder( model.faces[ i ].indices ); } for ( var i = 0; i < model.metadata.boneCount; i ++ ) { helper.leftToRightVector3( model.bones[ i ].position ); } // TODO: support other morph for PMX for ( var i = 0; i < model.metadata.morphCount; i ++ ) { var m = model.morphs[ i ]; if ( model.metadata.format === 'pmx' && m.type !== 1 ) { // TODO: implement continue; } for ( var j = 0; j < m.elements.length; j ++ ) { helper.leftToRightVector3( m.elements[ j ].position ); } } for ( var i = 0; i < model.metadata.rigidBodyCount; i ++ ) { helper.leftToRightVector3( model.rigidBodies[ i ].position ); helper.leftToRightEuler( model.rigidBodies[ i ].rotation ); } for ( var i = 0; i < model.metadata.constraintCount; i ++ ) { helper.leftToRightVector3( model.constraints[ i ].position ); helper.leftToRightEuler( model.constraints[ i ].rotation ); helper.leftToRightVector3Range( model.constraints[ i ].translationLimitation1, model.constraints[ i ].translationLimitation2 ); helper.leftToRightEulerRange( model.constraints[ i ].rotationLimitation1, model.constraints[ i ].rotationLimitation2 ); } }; Parser.prototype.leftToRightVmd = function ( vmd ) { if ( vmd.metadata.coordinateSystem === 'right' ) { return; } vmd.metadata.coordinateSystem = 'right'; var helper = new DataCreationHelper(); for ( var i = 0; i < vmd.metadata.motionCount; i ++ ) { helper.leftToRightVector3( vmd.motions[ i ].position ); helper.leftToRightQuaternion( vmd.motions[ i ].rotation ); } for ( var i = 0; i < vmd.metadata.cameraCount; i ++ ) { helper.leftToRightVector3( vmd.cameras[ i ].position ); helper.leftToRightEuler( vmd.cameras[ i ].rotation ); } }; Parser.prototype.leftToRightVpd = function ( vpd ) { if ( vpd.metadata.coordinateSystem === 'right' ) { return; } vpd.metadata.coordinateSystem = 'right'; var helper = new DataCreationHelper(); for ( var i = 0; i < vpd.bones.length; i ++ ) { helper.leftToRightVector3( vpd.bones[ i ].translation ); helper.leftToRightQuaternion( vpd.bones[ i ].quaternion ); } }; var MMDParser = { CharsetEncoder, Parser }; export { MMDParser };