/** * @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) { console.error('unknown char code ' + key + '.'); return str; } 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: CharsetEncoder, Parser: Parser }; export { MMDParser, CharsetEncoder, Parser };