diff --git a/AUTHORS b/AUTHORS index 82badf47e..c0d7330f6 100644 --- a/AUTHORS +++ b/AUTHORS @@ -33,3 +33,4 @@ Smith TraceSnowOwl TWYuanYu Zelik +Hypoxic diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.fbx b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.fbx new file mode 100644 index 000000000..04a994664 Binary files /dev/null and b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.fbx differ diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.txo b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.txo new file mode 100644 index 000000000..2df910837 --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.txo @@ -0,0 +1,12119 @@ +$object "" { + #version 1.0 + #tag MergeMeshes "1" + #tag Coords "XZY" + #tag Scale "1.000000" + $node "Scene_Root" { + $frame { + 1 0 0 + 0 1 0 + 0 0 1 + 0 0 0 + + } + $node "Root" { + $frame { + 1 0 0 + 0 1 0 + 0 0 1 + 0 0 0 + + } + $node "OnButton" { + $frame { + 1 0 0 + 0 1 0 + 0 0 1 + 0.0719118 0.070342 0.0178316 + + } + } + $node "ShockButton" { + $frame { + 1 0 0 + 0 1 0 + 0 0 1 + 0.0722695 0.069914 -0.031341 + + } + } + } + } + $materials { + $material "ScreenGlass" { + #UVset 0 + } + $material "ScreenBacklight" { + #UVset 0 + } + $material "ScreenRenderTarget" { + #UVset 0 + } + $material "Body" { + #UVset 0 + } + } + $colliders { + $box "UBX_Body" { + $frame { + 1 0 0 + 0 1 0 + 0 -0 1 + 0.0022402 0.0347303 0.00035 + + } + #weight 0 + #material "plastic_5EAA7FB0A83F90CF" + #layers "ItemFireView" + #corner 0.1106 0.0346 0.1285 + } + $box "UBX_OnButton" { + $frame { + 1 0 0 + 0 1 0 + 0 -0 1 + 0.0719119 0.0683481 0.0178316 + + } + #weight 0 + #material "material/metal" + #layers "Interaction" + #corner 0.006 0.001 0.006 + } + $box "UBX_ShockButton" { + $frame { + 1 0 0 + 0 1 0 + 0 -0 1 + 0.0722695 0.067808 -0.031341 + + } + #weight 0 + #material "material/metal" + #layers "Interaction" + #corner 0.0084 0.0014 0.0084 + } + } + $lod 0 { + #lodFactor 0.5 + $bones { + "Root" + "OnButton" + "ShockButton" + } + $mesh "ZappyBoy1000" { + #texCoords 1 + $faces { + 0 3 0 1 2 + 0 3 3 4 5 + 1 3 6 7 8 + 1 3 9 10 11 + 2 3 12 13 14 + 2 3 15 16 17 + 3 3 18 19 20 + 3 3 21 22 23 + 3 3 24 25 26 + 3 3 27 28 29 + 3 3 30 31 32 + 3 3 33 34 35 + 3 3 36 37 38 + 3 3 39 40 41 + 3 3 42 43 44 + 3 3 45 46 47 + 3 3 48 49 50 + 3 3 51 52 53 + 3 3 54 55 56 + 3 3 57 58 59 + 3 3 60 61 62 + 3 3 63 64 65 + 3 3 66 67 68 + 3 3 69 70 71 + 3 3 72 73 74 + 3 3 75 76 77 + 3 3 78 79 80 + 3 3 81 82 83 + 3 3 84 85 86 + 3 3 87 88 89 + 3 3 90 91 92 + 3 3 93 94 95 + 3 3 96 97 98 + 3 3 99 100 101 + 3 3 102 103 104 + 3 3 105 106 107 + 3 3 108 109 110 + 3 3 111 112 113 + 3 3 114 115 116 + 3 3 117 118 119 + 3 3 120 121 122 + 3 3 123 124 125 + 3 3 126 127 128 + 3 3 129 130 131 + 3 3 132 133 134 + 3 3 135 136 137 + 3 3 138 139 140 + 3 3 141 142 143 + 3 3 144 145 146 + 3 3 147 148 149 + 3 3 150 151 152 + 3 3 153 154 155 + 3 3 156 157 158 + 3 3 159 160 161 + 3 3 162 163 164 + 3 3 165 166 167 + 3 3 168 169 170 + 3 3 171 172 173 + 3 3 174 175 176 + 3 3 177 178 179 + 3 3 180 181 182 + 3 3 183 184 185 + 3 3 186 187 188 + 3 3 189 190 191 + 3 3 192 193 194 + 3 3 195 196 197 + 3 3 198 199 200 + 3 3 201 202 203 + 3 3 204 205 206 + 3 3 207 208 209 + 3 3 210 211 212 + 3 3 213 214 215 + 3 3 216 217 218 + 3 3 219 220 221 + 3 3 222 223 224 + 3 3 225 226 227 + 3 3 228 229 230 + 3 3 231 232 233 + 3 3 234 235 236 + 3 3 237 238 239 + 3 3 240 241 242 + 3 3 243 244 245 + 3 3 246 247 248 + 3 3 249 250 251 + 3 3 252 253 254 + 3 3 255 256 257 + 3 3 258 259 260 + 3 3 261 262 263 + 3 3 264 265 266 + 3 3 267 268 269 + 3 3 270 271 272 + 3 3 273 274 275 + 3 3 276 277 278 + 3 3 279 280 281 + 3 3 282 283 284 + 3 3 285 286 287 + 3 3 288 289 290 + 3 3 291 292 293 + 3 3 294 295 296 + 3 3 297 298 299 + 3 3 300 301 302 + 3 3 303 304 305 + 3 3 306 307 308 + 3 3 309 310 311 + 3 3 312 313 314 + 3 3 315 316 317 + 3 3 318 319 320 + 3 3 321 322 323 + 3 3 324 325 326 + 3 3 327 328 329 + 3 3 330 331 332 + 3 3 333 334 335 + 3 3 336 337 338 + 3 3 339 340 341 + 3 3 342 343 344 + 3 3 345 346 347 + 3 3 348 349 350 + 3 3 351 352 353 + 3 3 354 355 356 + 3 3 357 358 359 + 3 3 360 361 362 + 3 3 363 364 365 + 3 3 366 367 368 + 3 3 369 370 371 + 3 3 372 373 374 + 3 3 375 376 377 + 3 3 378 379 380 + 3 3 381 382 383 + 3 3 384 385 386 + 3 3 387 388 389 + 3 3 390 391 392 + 3 3 393 394 395 + 3 3 396 397 398 + 3 3 399 400 401 + 3 3 402 403 404 + 3 3 405 406 407 + 3 3 408 409 410 + 3 3 411 412 413 + 3 3 414 415 416 + 3 3 417 418 419 + 3 3 420 421 422 + 3 3 423 424 425 + 3 3 426 427 428 + 3 3 429 430 431 + 3 3 432 433 434 + 3 3 435 436 437 + 3 3 438 439 440 + 3 3 441 442 443 + 3 3 444 445 446 + 3 3 447 448 449 + 3 3 450 451 452 + 3 3 453 454 455 + 3 3 456 457 458 + 3 3 459 460 461 + 3 3 462 463 464 + 3 3 465 466 467 + 3 3 468 469 470 + 3 3 471 472 473 + 3 3 474 475 476 + 3 3 477 478 479 + 3 3 480 481 482 + 3 3 483 484 485 + 3 3 486 487 488 + 3 3 489 490 491 + 3 3 492 493 494 + 3 3 495 496 497 + 3 3 498 499 500 + 3 3 501 502 503 + 3 3 504 505 506 + 3 3 507 508 509 + 3 3 510 511 512 + 3 3 513 514 515 + 3 3 516 517 518 + 3 3 519 520 521 + 3 3 522 523 524 + 3 3 525 526 527 + 3 3 528 529 530 + 3 3 531 532 533 + 3 3 534 535 536 + 3 3 537 538 539 + 3 3 540 541 542 + 3 3 543 544 545 + 3 3 546 547 548 + 3 3 549 550 551 + 3 3 552 553 554 + 3 3 555 556 557 + 3 3 558 559 560 + 3 3 561 562 563 + 3 3 564 565 566 + 3 3 567 568 569 + 3 3 570 571 572 + 3 3 573 574 575 + 3 3 576 577 578 + 3 3 579 580 581 + 3 3 582 583 584 + 3 3 585 586 587 + 3 3 588 589 590 + 3 3 591 592 593 + 3 3 594 595 596 + 3 3 597 598 599 + 3 3 600 601 602 + 3 3 603 604 605 + 3 3 606 607 608 + 3 3 609 610 611 + 3 3 612 613 614 + 3 3 615 616 617 + 3 3 618 619 620 + 3 3 621 622 623 + 3 3 624 625 626 + 3 3 627 628 629 + 3 3 630 631 632 + 3 3 633 634 635 + 3 3 636 637 638 + 3 3 639 640 641 + 3 3 642 643 644 + 3 3 645 646 647 + 3 3 648 649 650 + 3 3 651 652 653 + 3 3 654 655 656 + 3 3 657 658 659 + 3 3 660 661 662 + 3 3 663 664 665 + 3 3 666 667 668 + 3 3 669 670 671 + 3 3 672 673 674 + 3 3 675 676 677 + 3 3 678 679 680 + 3 3 681 682 683 + 3 3 684 685 686 + 3 3 687 688 689 + 3 3 690 691 692 + 3 3 693 694 695 + 3 3 696 697 698 + 3 3 699 700 701 + 3 3 702 703 704 + 3 3 705 706 707 + 3 3 708 709 710 + 3 3 711 712 713 + 3 3 714 715 716 + 3 3 717 718 719 + 3 3 720 721 722 + 3 3 723 724 725 + 3 3 726 727 728 + 3 3 729 730 731 + 3 3 732 733 734 + 3 3 735 736 737 + 3 3 738 739 740 + 3 3 741 742 743 + 3 3 744 745 746 + 3 3 747 748 749 + 3 3 750 751 752 + 3 3 753 754 755 + 3 3 756 757 758 + 3 3 759 760 761 + 3 3 762 763 764 + 3 3 765 766 767 + 3 3 768 769 770 + 3 3 771 772 773 + 3 3 774 775 776 + 3 3 777 778 779 + 3 3 780 781 782 + 3 3 783 784 785 + 3 3 786 787 788 + 3 3 789 790 791 + 3 3 792 793 794 + 3 3 795 796 797 + 3 3 798 799 800 + 3 3 801 802 803 + 3 3 804 805 806 + 3 3 807 808 809 + 3 3 810 811 812 + 3 3 813 814 815 + 3 3 816 817 818 + 3 3 819 820 821 + 3 3 822 823 824 + 3 3 825 826 827 + 3 3 828 829 830 + 3 3 831 832 833 + 3 3 834 835 836 + 3 3 837 838 839 + 3 3 840 841 842 + 3 3 843 844 845 + 3 3 846 847 848 + 3 3 849 850 851 + 3 3 852 853 854 + 3 3 855 856 857 + 3 3 858 859 860 + 3 3 861 862 863 + 3 3 864 865 866 + 3 3 867 868 869 + 3 3 870 871 872 + 3 3 873 874 875 + 3 3 876 877 878 + 3 3 879 880 881 + 3 3 882 883 884 + 3 3 885 886 887 + 3 3 888 889 890 + 3 3 891 892 893 + 3 3 894 895 896 + 3 3 897 898 899 + 3 3 900 901 902 + 3 3 903 904 905 + 3 3 906 907 908 + 3 3 909 910 911 + 3 3 912 913 914 + 3 3 915 916 917 + 3 3 918 919 920 + 3 3 921 922 923 + 3 3 924 925 926 + 3 3 927 928 929 + 3 3 930 931 932 + 3 3 933 934 935 + 3 3 936 937 938 + 3 3 939 940 941 + 3 3 942 943 944 + 3 3 945 946 947 + 3 3 948 949 950 + 3 3 951 952 953 + 3 3 954 955 956 + 3 3 957 958 959 + 3 3 960 961 962 + 3 3 963 964 965 + 3 3 966 967 968 + 3 3 969 970 971 + 3 3 972 973 974 + 3 3 975 976 977 + 3 3 978 979 980 + 3 3 981 982 983 + 3 3 984 985 986 + 3 3 987 988 989 + 3 3 990 991 992 + 3 3 993 994 995 + 3 3 996 997 998 + 3 3 999 1000 1001 + 3 3 1002 1003 1004 + 3 3 1005 1006 1007 + 3 3 1008 1009 1010 + 3 3 1011 1012 1013 + 3 3 1014 1015 1016 + 3 3 1017 1018 1019 + 3 3 1020 1021 1022 + 3 3 1023 1024 1025 + 3 3 1026 1027 1028 + 3 3 1029 1030 1031 + 3 3 1032 1033 1034 + 3 3 1035 1036 1037 + 3 3 1038 1039 1040 + 3 3 1041 1042 1043 + 3 3 1044 1045 1046 + 3 3 1047 1048 1049 + 3 3 1050 1051 1052 + 3 3 1053 1054 1055 + 3 3 1056 1057 1058 + 3 3 1059 1060 1061 + 3 3 1062 1063 1064 + 3 3 1065 1066 1067 + 3 3 1068 1069 1070 + 3 3 1071 1072 1073 + 3 3 1074 1075 1076 + 3 3 1077 1078 1079 + 3 3 1080 1081 1082 + 3 3 1083 1084 1085 + 3 3 1086 1087 1088 + 3 3 1089 1090 1091 + 3 3 1092 1093 1094 + 3 3 1095 1096 1097 + 3 3 1098 1099 1100 + 3 3 1101 1102 1103 + 3 3 1104 1105 1106 + 3 3 1107 1108 1109 + 3 3 1110 1111 1112 + 3 3 1113 1114 1115 + 3 3 1116 1117 1118 + 3 3 1119 1120 1121 + 3 3 1122 1123 1124 + 3 3 1125 1126 1127 + 3 3 1128 1129 1130 + 3 3 1131 1132 1133 + 3 3 1134 1135 1136 + 3 3 1137 1138 1139 + 3 3 1140 1141 1142 + 3 3 1143 1144 1145 + 3 3 1146 1147 1148 + 3 3 1149 1150 1151 + 3 3 1152 1153 1154 + 3 3 1155 1156 1157 + 3 3 1158 1159 1160 + 3 3 1161 1162 1163 + 3 3 1164 1165 1166 + 3 3 1167 1168 1169 + 3 3 1170 1171 1172 + 3 3 1173 1174 1175 + 3 3 1176 1177 1178 + 3 3 1179 1180 1181 + 3 3 1182 1183 1184 + 3 3 1185 1186 1187 + 3 3 1188 1189 1190 + 3 3 1191 1192 1193 + 3 3 1194 1195 1196 + 3 3 1197 1198 1199 + 3 3 1200 1201 1202 + 3 3 1203 1204 1205 + 3 3 1206 1207 1208 + 3 3 1209 1210 1211 + 3 3 1212 1213 1214 + 3 3 1215 1216 1217 + 3 3 1218 1219 1220 + 3 3 1221 1222 1223 + 3 3 1224 1225 1226 + 3 3 1227 1228 1229 + 3 3 1230 1231 1232 + 3 3 1233 1234 1235 + 3 3 1236 1237 1238 + 3 3 1239 1240 1241 + 3 3 1242 1243 1244 + 3 3 1245 1246 1247 + 3 3 1248 1249 1250 + 3 3 1251 1252 1253 + 3 3 1254 1255 1256 + 3 3 1257 1258 1259 + 3 3 1260 1261 1262 + 3 3 1263 1264 1265 + 3 3 1266 1267 1268 + 3 3 1269 1270 1271 + 3 3 1272 1273 1274 + 3 3 1275 1276 1277 + 3 3 1278 1279 1280 + 3 3 1281 1282 1283 + 3 3 1284 1285 1286 + 3 3 1287 1288 1289 + 3 3 1290 1291 1292 + 3 3 1293 1294 1295 + 3 3 1296 1297 1298 + 3 3 1299 1300 1301 + 3 3 1302 1303 1304 + 3 3 1305 1306 1307 + 3 3 1308 1309 1310 + 3 3 1311 1312 1313 + 3 3 1314 1315 1316 + 3 3 1317 1318 1319 + 3 3 1320 1321 1322 + 3 3 1323 1324 1325 + 3 3 1326 1327 1328 + 3 3 1329 1330 1331 + 3 3 1332 1333 1334 + 3 3 1335 1336 1337 + 3 3 1338 1339 1340 + 3 3 1341 1342 1343 + 3 3 1344 1345 1346 + 3 3 1347 1348 1349 + 3 3 1350 1351 1352 + 3 3 1353 1354 1355 + 3 3 1356 1357 1358 + 3 3 1359 1360 1361 + 3 3 1362 1363 1364 + 3 3 1365 1366 1367 + 3 3 1368 1369 1370 + 3 3 1371 1372 1373 + 3 3 1374 1375 1376 + 3 3 1377 1378 1379 + 3 3 1380 1381 1382 + 3 3 1383 1384 1385 + 3 3 1386 1387 1388 + 3 3 1389 1390 1391 + 3 3 1392 1393 1394 + 3 3 1395 1396 1397 + 3 3 1398 1399 1400 + 3 3 1401 1402 1403 + 3 3 1404 1405 1406 + 3 3 1407 1408 1409 + 3 3 1410 1411 1412 + 3 3 1413 1414 1415 + 3 3 1416 1417 1418 + 3 3 1419 1420 1421 + 3 3 1422 1423 1424 + 3 3 1425 1426 1427 + 3 3 1428 1429 1430 + 3 3 1431 1432 1433 + 3 3 1434 1435 1436 + 3 3 1437 1438 1439 + 3 3 1440 1441 1442 + 3 3 1443 1444 1445 + 3 3 1446 1447 1448 + 3 3 1449 1450 1451 + 3 3 1452 1453 1454 + 3 3 1455 1456 1457 + 3 3 1458 1459 1460 + 3 3 1461 1462 1463 + 3 3 1464 1465 1466 + 3 3 1467 1468 1469 + 3 3 1470 1471 1472 + 3 3 1473 1474 1475 + 3 3 1476 1477 1478 + 3 3 1479 1480 1481 + 3 3 1482 1483 1484 + 3 3 1485 1486 1487 + 3 3 1488 1489 1490 + 3 3 1491 1492 1493 + 3 3 1494 1495 1496 + 3 3 1497 1498 1499 + 3 3 1500 1501 1502 + 3 3 1503 1504 1505 + 3 3 1506 1507 1508 + 3 3 1509 1510 1511 + 3 3 1512 1513 1514 + 3 3 1515 1516 1517 + 3 3 1518 1519 1520 + 3 3 1521 1522 1523 + 3 3 1524 1525 1526 + 3 3 1527 1528 1529 + 3 3 1530 1531 1532 + 3 3 1533 1534 1535 + 3 3 1536 1537 1538 + 3 3 1539 1540 1541 + 3 3 1542 1543 1544 + 3 3 1545 1546 1547 + 3 3 1548 1549 1550 + 3 3 1551 1552 1553 + 3 3 1554 1555 1556 + 3 3 1557 1558 1559 + 3 3 1560 1561 1562 + 3 3 1563 1564 1565 + 3 3 1566 1567 1568 + 3 3 1569 1570 1571 + 3 3 1572 1573 1574 + 3 3 1575 1576 1577 + 3 3 1578 1579 1580 + 3 3 1581 1582 1583 + 3 3 1584 1585 1586 + 3 3 1587 1588 1589 + 3 3 1590 1591 1592 + 3 3 1593 1594 1595 + 3 3 1596 1597 1598 + 3 3 1599 1600 1601 + 3 3 1602 1603 1604 + 3 3 1605 1606 1607 + 3 3 1608 1609 1610 + 3 3 1611 1612 1613 + 3 3 1614 1615 1616 + 3 3 1617 1618 1619 + 3 3 1620 1621 1622 + 3 3 1623 1624 1625 + 3 3 1626 1627 1628 + 3 3 1629 1630 1631 + 3 3 1632 1633 1634 + 3 3 1635 1636 1637 + 3 3 1638 1639 1640 + 3 3 1641 1642 1643 + 3 3 1644 1645 1646 + 3 3 1647 1648 1649 + 3 3 1650 1651 1652 + 3 3 1653 1654 1655 + 3 3 1656 1657 1658 + 3 3 1659 1660 1661 + 3 3 1662 1663 1664 + 3 3 1665 1666 1667 + 3 3 1668 1669 1670 + 3 3 1671 1672 1673 + 3 3 1674 1675 1676 + 3 3 1677 1678 1679 + 3 3 1680 1681 1682 + 3 3 1683 1684 1685 + 3 3 1686 1687 1688 + 3 3 1689 1690 1691 + 3 3 1692 1693 1694 + 3 3 1695 1696 1697 + 3 3 1698 1699 1700 + 3 3 1701 1702 1703 + 3 3 1704 1705 1706 + 3 3 1707 1708 1709 + 3 3 1710 1711 1712 + 3 3 1713 1714 1715 + 3 3 1716 1717 1718 + 3 3 1719 1720 1721 + 3 3 1722 1723 1724 + 3 3 1725 1726 1727 + 3 3 1728 1729 1730 + 3 3 1731 1732 1733 + 3 3 1734 1735 1736 + 3 3 1737 1738 1739 + 3 3 1740 1741 1742 + 3 3 1743 1744 1745 + 3 3 1746 1747 1748 + 3 3 1749 1750 1751 + 3 3 1752 1753 1754 + 3 3 1755 1756 1757 + 3 3 1758 1759 1760 + 3 3 1761 1762 1763 + 3 3 1764 1765 1766 + 3 3 1767 1768 1769 + 3 3 1770 1771 1772 + 3 3 1773 1774 1775 + 3 3 1776 1777 1778 + 3 3 1779 1780 1781 + 3 3 1782 1783 1784 + 3 3 1785 1786 1787 + 3 3 1788 1789 1790 + 3 3 1791 1792 1793 + 3 3 1794 1795 1796 + 3 3 1797 1798 1799 + 3 3 1800 1801 1802 + 3 3 1803 1804 1805 + 3 3 1806 1807 1808 + 3 3 1809 1810 1811 + 3 3 1812 1813 1814 + 3 3 1815 1816 1817 + 3 3 1818 1819 1820 + 3 3 1821 1822 1823 + 3 3 1824 1825 1826 + 3 3 1827 1828 1829 + 3 3 1830 1831 1832 + 3 3 1833 1834 1835 + 3 3 1836 1837 1838 + 3 3 1839 1840 1841 + 3 3 1842 1843 1844 + 3 3 1845 1846 1847 + 3 3 1848 1849 1850 + 3 3 1851 1852 1853 + 3 3 1854 1855 1856 + 3 3 1857 1858 1859 + 3 3 1860 1861 1862 + 3 3 1863 1864 1865 + 3 3 1866 1867 1868 + 3 3 1869 1870 1871 + 3 3 1872 1873 1874 + 3 3 1875 1876 1877 + 3 3 1878 1879 1880 + 3 3 1881 1882 1883 + 3 3 1884 1885 1886 + 3 3 1887 1888 1889 + 3 3 1890 1891 1892 + 3 3 1893 1894 1895 + 3 3 1896 1897 1898 + 3 3 1899 1900 1901 + 3 3 1902 1903 1904 + 3 3 1905 1906 1907 + 3 3 1908 1909 1910 + 3 3 1911 1912 1913 + 3 3 1914 1915 1916 + 3 3 1917 1918 1919 + 3 3 1920 1921 1922 + 3 3 1923 1924 1925 + 3 3 1926 1927 1928 + 3 3 1929 1930 1931 + 3 3 1932 1933 1934 + 3 3 1935 1936 1937 + 3 3 1938 1939 1940 + 3 3 1941 1942 1943 + 3 3 1944 1945 1946 + 3 3 1947 1948 1949 + 3 3 1950 1951 1952 + 3 3 1953 1954 1955 + 3 3 1956 1957 1958 + 3 3 1959 1960 1961 + 3 3 1962 1963 1964 + 3 3 1965 1966 1967 + 3 3 1968 1969 1970 + 3 3 1971 1972 1973 + 3 3 1974 1975 1976 + 3 3 1977 1978 1979 + 3 3 1980 1981 1982 + 3 3 1983 1984 1985 + 3 3 1986 1987 1988 + 3 3 1989 1990 1991 + 3 3 1992 1993 1994 + 3 3 1995 1996 1997 + 3 3 1998 1999 2000 + 3 3 2001 2002 2003 + 3 3 2004 2005 2006 + 3 3 2007 2008 2009 + 3 3 2010 2011 2012 + 3 3 2013 2014 2015 + 3 3 2016 2017 2018 + 3 3 2019 2020 2021 + 3 3 2022 2023 2024 + 3 3 2025 2026 2027 + 3 3 2028 2029 2030 + 3 3 2031 2032 2033 + 3 3 2034 2035 2036 + 3 3 2037 2038 2039 + 3 3 2040 2041 2042 + 3 3 2043 2044 2045 + 3 3 2046 2047 2048 + 3 3 2049 2050 2051 + 3 3 2052 2053 2054 + 3 3 2055 2056 2057 + 3 3 2058 2059 2060 + 3 3 2061 2062 2063 + 3 3 2064 2065 2066 + 3 3 2067 2068 2069 + 3 3 2070 2071 2072 + 3 3 2073 2074 2075 + 3 3 2076 2077 2078 + 3 3 2079 2080 2081 + 3 3 2082 2083 2084 + 3 3 2085 2086 2087 + 3 3 2088 2089 2090 + 3 3 2091 2092 2093 + 3 3 2094 2095 2096 + 3 3 2097 2098 2099 + 3 3 2100 2101 2102 + 3 3 2103 2104 2105 + 3 3 2106 2107 2108 + 3 3 2109 2110 2111 + 3 3 2112 2113 2114 + 3 3 2115 2116 2117 + 3 3 2118 2119 2120 + 3 3 2121 2122 2123 + 3 3 2124 2125 2126 + 3 3 2127 2128 2129 + 3 3 2130 2131 2132 + 3 3 2133 2134 2135 + 3 3 2136 2137 2138 + 3 3 2139 2140 2141 + 3 3 2142 2143 2144 + 3 3 2145 2146 2147 + 3 3 2148 2149 2150 + 3 3 2151 2152 2153 + 3 3 2154 2155 2156 + 3 3 2157 2158 2159 + 3 3 2160 2161 2162 + 3 3 2163 2164 2165 + 3 3 2166 2167 2168 + 3 3 2169 2170 2171 + 3 3 2172 2173 2174 + 3 3 2175 2176 2177 + 3 3 2178 2179 2180 + 3 3 2181 2182 2183 + 3 3 2184 2185 2186 + 3 3 2187 2188 2189 + 3 3 2190 2191 2192 + 3 3 2193 2194 2195 + 3 3 2196 2197 2198 + 3 3 2199 2200 2201 + 3 3 2202 2203 2204 + 3 3 2205 2206 2207 + 3 3 2208 2209 2210 + 3 3 2211 2212 2213 + 3 3 2214 2215 2216 + 3 3 2217 2218 2219 + 3 3 2220 2221 2222 + 3 3 2223 2224 2225 + 3 3 2226 2227 2228 + 3 3 2229 2230 2231 + 3 3 2232 2233 2234 + 3 3 2235 2236 2237 + 3 3 2238 2239 2240 + 3 3 2241 2242 2243 + 3 3 2244 2245 2246 + 3 3 2247 2248 2249 + 3 3 2250 2251 2252 + 3 3 2253 2254 2255 + 3 3 2256 2257 2258 + 3 3 2259 2260 2261 + 3 3 2262 2263 2264 + 3 3 2265 2266 2267 + 3 3 2268 2269 2270 + 3 3 2271 2272 2273 + 3 3 2274 2275 2276 + 3 3 2277 2278 2279 + 3 3 2280 2281 2282 + 3 3 2283 2284 2285 + 3 3 2286 2287 2288 + 3 3 2289 2290 2291 + 3 3 2292 2293 2294 + 3 3 2295 2296 2297 + 3 3 2298 2299 2300 + 3 3 2301 2302 2303 + 3 3 2304 2305 2306 + 3 3 2307 2308 2309 + 3 3 2310 2311 2312 + 3 3 2313 2314 2315 + 3 3 2316 2317 2318 + 3 3 2319 2320 2321 + 3 3 2322 2323 2324 + 3 3 2325 2326 2327 + 3 3 2328 2329 2330 + 3 3 2331 2332 2333 + 3 3 2334 2335 2336 + 3 3 2337 2338 2339 + 3 3 2340 2341 2342 + 3 3 2343 2344 2345 + 3 3 2346 2347 2348 + 3 3 2349 2350 2351 + 3 3 2352 2353 2354 + 3 3 2355 2356 2357 + 3 3 2358 2359 2360 + 3 3 2361 2362 2363 + 3 3 2364 2365 2366 + 3 3 2367 2368 2369 + 3 3 2370 2371 2372 + 3 3 2373 2374 2375 + 3 3 2376 2377 2378 + 3 3 2379 2380 2381 + 3 3 2382 2383 2384 + 3 3 2385 2386 2387 + 3 3 2388 2389 2390 + 3 3 2391 2392 2393 + 3 3 2394 2395 2396 + 3 3 2397 2398 2399 + 3 3 2400 2401 2402 + 3 3 2403 2404 2405 + 3 3 2406 2407 2408 + 3 3 2409 2410 2411 + 3 3 2412 2413 2414 + 3 3 2415 2416 2417 + 3 3 2418 2419 2420 + 3 3 2421 2422 2423 + 3 3 2424 2425 2426 + 3 3 2427 2428 2429 + 3 3 2430 2431 2432 + 3 3 2433 2434 2435 + 3 3 2436 2437 2438 + 3 3 2439 2440 2441 + 3 3 2442 2443 2444 + 3 3 2445 2446 2447 + 3 3 2448 2449 2450 + 3 3 2451 2452 2453 + 3 3 2454 2455 2456 + 3 3 2457 2458 2459 + 3 3 2460 2461 2462 + 3 3 2463 2464 2465 + 3 3 2466 2467 2468 + 3 3 2469 2470 2471 + 3 3 2472 2473 2474 + 3 3 2475 2476 2477 + 3 3 2478 2479 2480 + 3 3 2481 2482 2483 + 3 3 2484 2485 2486 + 3 3 2487 2488 2489 + 3 3 2490 2491 2492 + 3 3 2493 2494 2495 + 3 3 2496 2497 2498 + 3 3 2499 2500 2501 + 3 3 2502 2503 2504 + 3 3 2505 2506 2507 + 3 3 2508 2509 2510 + 3 3 2511 2512 2513 + 3 3 2514 2515 2516 + 3 3 2517 2518 2519 + 3 3 2520 2521 2522 + 3 3 2523 2524 2525 + 3 3 2526 2527 2528 + 3 3 2529 2530 2531 + 3 3 2532 2533 2534 + 3 3 2535 2536 2537 + 3 3 2538 2539 2540 + 3 3 2541 2542 2543 + 3 3 2544 2545 2546 + 3 3 2547 2548 2549 + 3 3 2550 2551 2552 + 3 3 2553 2554 2555 + 3 3 2556 2557 2558 + 3 3 2559 2560 2561 + 3 3 2562 2563 2564 + 3 3 2565 2566 2567 + 3 3 2568 2569 2570 + 3 3 2571 2572 2573 + 3 3 2574 2575 2576 + 3 3 2577 2578 2579 + 3 3 2580 2581 2582 + 3 3 2583 2584 2585 + 3 3 2586 2587 2588 + 3 3 2589 2590 2591 + 3 3 2592 2593 2594 + 3 3 2595 2596 2597 + 3 3 2598 2599 2600 + 3 3 2601 2602 2603 + 3 3 2604 2605 2606 + 3 3 2607 2608 2609 + 3 3 2610 2611 2612 + 3 3 2613 2614 2615 + 3 3 2616 2617 2618 + 3 3 2619 2620 2621 + 3 3 2622 2623 2624 + 3 3 2625 2626 2627 + 3 3 2628 2629 2630 + 3 3 2631 2632 2633 + 3 3 2634 2635 2636 + 3 3 2637 2638 2639 + 3 3 2640 2641 2642 + 3 3 2643 2644 2645 + 3 3 2646 2647 2648 + 3 3 2649 2650 2651 + 3 3 2652 2653 2654 + 3 3 2655 2656 2657 + 3 3 2658 2659 2660 + 3 3 2661 2662 2663 + 3 3 2664 2665 2666 + 3 3 2667 2668 2669 + 3 3 2670 2671 2672 + 3 3 2673 2674 2675 + 3 3 2676 2677 2678 + 3 3 2679 2680 2681 + 3 3 2682 2683 2684 + 3 3 2685 2686 2687 + 3 3 2688 2689 2690 + 3 3 2691 2692 2693 + 3 3 2694 2695 2696 + 3 3 2697 2698 2699 + 3 3 2700 2701 2702 + 3 3 2703 2704 2705 + 3 3 2706 2707 2708 + 3 3 2709 2710 2711 + 3 3 2712 2713 2714 + 3 3 2715 2716 2717 + 3 3 2718 2719 2720 + 3 3 2721 2722 2723 + 3 3 2724 2725 2726 + 3 3 2727 2728 2729 + 3 3 2730 2731 2732 + 3 3 2733 2734 2735 + 3 3 2736 2737 2738 + 3 3 2739 2740 2741 + 3 3 2742 2743 2744 + 3 3 2745 2746 2747 + 3 3 2748 2749 2750 + 3 3 2751 2752 2753 + 3 3 2754 2755 2756 + 3 3 2757 2758 2759 + 3 3 2760 2761 2762 + 3 3 2763 2764 2765 + 3 3 2766 2767 2768 + 3 3 2769 2770 2771 + 3 3 2772 2773 2774 + 3 3 2775 2776 2777 + 3 3 2778 2779 2780 + 3 3 2781 2782 2783 + 3 3 2784 2785 2786 + 3 3 2787 2788 2789 + 3 3 2790 2791 2792 + 3 3 2793 2794 2795 + 3 3 2796 2797 2798 + 3 3 2799 2800 2801 + 3 3 2802 2803 2804 + 3 3 2805 2806 2807 + 3 3 2808 2809 2810 + 3 3 2811 2812 2813 + 3 3 2814 2815 2816 + 3 3 2817 2818 2819 + 3 3 2820 2821 2822 + 3 3 2823 2824 2825 + 3 3 2826 2827 2828 + 3 3 2829 2830 2831 + 3 3 2832 2833 2834 + 3 3 2835 2836 2837 + 3 3 2838 2839 2840 + 3 3 2841 2842 2843 + 3 3 2844 2845 2846 + 3 3 2847 2848 2849 + 3 3 2850 2851 2852 + 3 3 2853 2854 2855 + 3 3 2856 2857 2858 + 3 3 2859 2860 2861 + 3 3 2862 2863 2864 + 3 3 2865 2866 2867 + 3 3 2868 2869 2870 + 3 3 2871 2872 2873 + 3 3 2874 2875 2876 + 3 3 2877 2878 2879 + 3 3 2880 2881 2882 + 3 3 2883 2884 2885 + 3 3 2886 2887 2888 + 3 3 2889 2890 2891 + 3 3 2892 2893 2894 + 3 3 2895 2896 2897 + 3 3 2898 2899 2900 + 3 3 2901 2902 2903 + 3 3 2904 2905 2906 + 3 3 2907 2908 2909 + 3 3 2910 2911 2912 + 3 3 2913 2914 2915 + 3 3 2916 2917 2918 + 3 3 2919 2920 2921 + 3 3 2922 2923 2924 + 3 3 2925 2926 2927 + 3 3 2928 2929 2930 + 3 3 2931 2932 2933 + 3 3 2934 2935 2936 + 3 3 2937 2938 2939 + 3 3 2940 2941 2942 + 3 3 2943 2944 2945 + 3 3 2946 2947 2948 + 3 3 2949 2950 2951 + 3 3 2952 2953 2954 + 3 3 2955 2956 2957 + 3 3 2958 2959 2960 + 3 3 2961 2962 2963 + 3 3 2964 2965 2966 + 3 3 2967 2968 2969 + 3 3 2970 2971 2972 + 3 3 2973 2974 2975 + 3 3 2976 2977 2978 + 3 3 2979 2980 2981 + 3 3 2982 2983 2984 + 3 3 2985 2986 2987 + 3 3 2988 2989 2990 + 3 3 2991 2992 2993 + 3 3 2994 2995 2996 + 3 3 2997 2998 2999 + 3 3 3000 3001 3002 + 3 3 3003 3004 3005 + 3 3 3006 3007 3008 + 3 3 3009 3010 3011 + 3 3 3012 3013 3014 + 3 3 3015 3016 3017 + 3 3 3018 3019 3020 + 3 3 3021 3022 3023 + 3 3 3024 3025 3026 + 3 3 3027 3028 3029 + 3 3 3030 3031 3032 + 3 3 3033 3034 3035 + 3 3 3036 3037 3038 + 3 3 3039 3040 3041 + 3 3 3042 3043 3044 + 3 3 3045 3046 3047 + 3 3 3048 3049 3050 + 3 3 3051 3052 3053 + 3 3 3054 3055 3056 + 3 3 3057 3058 3059 + 3 3 3060 3061 3062 + 3 3 3063 3064 3065 + 3 3 3066 3067 3068 + 3 3 3069 3070 3071 + 3 3 3072 3073 3074 + 3 3 3075 3076 3077 + 3 3 3078 3079 3080 + 3 3 3081 3082 3083 + 3 3 3084 3085 3086 + 3 3 3087 3088 3089 + 3 3 3090 3091 3092 + 3 3 3093 3094 3095 + 3 3 3096 3097 3098 + 3 3 3099 3100 3101 + 3 3 3102 3103 3104 + 3 3 3105 3106 3107 + 3 3 3108 3109 3110 + 3 3 3111 3112 3113 + 3 3 3114 3115 3116 + 3 3 3117 3118 3119 + 3 3 3120 3121 3122 + 3 3 3123 3124 3125 + 3 3 3126 3127 3128 + 3 3 3129 3130 3131 + 3 3 3132 3133 3134 + 3 3 3135 3136 3137 + 3 3 3138 3139 3140 + 3 3 3141 3142 3143 + 3 3 3144 3145 3146 + 3 3 3147 3148 3149 + 3 3 3150 3151 3152 + 3 3 3153 3154 3155 + 3 3 3156 3157 3158 + 3 3 3159 3160 3161 + 3 3 3162 3163 3164 + 3 3 3165 3166 3167 + 3 3 3168 3169 3170 + 3 3 3171 3172 3173 + 3 3 3174 3175 3176 + 3 3 3177 3178 3179 + 3 3 3180 3181 3182 + 3 3 3183 3184 3185 + 3 3 3186 3187 3188 + 3 3 3189 3190 3191 + 3 3 3192 3193 3194 + 3 3 3195 3196 3197 + 3 3 3198 3199 3200 + 3 3 3201 3202 3203 + 3 3 3204 3205 3206 + 3 3 3207 3208 3209 + 3 3 3210 3211 3212 + 3 3 3213 3214 3215 + 3 3 3216 3217 3218 + 3 3 3219 3220 3221 + 3 3 3222 3223 3224 + 3 3 3225 3226 3227 + 3 3 3228 3229 3230 + 3 3 3231 3232 3233 + 3 3 3234 3235 3236 + 3 3 3237 3238 3239 + 3 3 3240 3241 3242 + 3 3 3243 3244 3245 + 3 3 3246 3247 3248 + 3 3 3249 3250 3251 + 3 3 3252 3253 3254 + 3 3 3255 3256 3257 + 3 3 3258 3259 3260 + 3 3 3261 3262 3263 + 3 3 3264 3265 3266 + 3 3 3267 3268 3269 + 3 3 3270 3271 3272 + 3 3 3273 3274 3275 + 3 3 3276 3277 3278 + 3 3 3279 3280 3281 + 3 3 3282 3283 3284 + 3 3 3285 3286 3287 + 3 3 3288 3289 3290 + 3 3 3291 3292 3293 + 3 3 3294 3295 3296 + 3 3 3297 3298 3299 + 3 3 3300 3301 3302 + 3 3 3303 3304 3305 + 3 3 3306 3307 3308 + 3 3 3309 3310 3311 + 3 3 3312 3313 3314 + 3 3 3315 3316 3317 + 3 3 3318 3319 3320 + 3 3 3321 3322 3323 + 3 3 3324 3325 3326 + 3 3 3327 3328 3329 + 3 3 3330 3331 3332 + 3 3 3333 3334 3335 + 3 3 3336 3337 3338 + 3 3 3339 3340 3341 + 3 3 3342 3343 3344 + 3 3 3345 3346 3347 + 3 3 3348 3349 3350 + 3 3 3351 3352 3353 + 3 3 3354 3355 3356 + 3 3 3357 3358 3359 + 3 3 3360 3361 3362 + 3 3 3363 3364 3365 + 3 3 3366 3367 3368 + 3 3 3369 3370 3371 + 3 3 3372 3373 3374 + 3 3 3375 3376 3377 + 3 3 3378 3379 3380 + 3 3 3381 3382 3383 + 3 3 3384 3385 3386 + 3 3 3387 3388 3389 + 3 3 3390 3391 3392 + 3 3 3393 3394 3395 + 3 3 3396 3397 3398 + 3 3 3399 3400 3401 + 3 3 3402 3403 3404 + 3 3 3405 3406 3407 + 3 3 3408 3409 3410 + 3 3 3411 3412 3413 + 3 3 3414 3415 3416 + 3 3 3417 3418 3419 + 3 3 3420 3421 3422 + 3 3 3423 3424 3425 + 3 3 3426 3427 3428 + 3 3 3429 3430 3431 + 3 3 3432 3433 3434 + 3 3 3435 3436 3437 + 3 3 3438 3439 3440 + 3 3 3441 3442 3443 + 3 3 3444 3445 3446 + 3 3 3447 3448 3449 + 3 3 3450 3451 3452 + 3 3 3453 3454 3455 + 3 3 3456 3457 3458 + 3 3 3459 3460 3461 + 3 3 3462 3463 3464 + 3 3 3465 3466 3467 + 3 3 3468 3469 3470 + 3 3 3471 3472 3473 + 3 3 3474 3475 3476 + 3 3 3477 3478 3479 + 3 3 3480 3481 3482 + 3 3 3483 3484 3485 + 3 3 3486 3487 3488 + 3 3 3489 3490 3491 + 3 3 3492 3493 3494 + 3 3 3495 3496 3497 + 3 3 3498 3499 3500 + 3 3 3501 3502 3503 + 3 3 3504 3505 3506 + 3 3 3507 3508 3509 + 3 3 3510 3511 3512 + 3 3 3513 3514 3515 + 3 3 3516 3517 3518 + 3 3 3519 3520 3521 + 3 3 3522 3523 3524 + 3 3 3525 3526 3527 + 3 3 3528 3529 3530 + 3 3 3531 3532 3533 + 3 3 3534 3535 3536 + 3 3 3537 3538 3539 + 3 3 3540 3541 3542 + 3 3 3543 3544 3545 + 3 3 3546 3547 3548 + 3 3 3549 3550 3551 + 3 3 3552 3553 3554 + 3 3 3555 3556 3557 + 3 3 3558 3559 3560 + 3 3 3561 3562 3563 + 3 3 3564 3565 3566 + 3 3 3567 3568 3569 + 3 3 3570 3571 3572 + 3 3 3573 3574 3575 + 3 3 3576 3577 3578 + 3 3 3579 3580 3581 + 3 3 3582 3583 3584 + 3 3 3585 3586 3587 + 3 3 3588 3589 3590 + 3 3 3591 3592 3593 + 3 3 3594 3595 3596 + 3 3 3597 3598 3599 + 3 3 3600 3601 3602 + 3 3 3603 3604 3605 + 3 3 3606 3607 3608 + 3 3 3609 3610 3611 + 3 3 3612 3613 3614 + 3 3 3615 3616 3617 + 3 3 3618 3619 3620 + 3 3 3621 3622 3623 + 3 3 3624 3625 3626 + 3 3 3627 3628 3629 + 3 3 3630 3631 3632 + 3 3 3633 3634 3635 + } + $faceVerts { + 1 0 0 + 2 1 1 + 0 0 2 + 2 1 1 + 3 1 3 + 0 0 2 + 5 0 0 + 6 1 1 + 4 0 2 + 6 1 1 + 7 1 3 + 4 0 2 + 9 0 0 + 10 1 1 + 8 0 2 + 10 1 1 + 11 1 3 + 8 0 2 + 27 2 4 + 59 3 5 + 26 4 6 + 64 5 7 + 62 6 8 + 47 7 9 + 49 8 10 + 66 9 11 + 48 10 12 + 50 11 13 + 67 12 14 + 49 8 10 + 51 13 15 + 68 14 16 + 50 11 13 + 52 15 17 + 69 16 18 + 51 13 15 + 53 17 19 + 70 18 20 + 52 15 17 + 54 19 21 + 71 20 22 + 53 17 19 + 55 21 23 + 72 22 24 + 54 19 21 + 56 23 25 + 73 24 26 + 55 21 23 + 74 25 27 + 73 24 26 + 57 26 28 + 75 27 29 + 74 25 27 + 58 28 30 + 63 29 31 + 75 27 29 + 59 3 32 + 43 30 33 + 63 29 31 + 29 31 34 + 60 32 35 + 63 29 31 + 45 33 36 + 13 34 37 + 44 35 38 + 12 36 39 + 14 37 40 + 46 38 41 + 13 34 37 + 15 39 42 + 47 7 43 + 14 37 40 + 16 40 44 + 48 10 45 + 15 39 42 + 16 40 46 + 17 41 47 + 48 10 48 + 17 41 47 + 18 42 49 + 49 8 50 + 18 42 49 + 19 43 51 + 50 11 52 + 19 43 51 + 20 44 53 + 51 13 54 + 20 44 53 + 21 45 55 + 52 15 56 + 21 45 55 + 22 46 57 + 53 17 58 + 22 46 57 + 23 47 59 + 54 19 60 + 23 47 59 + 24 48 61 + 55 21 62 + 25 49 63 + 57 26 64 + 24 48 61 + 26 4 6 + 58 28 65 + 25 49 63 + 65 50 66 + 64 5 7 + 48 10 12 + 30 51 67 + 62 6 8 + 31 52 68 + 31 52 68 + 64 5 7 + 32 53 69 + 32 53 69 + 65 50 66 + 33 54 70 + 33 54 70 + 66 9 11 + 34 55 71 + 34 55 71 + 67 12 14 + 35 56 72 + 35 56 72 + 68 14 16 + 36 57 73 + 36 57 73 + 69 16 18 + 37 58 74 + 37 58 74 + 70 18 20 + 38 59 75 + 38 59 75 + 71 20 22 + 39 60 76 + 72 22 24 + 73 24 26 + 39 60 76 + 73 24 26 + 74 25 27 + 40 61 77 + 74 25 27 + 75 27 29 + 41 62 78 + 43 30 33 + 42 63 79 + 63 29 31 + 45 33 36 + 44 35 80 + 60 32 35 + 28 64 81 + 76 65 82 + 29 31 34 + 28 64 81 + 61 66 83 + 30 51 67 + 62 6 8 + 61 66 83 + 46 38 84 + 12 36 39 + 45 33 85 + 27 2 4 + 38 59 75 + 76 65 82 + 37 58 74 + 31 52 68 + 76 65 82 + 30 51 67 + 39 60 76 + 76 65 82 + 38 59 75 + 32 53 69 + 76 65 82 + 31 52 68 + 40 61 77 + 76 65 82 + 39 60 76 + 33 54 70 + 76 65 82 + 32 53 69 + 41 62 78 + 76 65 82 + 40 61 77 + 34 55 71 + 76 65 82 + 33 54 70 + 42 63 79 + 76 65 82 + 41 62 78 + 35 56 72 + 76 65 82 + 34 55 71 + 43 30 33 + 76 65 82 + 42 63 79 + 36 57 73 + 76 65 82 + 35 56 72 + 29 31 34 + 76 65 82 + 43 30 33 + 37 58 74 + 76 65 82 + 36 57 73 + 30 51 67 + 76 65 82 + 28 64 81 + 28 64 81 + 29 31 34 + 61 66 83 + 101 67 86 + 96 68 87 + 160 69 88 + 92 70 89 + 108 71 90 + 77 72 91 + 400 73 92 + 402 74 93 + 82 75 94 + 87 76 95 + 104 77 96 + 86 78 97 + 82 75 94 + 98 79 98 + 83 80 99 + 150 81 100 + 92 70 89 + 151 82 101 + 79 83 102 + 78 84 103 + 95 85 104 + 86 78 97 + 85 86 105 + 148 87 106 + 307 88 107 + 141 89 108 + 305 90 109 + 147 91 110 + 140 92 111 + 79 83 102 + 156 93 112 + 96 68 87 + 115 94 113 + 84 95 114 + 119 96 115 + 451 97 116 + 84 95 114 + 112 98 117 + 119 96 115 + 175 99 118 + 165 100 119 + 173 101 120 + 375 102 121 + 377 103 122 + 88 104 123 + 99 105 124 + 106 106 125 + 90 107 126 + 242 108 127 + 262 109 128 + 365 110 129 + 162 111 130 + 124 112 131 + 163 113 132 + 214 114 133 + 215 115 134 + 266 116 135 + 239 117 136 + 242 108 127 + 339 118 137 + 187 119 138 + 186 120 139 + 204 121 140 + 127 122 141 + 89 123 142 + 404 124 143 + 323 125 144 + 280 126 145 + 355 127 146 + 266 116 147 + 226 128 148 + 353 129 149 + 93 130 150 + 95 85 104 + 104 77 96 + 80 131 151 + 79 83 102 + 93 130 150 + 222 132 152 + 317 133 153 + 212 134 154 + 254 135 155 + 256 136 156 + 303 137 157 + 138 138 158 + 137 139 159 + 85 86 105 + 238 140 160 + 239 117 136 + 336 141 161 + 282 142 162 + 283 143 163 + 320 144 164 + 335 145 165 + 325 146 166 + 334 147 167 + 87 76 95 + 86 78 97 + 134 148 168 + 236 149 169 + 299 150 170 + 252 151 171 + 349 152 172 + 123 153 173 + 348 154 174 + 114 155 175 + 90 107 126 + 127 122 141 + 96 68 87 + 453 156 176 + 91 157 177 + 297 158 178 + 296 159 179 + 291 160 180 + 120 161 181 + 111 162 182 + 342 163 183 + 369 164 184 + 158 165 185 + 366 166 186 + 91 157 177 + 121 167 187 + 115 94 113 + 84 95 114 + 101 67 86 + 112 98 117 + 311 168 188 + 302 169 189 + 235 170 190 + 92 70 89 + 150 81 100 + 172 171 191 + 403 172 192 + 106 106 125 + 402 74 93 + 138 138 158 + 85 86 105 + 161 173 193 + 178 174 194 + 254 135 155 + 396 175 195 + 224 176 196 + 217 177 197 + 318 178 198 + 133 179 199 + 149 180 200 + 300 181 201 + 226 128 148 + 225 182 202 + 347 183 203 + 418 184 204 + 231 185 205 + 414 186 206 + 265 187 207 + 241 188 208 + 367 189 209 + 374 190 210 + 381 191 211 + 81 192 212 + 126 193 213 + 129 194 214 + 83 80 99 + 317 133 153 + 222 132 152 + 340 195 215 + 99 105 124 + 453 156 176 + 100 196 216 + 168 197 217 + 93 130 150 + 164 198 218 + 169 199 219 + 168 197 217 + 165 100 119 + 141 89 220 + 140 92 111 + 146 200 221 + 117 201 222 + 287 202 223 + 126 193 213 + 106 106 125 + 99 105 124 + 98 79 98 + 243 203 224 + 179 204 225 + 239 117 226 + 263 205 227 + 212 134 154 + 330 206 228 + 165 100 119 + 175 99 118 + 169 199 219 + 340 195 215 + 220 207 229 + 344 208 230 + 93 130 150 + 168 197 217 + 80 131 151 + 94 209 231 + 78 84 103 + 158 165 232 + 123 153 233 + 125 210 234 + 124 112 131 + 123 153 233 + 122 211 235 + 125 210 234 + 416 212 236 + 128 213 237 + 404 124 143 + 90 107 126 + 114 155 175 + 450 214 238 + 111 162 239 + 120 161 240 + 112 98 117 + 118 215 241 + 117 201 222 + 120 161 240 + 245 216 242 + 335 145 165 + 240 217 243 + 116 218 244 + 115 94 113 + 122 211 235 + 159 219 245 + 111 162 239 + 160 69 88 + 286 220 246 + 130 221 247 + 126 193 213 + 113 222 248 + 114 155 175 + 128 213 237 + 107 223 249 + 108 71 90 + 380 224 250 + 176 225 251 + 109 226 252 + 177 227 253 + 152 228 254 + 150 81 100 + 153 229 255 + 234 230 256 + 235 170 257 + 255 231 258 + 145 232 259 + 144 233 260 + 154 234 261 + 133 179 262 + 154 234 261 + 134 148 168 + 142 235 263 + 149 180 264 + 143 236 265 + 131 237 266 + 132 238 267 + 147 91 110 + 149 180 264 + 133 179 262 + 148 87 106 + 131 237 266 + 147 91 110 + 80 131 151 + 136 239 268 + 140 92 111 + 135 240 269 + 143 236 265 + 137 139 159 + 142 235 263 + 149 180 200 + 142 235 270 + 324 241 271 + 157 242 272 + 156 93 112 + 116 218 244 + 350 243 273 + 225 182 202 + 318 178 198 + 142 235 270 + 137 139 274 + 334 147 167 + 94 209 231 + 158 165 232 + 102 244 275 + 287 202 223 + 117 201 222 + 118 215 241 + 208 245 276 + 178 174 194 + 397 246 277 + 91 157 177 + 163 113 132 + 121 167 187 + 451 97 116 + 452 247 278 + 84 95 114 + 150 81 100 + 152 228 254 + 171 248 279 + 152 228 254 + 131 237 266 + 170 249 280 + 97 250 281 + 174 251 282 + 105 252 283 + 156 93 112 + 157 242 272 + 160 69 88 + 165 100 119 + 164 198 218 + 167 253 284 + 104 77 96 + 87 76 95 + 164 198 218 + 169 199 219 + 171 248 279 + 168 197 217 + 97 250 281 + 81 192 212 + 174 251 282 + 177 227 253 + 110 254 285 + 173 101 120 + 166 255 286 + 87 76 95 + 155 256 287 + 167 253 284 + 443 257 288 + 173 101 120 + 174 251 282 + 172 171 191 + 169 199 219 + 145 232 259 + 446 258 289 + 144 233 260 + 203 259 290 + 195 260 291 + 204 121 140 + 105 252 283 + 175 99 118 + 88 104 123 + 108 71 90 + 92 70 89 + 81 192 212 + 357 261 292 + 358 262 293 + 354 263 294 + 370 264 295 + 262 109 128 + 367 189 209 + 159 219 296 + 157 242 297 + 331 265 298 + 257 266 299 + 327 267 300 + 236 149 169 + 257 266 299 + 248 268 301 + 327 267 300 + 264 269 302 + 260 270 303 + 202 271 304 + 193 272 305 + 178 174 306 + 209 273 307 + 406 274 308 + 183 275 309 + 408 276 310 + 231 185 205 + 214 114 311 + 360 277 312 + 188 278 313 + 187 119 138 + 205 279 314 + 183 275 309 + 184 280 315 + 199 281 316 + 253 282 317 + 254 135 318 + 193 272 305 + 195 260 291 + 179 204 225 + 196 283 319 + 246 284 320 + 186 120 139 + 251 285 321 + 338 286 322 + 136 239 323 + 337 287 324 + 179 204 225 + 243 203 224 + 180 288 325 + 192 289 326 + 197 290 327 + 216 291 328 + 185 292 329 + 455 293 330 + 221 294 331 + 213 295 332 + 185 292 329 + 221 294 331 + 271 296 333 + 269 297 334 + 277 298 335 + 383 299 336 + 189 300 337 + 385 301 338 + 190 302 339 + 207 303 340 + 191 304 341 + 311 168 188 + 312 305 342 + 302 169 189 + 266 116 135 + 267 306 343 + 226 128 344 + 354 263 294 + 162 111 345 + 357 261 292 + 407 307 346 + 190 302 339 + 410 308 347 + 363 309 348 + 138 138 349 + 368 310 350 + 194 311 351 + 205 279 314 + 196 283 319 + 196 283 319 + 180 288 325 + 194 311 351 + 348 154 174 + 124 112 352 + 354 263 294 + 315 312 353 + 116 218 354 + 319 313 355 + 241 188 356 + 186 120 139 + 240 217 357 + 249 314 358 + 244 315 359 + 306 316 360 + 405 317 361 + 130 221 362 + 412 318 363 + 237 319 364 + 251 285 321 + 188 278 313 + 77 72 365 + 394 320 366 + 151 82 367 + 190 302 339 + 191 304 341 + 230 321 368 + 454 322 369 + 457 323 370 + 192 289 326 + 130 221 362 + 286 220 371 + 321 324 372 + 132 238 373 + 312 305 342 + 146 200 374 + 223 325 375 + 192 289 326 + 216 291 328 + 185 292 329 + 213 295 332 + 202 271 304 + 305 90 109 + 306 316 360 + 307 88 107 + 275 326 376 + 253 282 317 + 276 327 377 + 342 163 183 + 341 328 378 + 120 161 181 + 384 329 379 + 385 301 338 + 198 330 380 + 366 166 186 + 139 331 381 + 338 286 322 + 203 259 290 + 186 120 139 + 265 187 382 + 306 316 360 + 311 168 188 + 249 314 358 + 153 229 383 + 151 82 367 + 301 332 384 + 393 333 385 + 378 334 386 + 356 335 387 + 161 173 388 + 158 165 185 + 368 310 350 + 382 336 389 + 182 337 390 + 389 338 391 + 183 275 309 + 232 339 392 + 184 280 315 + 244 315 359 + 238 140 160 + 308 340 393 + 328 341 394 + 329 342 395 + 331 265 298 + 197 290 327 + 457 323 370 + 202 271 304 + 272 343 396 + 268 344 397 + 194 311 351 + 273 345 398 + 269 297 334 + 272 343 396 + 244 315 399 + 249 314 400 + 243 203 224 + 218 346 401 + 228 347 402 + 284 348 403 + 207 303 340 + 199 281 316 + 200 349 404 + 107 223 405 + 395 350 406 + 77 72 365 + 278 351 407 + 279 352 408 + 273 345 398 + 314 353 409 + 111 162 182 + 331 265 298 + 274 354 410 + 272 343 396 + 181 355 411 + 242 108 412 + 179 204 225 + 262 109 413 + 227 356 414 + 225 182 415 + 226 128 344 + 225 182 415 + 227 356 414 + 224 176 416 + 410 308 347 + 230 321 368 + 418 184 417 + 267 306 343 + 215 115 134 + 454 322 369 + 212 134 418 + 213 295 332 + 222 132 419 + 221 294 331 + 218 346 401 + 222 132 419 + 109 226 420 + 176 225 421 + 356 335 387 + 223 325 375 + 216 291 328 + 224 176 416 + 263 205 422 + 264 269 302 + 212 134 418 + 283 143 423 + 228 347 402 + 233 357 424 + 230 321 368 + 215 115 134 + 231 185 425 + 389 338 391 + 209 273 307 + 388 358 426 + 280 126 427 + 281 359 428 + 210 360 429 + 255 231 258 + 256 136 430 + 253 282 317 + 153 229 383 + 301 332 384 + 132 238 373 + 258 361 431 + 247 362 432 + 257 266 433 + 236 149 434 + 237 319 364 + 257 266 433 + 245 216 435 + 246 284 320 + 252 151 436 + 249 314 400 + 235 170 257 + 250 363 437 + 251 285 321 + 237 319 364 + 252 151 436 + 234 230 256 + 181 355 411 + 250 363 437 + 244 315 399 + 243 203 224 + 238 140 438 + 240 217 357 + 246 284 320 + 245 216 435 + 122 211 439 + 123 153 173 + 319 313 355 + 216 291 328 + 260 270 303 + 217 177 440 + 341 328 378 + 343 364 441 + 118 215 442 + 337 287 324 + 135 240 443 + 307 88 107 + 195 260 291 + 203 259 290 + 262 109 413 + 218 346 401 + 284 348 403 + 220 207 444 + 145 232 445 + 154 234 446 + 362 365 447 + 202 271 304 + 456 366 448 + 185 292 329 + 399 367 449 + 388 358 450 + 397 246 277 + 253 282 317 + 275 326 376 + 255 231 258 + 255 231 258 + 274 354 410 + 234 230 256 + 279 352 408 + 278 351 407 + 206 368 451 + 260 270 303 + 264 269 302 + 261 369 452 + 269 297 334 + 271 296 333 + 268 344 397 + 270 370 453 + 188 278 313 + 268 344 397 + 274 354 410 + 275 326 376 + 272 343 396 + 276 327 377 + 182 337 390 + 278 351 407 + 189 300 337 + 211 371 454 + 277 298 335 + 270 370 453 + 258 361 431 + 188 278 313 + 271 296 333 + 277 298 335 + 439 372 455 + 275 326 376 + 276 327 377 + 273 345 398 + 248 268 456 + 247 362 432 + 445 373 457 + 329 342 395 + 261 369 458 + 330 206 228 + 277 298 335 + 279 352 408 + 189 300 337 + 276 327 377 + 193 272 305 + 182 337 390 + 229 374 459 + 448 375 460 + 219 376 461 + 357 261 292 + 113 222 462 + 359 377 463 + 214 114 311 + 266 116 147 + 358 262 293 + 176 225 421 + 440 378 464 + 322 379 465 + 259 380 466 + 344 208 230 + 219 376 461 + 219 376 461 + 284 348 467 + 229 374 459 + 448 375 460 + 282 142 162 + 259 380 466 + 448 375 460 + 229 374 459 + 282 142 162 + 289 381 468 + 287 202 469 + 290 382 470 + 286 220 371 + 287 202 469 + 288 383 471 + 285 384 472 + 286 220 371 + 371 385 473 + 290 382 470 + 343 364 441 + 371 385 473 + 372 386 474 + 293 387 475 + 371 385 473 + 290 382 470 + 371 385 473 + 292 388 476 + 290 382 470 + 292 388 476 + 289 381 468 + 293 387 477 + 295 389 478 + 292 388 479 + 292 388 480 + 298 390 481 + 291 160 482 + 294 391 483 + 296 159 179 + 373 392 484 + 154 234 446 + 133 179 199 + 326 393 485 + 137 139 274 + 138 138 486 + 333 394 487 + 157 242 297 + 116 218 488 + 328 341 394 + 261 369 458 + 329 342 395 + 217 177 489 + 241 188 490 + 240 217 243 + 364 395 491 + 305 90 109 + 312 305 342 + 306 316 360 + 139 331 492 + 78 84 103 + 136 239 268 + 324 241 271 + 325 146 166 + 300 181 201 + 412 318 363 + 321 324 372 + 413 396 493 + 301 332 384 + 304 397 494 + 302 169 189 + 285 384 472 + 282 142 162 + 321 324 372 + 304 397 494 + 394 320 366 + 303 137 157 + 344 208 230 + 346 398 495 + 340 195 215 + 343 364 441 + 341 328 378 + 345 399 496 + 346 398 495 + 344 208 230 + 282 142 162 + 343 364 441 + 345 399 496 + 285 384 472 + 352 400 497 + 309 401 498 + 351 402 499 + 300 181 201 + 299 150 170 + 326 393 485 + 319 313 355 + 318 178 198 + 315 312 353 + 314 353 409 + 313 403 500 + 342 163 183 + 331 265 298 + 330 206 228 + 314 353 409 + 329 342 395 + 328 341 394 + 316 404 501 + 415 405 502 + 414 186 206 + 359 377 463 + 358 262 293 + 357 261 292 + 360 277 312 + 445 373 503 + 438 406 504 + 248 268 301 + 323 125 144 + 355 127 146 + 322 379 465 + 367 189 209 + 368 310 350 + 370 264 295 + 347 183 203 + 350 243 273 + 348 154 174 + 337 287 324 + 336 141 161 + 338 286 322 + 332 407 505 + 335 145 165 + 333 394 487 + 317 133 153 + 346 398 495 + 342 163 183 + 336 141 161 + 337 287 324 + 308 340 393 + 282 142 162 + 285 384 472 + 346 398 495 + 350 243 273 + 318 178 198 + 349 152 172 + 353 129 149 + 347 183 203 + 354 263 294 + 368 310 350 + 367 189 209 + 363 309 348 + 365 110 129 + 370 264 295 + 366 166 186 + 163 113 132 + 114 155 175 + 162 111 130 + 364 395 491 + 332 407 505 + 363 309 506 + 365 110 129 + 366 166 186 + 339 118 137 + 326 393 485 + 327 267 300 + 362 365 447 + 288 383 471 + 289 381 468 + 294 391 507 + 288 383 471 + 373 392 508 + 371 385 473 + 294 391 507 + 373 392 508 + 288 383 471 + 86 78 97 + 103 408 509 + 85 86 105 + 95 85 104 + 94 209 231 + 103 408 509 + 131 237 266 + 152 228 254 + 132 238 267 + 356 335 387 + 355 127 146 + 393 333 385 + 390 409 510 + 391 410 511 + 309 401 498 + 435 411 512 + 433 412 513 + 399 367 449 + 433 412 514 + 421 413 515 + 388 358 426 + 211 371 454 + 387 414 516 + 210 360 429 + 428 415 517 + 382 336 389 + 421 413 515 + 430 416 518 + 431 417 519 + 384 329 379 + 380 224 520 + 398 418 521 + 107 223 405 + 211 371 454 + 189 300 337 + 387 414 516 + 429 419 522 + 383 299 336 + 431 417 519 + 382 336 389 + 384 329 379 + 182 337 390 + 427 420 523 + 380 224 250 + 420 421 524 + 378 334 525 + 379 422 526 + 109 226 252 + 420 421 524 + 381 191 211 + 422 423 527 + 210 360 528 + 386 424 529 + 355 127 146 + 105 252 283 + 377 103 122 + 97 250 281 + 110 254 285 + 379 422 526 + 88 104 123 + 423 425 530 + 425 426 531 + 375 102 121 + 97 250 281 + 376 427 532 + 81 192 212 + 394 320 366 + 395 350 406 + 352 400 533 + 310 428 534 + 397 246 277 + 351 402 535 + 351 402 535 + 396 175 195 + 352 400 533 + 309 401 536 + 395 350 406 + 390 409 537 + 399 367 449 + 397 246 277 + 391 410 538 + 398 418 521 + 399 367 449 + 390 409 537 + 372 386 539 + 373 392 484 + 437 429 540 + 295 389 478 + 437 429 540 + 298 390 481 + 335 145 165 + 245 216 242 + 325 146 166 + 106 106 125 + 403 172 192 + 89 123 142 + 82 75 94 + 129 194 214 + 400 73 92 + 405 317 541 + 417 430 542 + 130 221 247 + 407 307 346 + 409 431 543 + 190 302 339 + 199 281 316 + 207 303 340 + 408 276 310 + 359 377 463 + 128 213 544 + 415 405 502 + 406 274 308 + 419 432 545 + 183 275 309 + 233 357 424 + 232 339 392 + 411 433 546 + 320 144 164 + 233 357 547 + 413 396 493 + 415 405 502 + 416 212 548 + 393 333 385 + 434 434 549 + 412 318 363 + 435 411 512 + 392 435 550 + 414 186 206 + 393 333 385 + 427 420 551 + 405 317 361 + 434 434 549 + 429 419 522 + 407 307 346 + 432 436 552 + 406 274 308 + 408 276 310 + 428 415 517 + 387 414 516 + 432 436 552 + 410 308 347 + 404 124 143 + 426 437 553 + 416 212 236 + 425 426 531 + 403 172 192 + 424 438 554 + 404 124 143 + 401 439 555 + 426 437 553 + 424 438 554 + 402 74 93 + 422 423 527 + 376 427 532 + 424 438 554 + 374 190 210 + 379 422 526 + 426 437 553 + 375 102 121 + 377 103 122 + 425 426 531 + 376 427 532 + 428 415 517 + 430 416 518 + 382 336 389 + 383 299 336 + 429 419 522 + 387 414 516 + 380 224 520 + 427 420 551 + 398 418 521 + 434 434 549 + 435 411 512 + 398 418 521 + 401 439 555 + 403 172 192 + 423 425 530 + 400 73 92 + 417 430 542 + 422 423 527 + 427 420 523 + 420 421 524 + 405 317 541 + 407 307 346 + 429 419 522 + 409 431 543 + 409 431 543 + 431 417 519 + 408 276 310 + 406 274 308 + 428 415 517 + 419 432 545 + 419 432 545 + 421 413 515 + 411 433 546 + 413 396 493 + 411 433 556 + 435 411 512 + 437 429 540 + 295 389 478 + 372 386 539 + 436 440 557 + 296 159 179 + 297 158 178 + 298 390 481 + 437 429 540 + 297 158 178 + 386 424 529 + 418 184 204 + 392 435 550 + 176 225 251 + 177 227 253 + 440 378 558 + 438 406 504 + 323 125 144 + 441 441 559 + 441 441 559 + 362 365 447 + 438 406 504 + 247 362 432 + 258 361 431 + 447 442 560 + 439 372 455 + 281 359 428 + 442 443 561 + 280 126 145 + 323 125 144 + 442 443 562 + 446 258 289 + 440 378 558 + 444 444 563 + 439 372 455 + 442 443 561 + 447 442 560 + 439 372 455 + 447 442 560 + 271 296 333 + 145 232 445 + 441 441 559 + 446 258 564 + 443 257 288 + 167 253 284 + 444 444 563 + 144 233 260 + 444 444 563 + 155 256 287 + 459 445 565 + 449 446 566 + 460 447 567 + 378 334 525 + 416 212 236 + 379 422 526 + 83 80 99 + 100 196 216 + 451 97 116 + 453 156 176 + 96 68 87 + 452 247 278 + 453 156 176 + 99 105 124 + 450 214 238 + 117 201 222 + 126 193 213 + 451 97 116 + 223 325 375 + 227 356 414 + 267 306 343 + 456 366 448 + 201 448 568 + 455 293 330 + 184 280 315 + 228 347 402 + 455 293 330 + 191 304 341 + 200 349 404 + 454 322 369 + 200 349 404 + 201 448 568 + 457 323 370 + 476 449 569 + 461 450 570 + 508 451 571 + 463 452 572 + 464 453 573 + 482 454 574 + 464 453 573 + 465 455 575 + 484 456 576 + 465 455 575 + 466 457 577 + 486 458 578 + 466 457 577 + 467 459 579 + 488 460 580 + 467 459 579 + 468 461 581 + 490 462 582 + 468 461 581 + 469 463 583 + 492 464 584 + 469 463 583 + 470 465 585 + 494 466 586 + 470 465 585 + 471 467 587 + 496 468 588 + 471 467 587 + 472 469 589 + 498 470 590 + 472 469 589 + 473 471 591 + 500 472 592 + 473 471 591 + 474 473 593 + 502 474 594 + 474 473 593 + 475 475 595 + 504 476 596 + 475 475 595 + 476 449 569 + 506 477 597 + 461 450 570 + 462 478 598 + 478 479 599 + 462 478 598 + 463 452 572 + 480 480 600 + 480 480 600 + 479 481 601 + 478 479 599 + 481 482 602 + 479 481 601 + 482 454 574 + 483 483 603 + 481 482 602 + 484 456 576 + 486 458 578 + 485 484 604 + 484 456 576 + 487 485 605 + 485 484 604 + 488 460 580 + 490 462 582 + 489 486 606 + 488 460 580 + 492 464 584 + 491 487 607 + 490 462 582 + 493 488 608 + 491 487 607 + 494 466 586 + 496 468 588 + 495 489 609 + 494 466 586 + 497 490 610 + 495 489 609 + 498 470 590 + 500 472 592 + 499 491 611 + 498 470 590 + 502 474 594 + 501 492 612 + 500 472 592 + 503 493 613 + 501 492 612 + 504 476 596 + 505 494 614 + 503 493 613 + 506 477 597 + 508 451 571 + 507 495 615 + 506 477 597 + 478 479 599 + 477 496 616 + 508 451 571 + 481 482 602 + 489 486 606 + 497 490 610 + 524 497 617 + 509 498 618 + 556 499 619 + 511 500 620 + 512 501 621 + 530 502 622 + 512 501 621 + 513 503 623 + 532 504 624 + 513 503 623 + 514 505 625 + 534 506 626 + 514 505 625 + 515 507 627 + 536 508 628 + 515 507 627 + 516 509 629 + 538 510 630 + 516 509 629 + 517 511 631 + 540 512 632 + 517 511 631 + 518 513 633 + 542 514 634 + 518 513 633 + 519 515 635 + 544 516 636 + 519 515 635 + 520 517 637 + 546 518 638 + 520 517 637 + 521 519 639 + 548 520 640 + 521 519 639 + 522 521 641 + 550 522 642 + 522 521 641 + 523 523 643 + 552 524 644 + 523 523 643 + 524 497 617 + 554 525 645 + 509 498 618 + 510 526 646 + 526 527 647 + 510 526 646 + 511 500 620 + 528 528 648 + 528 528 648 + 527 529 649 + 526 527 647 + 529 530 650 + 527 529 649 + 530 502 622 + 532 504 624 + 531 531 651 + 530 502 622 + 534 506 626 + 533 532 652 + 532 504 624 + 535 533 653 + 533 532 652 + 536 508 628 + 537 534 654 + 535 533 653 + 538 510 630 + 539 535 655 + 537 534 654 + 540 512 632 + 541 536 656 + 539 535 655 + 542 514 634 + 544 516 636 + 543 537 657 + 542 514 634 + 546 518 638 + 545 538 658 + 544 516 636 + 548 520 640 + 547 539 659 + 546 518 638 + 550 522 642 + 549 540 660 + 548 520 640 + 551 541 661 + 549 540 660 + 552 524 644 + 553 542 662 + 551 541 661 + 554 525 645 + 556 499 619 + 555 543 663 + 554 525 645 + 525 544 664 + 555 543 663 + 526 527 647 + 545 538 658 + 529 530 650 + 533 532 652 + 592 545 665 + 572 546 666 + 587 547 667 + 584 548 668 + 560 549 669 + 583 550 670 + 585 551 671 + 560 549 669 + 584 548 668 + 586 552 672 + 560 549 669 + 585 551 671 + 586 552 672 + 587 547 667 + 560 549 669 + 566 553 673 + 558 554 674 + 572 546 666 + 564 555 675 + 558 554 674 + 560 549 669 + 566 553 673 + 568 556 676 + 588 557 677 + 568 556 676 + 590 558 678 + 589 559 679 + 568 556 676 + 591 560 680 + 590 558 678 + 591 560 680 + 568 556 676 + 592 545 665 + 566 553 673 + 572 546 666 + 568 556 676 + 558 554 674 + 566 553 673 + 583 550 670 + 557 561 681 + 573 562 682 + 565 563 683 + 570 564 684 + 581 565 685 + 571 566 686 + 569 567 687 + 580 568 688 + 570 564 684 + 579 569 689 + 580 568 688 + 567 570 690 + 578 571 691 + 579 569 689 + 565 563 683 + 562 572 692 + 563 573 693 + 576 574 694 + 561 575 695 + 562 572 692 + 575 576 696 + 561 575 695 + 575 576 696 + 559 577 697 + 559 577 697 + 574 578 698 + 557 561 681 + 582 579 699 + 577 580 700 + 571 566 686 + 573 562 682 + 583 550 670 + 578 571 691 + 581 565 685 + 591 560 680 + 582 579 699 + 580 568 688 + 590 558 678 + 581 565 685 + 589 559 679 + 590 558 678 + 579 569 689 + 588 557 677 + 589 559 679 + 578 571 691 + 576 574 694 + 577 580 700 + 586 552 672 + 575 576 696 + 576 574 694 + 585 551 671 + 575 576 696 + 585 551 671 + 574 578 698 + 574 578 698 + 584 548 668 + 573 562 682 + 592 545 665 + 587 547 667 + 582 579 699 + 628 581 665 + 623 582 667 + 608 583 666 + 594 584 674 + 596 585 669 + 619 586 670 + 596 585 669 + 621 587 671 + 620 588 668 + 596 585 669 + 622 589 672 + 621 587 671 + 622 589 672 + 596 585 669 + 623 582 667 + 602 590 673 + 608 583 666 + 594 584 674 + 594 584 674 + 600 591 675 + 596 585 669 + 625 592 679 + 604 593 676 + 624 594 677 + 626 595 678 + 604 593 676 + 625 592 679 + 627 596 680 + 604 593 676 + 626 595 678 + 627 596 680 + 628 581 665 + 604 593 676 + 608 583 666 + 602 590 673 + 604 593 676 + 624 594 677 + 602 590 673 + 619 586 670 + 593 597 681 + 601 598 683 + 609 599 682 + 606 600 684 + 607 601 686 + 617 602 685 + 605 603 687 + 606 600 684 + 616 604 688 + 605 603 687 + 616 604 688 + 603 605 690 + 603 605 690 + 615 606 689 + 601 598 683 + 598 607 692 + 612 608 694 + 599 609 693 + 597 610 695 + 611 611 696 + 598 607 692 + 610 612 698 + 611 611 696 + 595 613 697 + 609 599 682 + 610 612 698 + 593 597 681 + 599 609 693 + 613 614 700 + 607 601 686 + 609 599 682 + 614 615 691 + 619 586 670 + 617 602 685 + 618 616 699 + 627 596 680 + 616 604 688 + 617 602 685 + 626 595 678 + 616 604 688 + 626 595 678 + 615 606 689 + 615 606 689 + 625 592 679 + 614 615 691 + 612 608 694 + 622 589 672 + 613 614 700 + 611 611 696 + 621 587 671 + 612 608 694 + 620 588 668 + 621 587 671 + 610 612 698 + 619 586 670 + 620 588 668 + 609 599 682 + 613 614 700 + 623 582 667 + 618 616 699 + 664 617 701 + 659 618 702 + 644 619 703 + 655 620 704 + 630 621 705 + 656 622 706 + 632 623 707 + 657 624 708 + 656 622 706 + 632 623 707 + 658 625 709 + 657 624 708 + 632 623 707 + 636 626 710 + 658 625 709 + 638 627 711 + 644 619 703 + 630 621 705 + 630 621 705 + 636 626 710 + 632 623 707 + 660 628 712 + 661 629 713 + 638 627 711 + 662 630 714 + 640 631 715 + 661 629 713 + 663 632 716 + 640 631 715 + 662 630 714 + 664 617 701 + 644 619 703 + 663 632 716 + 644 619 703 + 638 627 711 + 640 631 715 + 660 628 712 + 638 627 711 + 655 620 704 + 629 633 717 + 637 634 718 + 645 635 719 + 642 636 720 + 643 637 721 + 653 638 722 + 641 639 723 + 642 636 720 + 652 640 724 + 641 639 723 + 652 640 724 + 639 641 725 + 639 641 725 + 651 642 726 + 637 634 718 + 634 643 727 + 648 644 728 + 635 645 729 + 633 646 730 + 647 647 731 + 634 643 727 + 646 648 732 + 647 647 731 + 631 649 733 + 645 635 719 + 646 648 732 + 629 633 717 + 643 637 721 + 635 645 729 + 654 650 734 + 645 635 719 + 650 651 735 + 655 620 704 + 653 638 722 + 654 650 734 + 663 632 716 + 653 638 722 + 663 632 716 + 652 640 724 + 651 642 726 + 652 640 724 + 661 629 713 + 651 642 726 + 661 629 713 + 650 651 735 + 648 644 728 + 658 625 709 + 649 652 736 + 657 624 708 + 658 625 709 + 647 647 731 + 646 648 732 + 656 622 706 + 647 647 731 + 655 620 704 + 656 622 706 + 645 635 719 + 649 652 736 + 659 618 702 + 654 650 734 + 59 3 5 + 58 28 65 + 26 4 6 + 62 6 8 + 46 38 84 + 47 7 9 + 66 9 11 + 65 50 66 + 48 10 12 + 67 12 14 + 66 9 11 + 49 8 10 + 68 14 16 + 67 12 14 + 50 11 13 + 69 16 18 + 68 14 16 + 51 13 15 + 70 18 20 + 69 16 18 + 52 15 17 + 71 20 22 + 70 18 20 + 53 17 19 + 72 22 24 + 71 20 22 + 54 19 21 + 73 24 26 + 72 22 24 + 55 21 23 + 73 24 26 + 56 23 25 + 57 26 28 + 74 25 27 + 57 26 28 + 58 28 30 + 75 27 29 + 58 28 30 + 59 3 32 + 63 29 31 + 60 32 35 + 29 31 34 + 63 29 31 + 59 3 32 + 45 33 36 + 44 35 38 + 45 33 85 + 12 36 39 + 46 38 41 + 44 35 38 + 13 34 37 + 47 7 43 + 46 38 41 + 14 37 40 + 48 10 45 + 47 7 43 + 15 39 42 + 17 41 47 + 49 8 50 + 48 10 48 + 18 42 49 + 50 11 52 + 49 8 50 + 19 43 51 + 51 13 54 + 50 11 52 + 20 44 53 + 52 15 56 + 51 13 54 + 21 45 55 + 53 17 58 + 52 15 56 + 22 46 57 + 54 19 60 + 53 17 58 + 23 47 59 + 55 21 62 + 54 19 60 + 24 48 61 + 56 23 737 + 55 21 62 + 57 26 64 + 56 23 737 + 24 48 61 + 58 28 65 + 57 26 64 + 25 49 63 + 64 5 7 + 47 7 9 + 48 10 12 + 62 6 8 + 64 5 7 + 31 52 68 + 64 5 7 + 65 50 66 + 32 53 69 + 65 50 66 + 66 9 11 + 33 54 70 + 66 9 11 + 67 12 14 + 34 55 71 + 67 12 14 + 68 14 16 + 35 56 72 + 68 14 16 + 69 16 18 + 36 57 73 + 69 16 18 + 70 18 20 + 37 58 74 + 70 18 20 + 71 20 22 + 38 59 75 + 71 20 22 + 72 22 24 + 39 60 76 + 73 24 26 + 40 61 77 + 39 60 76 + 74 25 27 + 41 62 78 + 40 61 77 + 75 27 29 + 42 63 79 + 41 62 78 + 42 63 79 + 75 27 29 + 63 29 31 + 44 35 80 + 61 66 83 + 60 32 35 + 61 66 83 + 62 6 8 + 30 51 67 + 61 66 83 + 44 35 80 + 46 38 84 + 45 33 85 + 59 3 5 + 27 2 4 + 29 31 34 + 60 32 35 + 61 66 83 + 96 68 87 + 156 93 112 + 160 69 88 + 108 71 90 + 107 223 249 + 77 72 91 + 402 74 93 + 98 79 98 + 82 75 94 + 104 77 96 + 103 408 509 + 86 78 97 + 98 79 98 + 100 196 216 + 83 80 99 + 92 70 89 + 77 72 91 + 151 82 101 + 78 84 103 + 94 209 231 + 95 85 104 + 85 86 105 + 143 236 265 + 148 87 106 + 141 89 108 + 146 200 374 + 305 90 109 + 140 92 111 + 78 84 103 + 79 83 102 + 96 68 87 + 91 157 177 + 115 94 113 + 119 96 115 + 117 201 222 + 451 97 116 + 165 100 119 + 167 253 284 + 173 101 120 + 377 103 122 + 105 252 283 + 88 104 123 + 106 106 125 + 89 123 142 + 90 107 126 + 262 109 128 + 370 264 295 + 365 110 129 + 124 112 131 + 125 210 234 + 163 113 132 + 215 115 134 + 267 306 343 + 266 116 135 + 242 108 127 + 365 110 129 + 339 118 137 + 186 120 139 + 203 259 290 + 204 121 140 + 89 123 142 + 401 439 555 + 404 124 143 + 280 126 145 + 210 360 528 + 355 127 146 + 226 128 148 + 347 183 203 + 353 129 149 + 95 85 104 + 103 408 509 + 104 77 96 + 79 83 102 + 95 85 104 + 93 130 150 + 317 133 153 + 313 403 500 + 212 134 154 + 256 136 156 + 302 169 189 + 303 137 157 + 137 139 159 + 143 236 265 + 85 86 105 + 239 117 136 + 339 118 137 + 336 141 161 + 283 143 163 + 233 357 547 + 320 144 164 + 325 146 166 + 324 241 271 + 334 147 167 + 86 78 97 + 148 87 106 + 134 148 168 + 299 150 170 + 325 146 166 + 252 151 171 + 123 153 173 + 124 112 352 + 348 154 174 + 90 107 126 + 89 123 142 + 127 122 141 + 453 156 176 + 450 214 238 + 91 157 177 + 296 159 179 + 294 391 738 + 291 160 180 + 111 162 182 + 314 353 409 + 342 163 183 + 158 165 185 + 139 331 381 + 366 166 186 + 101 67 86 + 160 69 88 + 112 98 117 + 302 169 189 + 256 136 156 + 235 170 190 + 150 81 100 + 171 248 279 + 172 171 191 + 106 106 125 + 98 79 98 + 402 74 93 + 85 86 105 + 102 244 275 + 161 173 193 + 254 135 155 + 303 137 157 + 396 175 195 + 217 177 197 + 316 404 739 + 318 178 198 + 149 180 200 + 324 241 271 + 300 181 201 + 225 182 202 + 350 243 273 + 347 183 203 + 231 185 205 + 360 277 312 + 414 186 206 + 241 188 208 + 364 395 740 + 367 189 209 + 381 191 211 + 108 71 90 + 81 192 212 + 129 194 214 + 82 75 94 + 83 80 99 + 222 132 152 + 220 207 229 + 340 195 215 + 453 156 176 + 452 247 278 + 100 196 216 + 93 130 150 + 104 77 96 + 164 198 218 + 168 197 217 + 164 198 218 + 165 100 119 + 140 92 111 + 147 91 110 + 146 200 221 + 287 202 223 + 286 220 246 + 126 193 213 + 99 105 124 + 100 196 216 + 98 79 98 + 179 204 225 + 242 108 412 + 239 117 226 + 212 134 154 + 313 403 500 + 330 206 228 + 175 99 118 + 174 251 282 + 169 199 219 + 220 207 229 + 284 348 467 + 344 208 230 + 168 197 217 + 170 249 280 + 80 131 151 + 78 84 103 + 139 331 492 + 158 165 232 + 122 211 235 + 121 167 187 + 125 210 234 + 128 213 237 + 127 122 141 + 404 124 143 + 114 155 175 + 163 113 132 + 450 214 238 + 120 161 240 + 119 96 115 + 112 98 117 + 117 201 222 + 119 96 115 + 120 161 240 + 335 145 165 + 332 407 505 + 240 217 243 + 115 94 113 + 121 167 187 + 122 211 235 + 111 162 239 + 112 98 117 + 160 69 88 + 130 221 247 + 129 194 214 + 126 193 213 + 114 155 175 + 127 122 141 + 128 213 237 + 108 71 90 + 381 191 211 + 380 224 250 + 109 226 252 + 110 254 285 + 177 227 253 + 150 81 100 + 151 82 101 + 153 229 255 + 235 170 257 + 256 136 430 + 255 231 258 + 144 233 260 + 155 256 287 + 154 234 261 + 154 234 261 + 155 256 287 + 134 148 168 + 149 180 264 + 148 87 106 + 143 236 265 + 132 238 267 + 146 200 221 + 147 91 110 + 133 179 262 + 134 148 168 + 148 87 106 + 147 91 110 + 79 83 102 + 80 131 151 + 140 92 111 + 141 89 220 + 135 240 269 + 142 235 270 + 334 147 167 + 324 241 271 + 156 93 112 + 115 94 113 + 116 218 244 + 225 182 202 + 224 176 196 + 318 178 198 + 137 139 274 + 333 394 487 + 334 147 167 + 158 165 232 + 161 173 193 + 102 244 275 + 178 174 194 + 396 175 195 + 397 246 277 + 121 167 187 + 163 113 132 + 125 210 234 + 91 157 177 + 450 214 238 + 163 113 132 + 452 247 278 + 101 67 86 + 84 95 114 + 152 228 254 + 170 249 280 + 171 248 279 + 131 237 266 + 80 131 151 + 170 249 280 + 174 251 282 + 175 99 118 + 105 252 283 + 157 242 272 + 159 219 245 + 160 69 88 + 164 198 218 + 166 255 286 + 167 253 284 + 87 76 95 + 166 255 286 + 164 198 218 + 171 248 279 + 170 249 280 + 168 197 217 + 81 192 212 + 172 171 191 + 174 251 282 + 110 254 285 + 88 104 123 + 173 101 120 + 87 76 95 + 134 148 168 + 155 256 287 + 443 257 288 + 177 227 253 + 173 101 120 + 172 171 191 + 171 248 279 + 169 199 219 + 446 258 289 + 444 444 563 + 144 233 260 + 195 260 291 + 196 283 319 + 204 121 140 + 175 99 118 + 173 101 120 + 88 104 123 + 92 70 89 + 172 171 191 + 81 192 212 + 358 262 293 + 353 129 149 + 354 263 294 + 262 109 128 + 265 187 207 + 367 189 209 + 157 242 297 + 328 341 394 + 331 265 298 + 327 267 300 + 299 150 170 + 236 149 169 + 248 268 301 + 361 653 741 + 327 267 300 + 260 270 303 + 197 290 327 + 202 271 304 + 178 174 306 + 208 245 742 + 209 273 307 + 183 275 309 + 199 281 316 + 408 276 310 + 214 114 311 + 358 262 293 + 360 277 312 + 187 119 138 + 204 121 140 + 205 279 314 + 184 280 315 + 201 448 568 + 199 281 316 + 254 135 318 + 178 174 306 + 193 272 305 + 179 204 225 + 180 288 325 + 196 283 319 + 186 120 139 + 187 119 138 + 251 285 321 + 136 239 323 + 135 240 443 + 337 287 324 + 243 203 224 + 250 363 437 + 180 288 325 + 197 290 327 + 260 270 303 + 216 291 328 + 455 293 330 + 218 346 401 + 221 294 331 + 269 297 334 + 279 352 408 + 277 298 335 + 189 300 337 + 206 368 451 + 385 301 338 + 207 303 340 + 200 349 404 + 191 304 341 + 312 305 342 + 301 332 384 + 302 169 189 + 267 306 343 + 227 356 414 + 226 128 344 + 162 111 345 + 113 222 462 + 357 261 292 + 190 302 339 + 230 321 368 + 410 308 347 + 138 138 349 + 161 173 388 + 368 310 350 + 205 279 314 + 204 121 140 + 196 283 319 + 180 288 325 + 181 355 411 + 194 311 351 + 124 112 352 + 162 111 345 + 354 263 294 + 116 218 354 + 122 211 439 + 319 313 355 + 186 120 139 + 246 284 320 + 240 217 357 + 244 315 359 + 308 340 393 + 306 316 360 + 130 221 362 + 321 324 372 + 412 318 363 + 251 285 321 + 187 119 138 + 188 278 313 + 394 320 366 + 304 397 494 + 151 82 367 + 191 304 341 + 215 115 134 + 230 321 368 + 457 323 370 + 197 290 327 + 192 289 326 + 286 220 371 + 285 384 472 + 321 324 372 + 312 305 342 + 305 90 109 + 146 200 374 + 213 295 332 + 264 269 302 + 202 271 304 + 306 316 360 + 308 340 393 + 307 88 107 + 253 282 317 + 193 272 305 + 276 327 377 + 341 328 378 + 118 215 442 + 120 161 181 + 385 301 338 + 206 368 451 + 198 330 380 + 139 331 381 + 136 239 323 + 338 286 322 + 186 120 139 + 241 188 356 + 265 187 382 + 311 168 188 + 235 170 190 + 249 314 358 + 151 82 367 + 304 397 494 + 301 332 384 + 378 334 386 + 109 226 420 + 356 335 387 + 158 165 185 + 369 164 184 + 368 310 350 + 182 337 390 + 209 273 307 + 389 338 391 + 232 339 392 + 228 347 402 + 184 280 315 + 238 140 160 + 336 141 161 + 308 340 393 + 329 342 395 + 330 206 228 + 331 265 298 + 457 323 370 + 456 366 448 + 202 271 304 + 268 344 397 + 205 279 314 + 194 311 351 + 269 297 334 + 268 344 397 + 272 343 396 + 249 314 400 + 250 363 437 + 243 203 224 + 228 347 402 + 283 143 423 + 284 348 403 + 199 281 316 + 201 448 568 + 200 349 404 + 395 350 406 + 394 320 366 + 77 72 365 + 279 352 408 + 269 297 334 + 273 345 398 + 111 162 182 + 159 219 296 + 331 265 298 + 272 343 396 + 194 311 351 + 181 355 411 + 179 204 225 + 195 260 291 + 262 109 413 + 227 356 414 + 223 325 375 + 224 176 416 + 230 321 368 + 231 185 425 + 418 184 417 + 215 115 134 + 191 304 341 + 454 322 369 + 213 295 332 + 221 294 331 + 222 132 419 + 218 346 401 + 220 207 444 + 222 132 419 + 176 225 421 + 322 379 465 + 356 335 387 + 216 291 328 + 217 177 440 + 224 176 416 + 264 269 302 + 213 295 332 + 212 134 418 + 228 347 402 + 232 339 392 + 233 357 424 + 215 115 134 + 214 114 133 + 231 185 425 + 209 273 307 + 208 245 742 + 388 358 426 + 281 359 428 + 211 371 454 + 210 360 429 + 256 136 430 + 254 135 318 + 253 282 317 + 301 332 384 + 312 305 342 + 132 238 373 + 247 362 432 + 248 268 456 + 257 266 433 + 237 319 364 + 258 361 431 + 257 266 433 + 246 284 320 + 251 285 321 + 252 151 436 + 235 170 257 + 234 230 256 + 250 363 437 + 237 319 364 + 236 149 434 + 252 151 436 + 181 355 411 + 180 288 325 + 250 363 437 + 243 203 224 + 239 117 226 + 238 140 438 + 123 153 173 + 349 152 172 + 319 313 355 + 260 270 303 + 261 369 452 + 217 177 440 + 343 364 441 + 287 202 469 + 118 215 442 + 135 240 443 + 141 89 108 + 307 88 107 + 203 259 290 + 265 187 382 + 262 109 413 + 154 234 446 + 326 393 485 + 362 365 447 + 456 366 448 + 455 293 330 + 185 292 329 + 388 358 450 + 208 245 276 + 397 246 277 + 275 326 376 + 274 354 410 + 255 231 258 + 274 354 410 + 181 355 411 + 234 230 256 + 278 351 407 + 198 330 380 + 206 368 451 + 264 269 302 + 263 205 422 + 261 369 452 + 271 296 333 + 270 370 453 + 268 344 397 + 188 278 313 + 205 279 314 + 268 344 397 + 275 326 376 + 273 345 398 + 272 343 396 + 182 337 390 + 198 330 380 + 278 351 407 + 211 371 454 + 281 359 428 + 277 298 335 + 258 361 431 + 237 319 364 + 188 278 313 + 277 298 335 + 281 359 428 + 439 372 455 + 276 327 377 + 278 351 407 + 273 345 398 + 247 362 432 + 447 442 560 + 445 373 457 + 261 369 458 + 263 205 227 + 330 206 228 + 279 352 408 + 206 368 451 + 189 300 337 + 193 272 305 + 209 273 307 + 182 337 390 + 448 375 460 + 259 380 466 + 219 376 461 + 113 222 462 + 128 213 544 + 359 377 463 + 266 116 147 + 353 129 149 + 358 262 293 + 440 378 464 + 441 441 559 + 322 379 465 + 344 208 230 + 284 348 467 + 219 376 461 + 284 348 467 + 283 143 163 + 229 374 459 + 282 142 162 + 344 208 230 + 259 380 466 + 229 374 459 + 283 143 163 + 282 142 162 + 287 202 469 + 343 364 441 + 290 382 470 + 287 202 469 + 289 381 468 + 288 383 471 + 286 220 371 + 288 383 471 + 371 385 473 + 343 364 441 + 285 384 472 + 371 385 473 + 371 385 473 + 293 387 475 + 292 388 476 + 292 388 476 + 291 160 743 + 289 381 468 + 295 389 478 + 298 390 481 + 292 388 479 + 298 390 481 + 297 158 178 + 291 160 482 + 296 159 179 + 436 440 557 + 373 392 484 + 133 179 199 + 300 181 201 + 326 393 485 + 138 138 486 + 363 309 506 + 333 394 487 + 116 218 488 + 315 312 744 + 328 341 394 + 329 342 395 + 316 404 501 + 217 177 489 + 240 217 243 + 332 407 505 + 364 395 491 + 312 305 342 + 311 168 188 + 306 316 360 + 78 84 103 + 140 92 111 + 136 239 268 + 325 146 166 + 299 150 170 + 300 181 201 + 321 324 372 + 320 144 164 + 413 396 493 + 304 397 494 + 303 137 157 + 302 169 189 + 282 142 162 + 320 144 164 + 321 324 372 + 394 320 366 + 396 175 195 + 303 137 157 + 346 398 495 + 317 133 153 + 340 195 215 + 341 328 378 + 342 163 183 + 345 399 496 + 309 401 498 + 310 428 745 + 351 402 499 + 299 150 170 + 327 267 300 + 326 393 485 + 318 178 198 + 316 404 739 + 315 312 353 + 313 403 500 + 317 133 153 + 342 163 183 + 330 206 228 + 313 403 500 + 314 353 409 + 328 341 394 + 315 312 744 + 316 404 501 + 414 186 206 + 360 277 312 + 359 377 463 + 357 261 292 + 359 377 463 + 360 277 312 + 248 268 301 + 438 406 504 + 361 653 741 + 445 373 503 + 442 443 562 + 438 406 504 + 355 127 146 + 356 335 387 + 322 379 465 + 368 310 350 + 369 164 184 + 370 264 295 + 350 243 273 + 349 152 172 + 348 154 174 + 336 141 161 + 339 118 137 + 338 286 322 + 335 145 165 + 334 147 167 + 333 394 487 + 346 398 495 + 345 399 496 + 342 163 183 + 337 287 324 + 307 88 107 + 308 340 393 + 285 384 472 + 345 399 496 + 346 398 495 + 318 178 198 + 319 313 355 + 349 152 172 + 347 183 203 + 348 154 174 + 354 263 294 + 367 189 209 + 364 395 740 + 363 309 348 + 370 264 295 + 369 164 184 + 366 166 186 + 114 155 175 + 113 222 248 + 162 111 130 + 332 407 505 + 333 394 487 + 363 309 506 + 366 166 186 + 338 286 322 + 339 118 137 + 327 267 300 + 361 653 741 + 362 365 447 + 289 381 468 + 291 160 743 + 294 391 507 + 373 392 508 + 372 386 474 + 371 385 473 + 103 408 509 + 102 244 275 + 85 86 105 + 94 209 231 + 102 244 275 + 103 408 509 + 152 228 254 + 153 229 255 + 132 238 267 + 355 127 146 + 392 435 550 + 393 333 385 + 391 410 511 + 310 428 745 + 309 401 498 + 433 412 513 + 388 358 450 + 399 367 449 + 421 413 515 + 389 338 391 + 388 358 426 + 387 414 516 + 386 424 746 + 210 360 429 + 382 336 389 + 389 338 391 + 421 413 515 + 431 417 519 + 385 301 338 + 384 329 379 + 398 418 521 + 395 350 406 + 107 223 405 + 189 300 337 + 383 299 336 + 387 414 516 + 383 299 336 + 385 301 338 + 431 417 519 + 384 329 379 + 198 330 380 + 182 337 390 + 380 224 250 + 381 191 211 + 420 421 524 + 379 422 526 + 110 254 285 + 109 226 252 + 381 191 211 + 374 190 210 + 422 423 527 + 386 424 529 + 392 435 550 + 355 127 146 + 377 103 122 + 376 427 532 + 97 250 281 + 379 422 526 + 375 102 121 + 88 104 123 + 425 426 531 + 377 103 122 + 375 102 121 + 376 427 532 + 374 190 210 + 81 192 212 + 395 350 406 + 309 401 536 + 352 400 533 + 397 246 277 + 396 175 195 + 351 402 535 + 396 175 195 + 394 320 366 + 352 400 533 + 395 350 406 + 398 418 521 + 390 409 537 + 397 246 277 + 310 428 534 + 391 410 538 + 399 367 449 + 391 410 538 + 390 409 537 + 373 392 484 + 436 440 557 + 437 429 540 + 245 216 242 + 252 151 171 + 325 146 166 + 403 172 192 + 401 439 555 + 89 123 142 + 129 194 214 + 417 430 542 + 400 73 92 + 417 430 542 + 129 194 214 + 130 221 247 + 409 431 543 + 207 303 340 + 190 302 339 + 207 303 340 + 409 431 543 + 408 276 310 + 128 213 544 + 416 212 548 + 415 405 502 + 419 432 545 + 232 339 392 + 183 275 309 + 232 339 392 + 419 432 545 + 411 433 546 + 233 357 547 + 411 433 556 + 413 396 493 + 416 212 548 + 378 334 386 + 393 333 385 + 412 318 363 + 413 396 493 + 435 411 512 + 414 186 206 + 415 405 502 + 393 333 385 + 405 317 361 + 412 318 363 + 434 434 549 + 407 307 346 + 410 308 347 + 432 436 552 + 408 276 310 + 430 416 518 + 428 415 517 + 410 308 347 + 386 424 746 + 387 414 516 + 410 308 347 + 418 184 417 + 386 424 746 + 403 172 192 + 402 74 93 + 424 438 554 + 401 439 555 + 423 425 530 + 426 437 553 + 402 74 93 + 400 73 92 + 422 423 527 + 424 438 554 + 422 423 527 + 374 190 210 + 426 437 553 + 423 425 530 + 375 102 121 + 425 426 531 + 424 438 554 + 376 427 532 + 430 416 518 + 384 329 379 + 382 336 389 + 429 419 522 + 432 436 552 + 387 414 516 + 427 420 551 + 434 434 549 + 398 418 521 + 435 411 512 + 399 367 449 + 398 418 521 + 403 172 192 + 425 426 531 + 423 425 530 + 417 430 542 + 420 421 524 + 422 423 527 + 420 421 524 + 417 430 542 + 405 317 541 + 429 419 522 + 431 417 519 + 409 431 543 + 431 417 519 + 430 416 518 + 408 276 310 + 428 415 517 + 421 413 515 + 419 432 545 + 421 413 515 + 433 412 514 + 411 433 546 + 411 433 556 + 433 412 513 + 435 411 512 + 295 389 478 + 293 387 747 + 372 386 539 + 437 429 540 + 436 440 557 + 297 158 178 + 418 184 204 + 414 186 206 + 392 435 550 + 177 227 253 + 443 257 288 + 440 378 558 + 323 125 144 + 322 379 465 + 441 441 559 + 362 365 447 + 361 653 741 + 438 406 504 + 258 361 431 + 270 370 453 + 447 442 560 + 281 359 428 + 280 126 427 + 442 443 561 + 323 125 144 + 438 406 504 + 442 443 562 + 440 378 558 + 443 257 288 + 444 444 563 + 442 443 561 + 445 373 457 + 447 442 560 + 447 442 560 + 270 370 453 + 271 296 333 + 446 258 564 + 441 441 559 + 440 378 464 + 145 232 445 + 362 365 447 + 441 441 559 + 167 253 284 + 166 255 286 + 444 444 563 + 444 444 563 + 166 255 286 + 155 256 287 + 449 446 566 + 458 654 748 + 460 447 567 + 416 212 236 + 426 437 553 + 379 422 526 + 100 196 216 + 452 247 278 + 451 97 116 + 96 68 87 + 101 67 86 + 452 247 278 + 99 105 124 + 90 107 126 + 450 214 238 + 126 193 213 + 83 80 99 + 451 97 116 + 223 325 375 + 454 322 369 + 192 289 326 + 223 325 375 + 267 306 343 + 454 322 369 + 201 448 568 + 184 280 315 + 455 293 330 + 228 347 402 + 218 346 401 + 455 293 330 + 200 349 404 + 457 323 370 + 454 322 369 + 201 448 568 + 456 366 448 + 457 323 370 + 461 450 570 + 478 479 599 + 508 451 571 + 464 453 573 + 484 456 576 + 482 454 574 + 465 455 575 + 486 458 578 + 484 456 576 + 466 457 577 + 488 460 580 + 486 458 578 + 467 459 579 + 490 462 582 + 488 460 580 + 468 461 581 + 492 464 584 + 490 462 582 + 469 463 583 + 494 466 586 + 492 464 584 + 470 465 585 + 496 468 588 + 494 466 586 + 471 467 587 + 498 470 590 + 496 468 588 + 472 469 589 + 500 472 592 + 498 470 590 + 473 471 591 + 502 474 594 + 500 472 592 + 474 473 593 + 504 476 596 + 502 474 594 + 475 475 595 + 506 477 597 + 504 476 596 + 476 449 569 + 508 451 571 + 506 477 597 + 462 478 598 + 480 480 600 + 478 479 599 + 463 452 572 + 482 454 574 + 480 480 600 + 479 481 601 + 477 496 616 + 478 479 599 + 479 481 601 + 480 480 600 + 482 454 574 + 481 482 602 + 482 454 574 + 484 456 576 + 485 484 604 + 483 483 603 + 484 456 576 + 485 484 604 + 486 458 578 + 488 460 580 + 489 486 606 + 487 485 605 + 488 460 580 + 491 487 607 + 489 486 606 + 490 462 582 + 491 487 607 + 492 464 584 + 494 466 586 + 495 489 609 + 493 488 608 + 494 466 586 + 495 489 609 + 496 468 588 + 498 470 590 + 499 491 611 + 497 490 610 + 498 470 590 + 501 492 612 + 499 491 611 + 500 472 592 + 501 492 612 + 502 474 594 + 504 476 596 + 503 493 613 + 504 476 596 + 506 477 597 + 507 495 615 + 505 494 614 + 506 477 597 + 477 496 616 + 507 495 615 + 508 451 571 + 477 496 616 + 479 481 601 + 481 482 602 + 505 494 614 + 507 495 615 + 477 496 616 + 501 492 612 + 503 493 613 + 505 494 614 + 497 490 610 + 499 491 611 + 501 492 612 + 493 488 608 + 495 489 609 + 497 490 610 + 497 490 610 + 491 487 607 + 493 488 608 + 497 490 610 + 489 486 606 + 491 487 607 + 485 484 604 + 487 485 605 + 489 486 606 + 489 486 606 + 483 483 603 + 485 484 604 + 489 486 606 + 481 482 602 + 483 483 603 + 497 490 610 + 477 496 616 + 481 482 602 + 497 490 610 + 505 494 614 + 477 496 616 + 497 490 610 + 501 492 612 + 505 494 614 + 509 498 618 + 526 527 647 + 556 499 619 + 512 501 621 + 532 504 624 + 530 502 622 + 513 503 623 + 534 506 626 + 532 504 624 + 514 505 625 + 536 508 628 + 534 506 626 + 515 507 627 + 538 510 630 + 536 508 628 + 516 509 629 + 540 512 632 + 538 510 630 + 517 511 631 + 542 514 634 + 540 512 632 + 518 513 633 + 544 516 636 + 542 514 634 + 519 515 635 + 546 518 638 + 544 516 636 + 520 517 637 + 548 520 640 + 546 518 638 + 521 519 639 + 550 522 642 + 548 520 640 + 522 521 641 + 552 524 644 + 550 522 642 + 523 523 643 + 554 525 645 + 552 524 644 + 524 497 617 + 556 499 619 + 554 525 645 + 510 526 646 + 528 528 648 + 526 527 647 + 511 500 620 + 530 502 622 + 528 528 648 + 527 529 649 + 525 544 664 + 526 527 647 + 527 529 649 + 528 528 648 + 530 502 622 + 531 531 651 + 529 530 650 + 530 502 622 + 533 532 652 + 531 531 651 + 532 504 624 + 533 532 652 + 534 506 626 + 536 508 628 + 535 533 653 + 536 508 628 + 538 510 630 + 537 534 654 + 538 510 630 + 540 512 632 + 539 535 655 + 540 512 632 + 542 514 634 + 543 537 657 + 541 536 656 + 542 514 634 + 545 538 658 + 543 537 657 + 544 516 636 + 547 539 659 + 545 538 658 + 546 518 638 + 549 540 660 + 547 539 659 + 548 520 640 + 549 540 660 + 550 522 642 + 552 524 644 + 551 541 661 + 552 524 644 + 554 525 645 + 555 543 663 + 553 542 662 + 554 525 645 + 555 543 663 + 556 499 619 + 526 527 647 + 525 544 664 + 527 529 649 + 529 530 650 + 553 542 662 + 555 543 663 + 525 544 664 + 549 540 660 + 551 541 661 + 553 542 662 + 545 538 658 + 547 539 659 + 549 540 660 + 541 536 656 + 543 537 657 + 545 538 658 + 545 538 658 + 539 535 655 + 541 536 656 + 545 538 658 + 537 534 654 + 539 535 655 + 533 532 652 + 535 533 653 + 537 534 654 + 529 530 650 + 531 531 651 + 533 532 652 + 545 538 658 + 525 544 664 + 529 530 650 + 545 538 658 + 553 542 662 + 525 544 664 + 545 538 658 + 549 540 660 + 553 542 662 + 545 538 658 + 533 532 652 + 537 534 654 + 572 546 666 + 564 555 675 + 587 547 667 + 560 549 669 + 558 554 674 + 583 550 670 + 587 547 667 + 564 555 675 + 560 549 669 + 558 554 674 + 564 555 675 + 572 546 666 + 568 556 676 + 589 559 679 + 588 557 677 + 568 556 676 + 572 546 666 + 592 545 665 + 566 553 673 + 588 557 677 + 583 550 670 + 573 562 682 + 578 571 691 + 565 563 683 + 581 565 685 + 582 579 699 + 571 566 686 + 580 568 688 + 581 565 685 + 570 564 684 + 580 568 688 + 569 567 687 + 567 570 690 + 579 569 689 + 567 570 690 + 565 563 683 + 563 573 693 + 577 580 700 + 576 574 694 + 562 572 692 + 576 574 694 + 575 576 696 + 575 576 696 + 574 578 698 + 559 577 697 + 574 578 698 + 573 562 682 + 557 561 681 + 577 580 700 + 563 573 693 + 571 566 686 + 583 550 670 + 588 557 677 + 578 571 691 + 591 560 680 + 592 545 665 + 582 579 699 + 590 558 678 + 591 560 680 + 581 565 685 + 590 558 678 + 580 568 688 + 579 569 689 + 589 559 679 + 579 569 689 + 578 571 691 + 577 580 700 + 587 547 667 + 586 552 672 + 576 574 694 + 586 552 672 + 585 551 671 + 585 551 671 + 584 548 668 + 574 578 698 + 584 548 668 + 583 550 670 + 573 562 682 + 587 547 667 + 577 580 700 + 582 579 699 + 623 582 667 + 600 591 675 + 608 583 666 + 596 585 669 + 620 588 668 + 619 586 670 + 596 585 669 + 600 591 675 + 623 582 667 + 608 583 666 + 600 591 675 + 594 584 674 + 604 593 676 + 602 590 673 + 624 594 677 + 628 581 665 + 608 583 666 + 604 593 676 + 602 590 673 + 594 584 674 + 619 586 670 + 601 598 683 + 614 615 691 + 609 599 682 + 607 601 686 + 618 616 699 + 617 602 685 + 606 600 684 + 617 602 685 + 616 604 688 + 616 604 688 + 615 606 689 + 603 605 690 + 615 606 689 + 614 615 691 + 601 598 683 + 612 608 694 + 613 614 700 + 599 609 693 + 611 611 696 + 612 608 694 + 598 607 692 + 611 611 696 + 597 610 695 + 595 613 697 + 610 612 698 + 595 613 697 + 593 597 681 + 613 614 700 + 618 616 699 + 607 601 686 + 614 615 691 + 624 594 677 + 619 586 670 + 618 616 699 + 628 581 665 + 627 596 680 + 617 602 685 + 627 596 680 + 626 595 678 + 626 595 678 + 625 592 679 + 615 606 689 + 625 592 679 + 624 594 677 + 614 615 691 + 622 589 672 + 623 582 667 + 613 614 700 + 621 587 671 + 622 589 672 + 612 608 694 + 621 587 671 + 611 611 696 + 610 612 698 + 620 588 668 + 610 612 698 + 609 599 682 + 623 582 667 + 628 581 665 + 618 616 699 + 659 618 702 + 636 626 710 + 644 619 703 + 630 621 705 + 632 623 707 + 656 622 706 + 636 626 710 + 659 618 702 + 658 625 709 + 644 619 703 + 636 626 710 + 630 621 705 + 661 629 713 + 640 631 715 + 638 627 711 + 644 619 703 + 640 631 715 + 663 632 716 + 638 627 711 + 630 621 705 + 655 620 704 + 637 634 718 + 650 651 735 + 645 635 719 + 643 637 721 + 654 650 734 + 653 638 722 + 642 636 720 + 653 638 722 + 652 640 724 + 652 640 724 + 651 642 726 + 639 641 725 + 651 642 726 + 650 651 735 + 637 634 718 + 648 644 728 + 649 652 736 + 635 645 729 + 647 647 731 + 648 644 728 + 634 643 727 + 647 647 731 + 633 646 730 + 631 649 733 + 646 648 732 + 631 649 733 + 629 633 717 + 635 645 729 + 649 652 736 + 654 650 734 + 650 651 735 + 660 628 712 + 655 620 704 + 654 650 734 + 664 617 701 + 663 632 716 + 663 632 716 + 662 630 714 + 652 640 724 + 652 640 724 + 662 630 714 + 661 629 713 + 661 629 713 + 660 628 712 + 650 651 735 + 658 625 709 + 659 618 702 + 649 652 736 + 658 625 709 + 648 644 728 + 647 647 731 + 656 622 706 + 657 624 708 + 647 647 731 + 656 622 706 + 646 648 732 + 645 635 719 + 659 618 702 + 664 617 701 + 654 650 734 + } + $verts { + 0.057618 0.066259 -0.053048 1 0 1 + -0.057532 0.066259 -0.053048 1 0 1 + -0.057522 0.066258 0.034533 1 0 1 + 0.057608 0.066258 0.034533 1 0 1 + 0.057618 0.065759 -0.053048 1 0 1 + -0.057532 0.065759 -0.053048 1 0 1 + -0.057522 0.065759 0.034533 1 0 1 + 0.057608 0.065759 0.034533 1 0 1 + 0.057618 0.066009 -0.053048 1 0 1 + -0.057532 0.066009 -0.053048 1 0 1 + -0.057522 0.066009 0.034533 1 0 1 + 0.057608 0.066009 0.034533 1 0 1 + 0.095517 0.03241 0.109455 1 0 1 + 0.095517 0.02031 0.107048 1 0 1 + 0.095517 0.010051 0.100193 1 0 1 + 0.095517 0.003197 0.089935 1 0 1 + 0.095523 0.000011 0.077834 1 0 1 + 0.095517 0.003197 0.065733 1 0 1 + 0.095517 0.010051 0.055475 1 0 1 + 0.095517 0.02031 0.048621 1 0 1 + 0.095517 0.03241 0.046214 1 0 1 + 0.095517 0.044511 0.048621 1 0 1 + 0.095517 0.054769 0.055475 1 0 1 + 0.095517 0.061624 0.065733 1 0 1 + 0.095517 0.064031 0.077834 1 0 1 + 0.095517 0.061624 0.089935 1 0 1 + 0.095517 0.054769 0.100193 1 0 1 + 0.095517 0.044511 0.107048 1 0 1 + 0.111973 0.028035 0.088398 1 0 1 + 0.111973 0.03241 0.089269 1 0 1 + 0.111973 0.024325 0.08592 1 0 1 + 0.111973 0.021847 0.08221 1 0 1 + 0.111973 0.020977 0.077835 1 0 1 + 0.111973 0.021847 0.073459 1 0 1 + 0.111973 0.024325 0.06975 1 0 1 + 0.111973 0.028035 0.067271 1 0 1 + 0.111973 0.03241 0.066401 1 0 1 + 0.111973 0.036786 0.067271 1 0 1 + 0.111973 0.040495 0.069749 1 0 1 + 0.111973 0.042974 0.073459 1 0 1 + 0.111973 0.043844 0.077834 1 0 1 + 0.111973 0.042974 0.08221 1 0 1 + 0.111973 0.040495 0.085919 1 0 1 + 0.111973 0.036786 0.088397 1 0 1 + 0.109433 0.022002 0.102962 1 0 1 + 0.109433 0.032411 0.105033 1 0 1 + 0.109433 0.013178 0.097066 1 0 1 + 0.109433 0.007282 0.088243 1 0 1 + 0.109433 0.005212 0.077834 1 0 1 + 0.109433 0.007282 0.067426 1 0 1 + 0.109433 0.013178 0.058602 1 0 1 + 0.109433 0.022002 0.052706 1 0 1 + 0.109433 0.032411 0.050636 1 0 1 + 0.109433 0.042819 0.052706 1 0 1 + 0.109433 0.051643 0.058602 1 0 1 + 0.109433 0.057539 0.067426 1 0 1 + 0.109433 0.059609 0.077834 1 0 1 + 0.109433 0.057539 0.088243 1 0 1 + 0.109433 0.051643 0.097066 1 0 1 + 0.109433 0.042819 0.102962 1 0 1 + 0.110867 0.03241 0.103049 1 0 1 + 0.110867 0.022761 0.10113 1 0 1 + 0.110867 0.014581 0.095664 1 0 1 + 0.110867 0.04206 0.10113 1 0 1 + 0.110867 0.009115 0.087483 1 0 1 + 0.110867 0.007196 0.077834 1 0 1 + 0.110867 0.009115 0.068185 1 0 1 + 0.110867 0.014581 0.060004 1 0 1 + 0.110867 0.022761 0.054539 1 0 1 + 0.110867 0.03241 0.052619 1 0 1 + 0.110867 0.04206 0.054539 1 0 1 + 0.110867 0.05024 0.060004 1 0 1 + 0.110867 0.055706 0.068185 1 0 1 + 0.110867 0.057625 0.077834 1 0 1 + 0.110867 0.055706 0.087483 1 0 1 + 0.110867 0.05024 0.095664 1 0 1 + 0.112842 0.032413 0.07783 1 0 1 + -0.099505 0.066709 -0.049982 1 0 1 + -0.092664 0.040113 -0.120434 1 0 1 + -0.101124 0.040127 -0.112057 1 0 1 + -0.103063 0.040356 -0.095936 1 0 1 + -0.106123 0.044014 0.010606 1 0 1 + -0.103224 0.042328 0.055065 1 0 1 + -0.102689 0.042629 0.078947 1 0 1 + -0.10057 0.043104 0.111602 1 0 1 + -0.092667 0.028203 -0.120438 1 0 1 + -0.10114 0.028384 -0.112065 1 0 1 + -0.103051 0.028464 -0.096612 1 0 1 + -0.106448 0.027142 0.010606 1 0 1 + -0.103279 0.029544 0.055076 1 0 1 + -0.10247 0.030137 0.07871 1 0 1 + -0.101201 0.03018 0.111521 1 0 1 + -0.100893 0.065342 -0.049982 1 0 1 + -0.105104 0.040263 -0.097323 1 0 1 + -0.094966 0.039844 -0.122877 1 0 1 + -0.103285 0.039957 -0.114173 1 0 1 + -0.102396 0.030338 0.11175 1 0 1 + -0.108119 0.043622 0.010606 1 0 1 + -0.105273 0.042244 0.056535 1 0 1 + -0.104726 0.029991 0.080962 1 0 1 + -0.104716 0.042558 0.080953 1 0 1 + -0.102383 0.04268 0.111798 1 0 1 + -0.094966 0.028433 -0.122884 1 0 1 + -0.103285 0.028502 -0.11418 1 0 1 + -0.105102 0.028509 -0.098019 1 0 1 + -0.108361 0.027864 0.010606 1 0 1 + -0.10528 0.029568 0.05654 1 0 1 + -0.099722 0.068081 0.010606 1 0 1 + -0.101317 0.066803 0.010606 1 0 1 + -0.098967 0.000309 0.010272 1 0 1 + -0.102688 0.004293 0.010272 1 0 1 + -0.092993 0.043248 0.121945 1 0 1 + -0.098171 0.043262 0.117525 1 0 1 + -0.096924 0.000325 0.09985 1 0 1 + -0.098325 0.001225 0.099219 1 0 1 + -0.098284 0.03018 0.117724 1 0 1 + -0.09299 0.030127 0.12194 1 0 1 + -0.097654 0.067701 0.103994 1 0 1 + -0.096254 0.068358 0.105953 1 0 1 + -0.097983 0.055586 0.11551 1 0 1 + -0.096249 0.057358 0.115783 1 0 1 + -0.097585 0.019191 0.11697 1 0 1 + -0.095784 0.017603 0.117453 1 0 1 + -0.0966 0.00659 0.111582 1 0 1 + -0.096703 0.005482 0.109745 1 0 1 + -0.097853 0.007264 0.110502 1 0 1 + -0.098338 0.064158 0.077262 1 0 1 + -0.099204 0.001264 0.060851 1 0 1 + -0.097837 0.000102 0.061159 1 0 1 + -0.099385 0.061132 0.055253 1 0 1 + -0.096662 0.062638 0.054868 1 0 1 + -0.099204 0.060941 -0.094643 1 0 1 + -0.097741 0.062194 -0.094804 1 0 1 + -0.097694 0.005295 -0.098186 1 0 1 + -0.09916 0.006544 -0.097947 1 0 1 + -0.082317 0.052785 -0.121687 1 0 1 + -0.080766 0.050312 -0.122122 1 0 1 + -0.080762 0.013689 -0.12203 1 0 1 + -0.080788 0.028208 -0.123425 1 0 1 + -0.080778 0.040109 -0.123334 1 0 1 + -0.089464 0.055244 -0.120417 1 0 1 + -0.087706 0.056501 -0.120418 1 0 1 + -0.085467 0.010367 -0.120859 1 0 1 + -0.08943 0.010724 -0.120417 1 0 1 + -0.099494 0.00431 -0.087377 1 0 1 + -0.097836 0.000325 -0.088269 1 0 1 + -0.095943 0.059814 -0.111905 1 0 1 + -0.097559 0.058552 -0.111904 1 0 1 + -0.097537 0.00792 -0.111904 1 0 1 + -0.095931 0.006672 -0.111905 1 0 1 + -0.100235 0.063 -0.079921 1 0 1 + -0.098348 0.064525 -0.079425 1 0 1 + -0.099155 0.061809 -0.080035 1 0 1 + -0.097925 0.063007 -0.079999 1 0 1 + -0.098144 0.004765 -0.091061 1 0 1 + -0.099296 0.006404 -0.090056 1 0 1 + -0.099169 0.030113 0.119725 1 0 1 + -0.094812 0.030104 0.124079 1 0 1 + -0.082815 0.039887 -0.1255 1 0 1 + -0.094953 0.042814 0.124362 1 0 1 + -0.099435 0.042619 0.119885 1 0 1 + -0.082818 0.028319 -0.125528 1 0 1 + -0.096842 0.005482 0.103617 1 0 1 + -0.098341 0.006759 0.103094 1 0 1 + -0.105205 0.028588 -0.082005 1 0 1 + -0.106841 0.026819 -0.082005 1 0 1 + -0.103264 0.028642 -0.082005 1 0 1 + -0.10496 0.026622 -0.082005 1 0 1 + -0.105462 0.040198 -0.082005 1 0 1 + -0.107098 0.042432 -0.082005 1 0 1 + -0.103232 0.040529 -0.082005 1 0 1 + -0.104948 0.042684 -0.082005 1 0 1 + -0.10547 0.043284 -0.049982 1 0 1 + -0.105788 0.026669 -0.049982 1 0 1 + -0.107566 0.0428 -0.049982 1 0 1 + -0.107644 0.027074 -0.049982 1 0 1 + -0.098309 0.000126 -0.05019 1 0 1 + -0.101952 0.004303 -0.050221 1 0 1 + 0.099932 0.066668 -0.049982 1 0 1 + 0.092664 0.040113 -0.120434 1 0 1 + 0.101124 0.040127 -0.112057 1 0 1 + 0.103063 0.040356 -0.095936 1 0 1 + 0.105897 0.044183 0.010606 1 0 1 + 0.103224 0.042235 0.055071 1 0 1 + 0.102689 0.042629 0.078947 1 0 1 + 0.100532 0.043124 0.112406 1 0 1 + 0.092667 0.028203 -0.120438 1 0 1 + 0.10114 0.028384 -0.112065 1 0 1 + 0.103051 0.028464 -0.096612 1 0 1 + 0.106204 0.027107 0.010606 1 0 1 + 0.103279 0.029703 0.055076 1 0 1 + 0.102704 0.029918 0.078961 1 0 1 + 0.100748 0.030054 0.112741 1 0 1 + 0.101027 0.065064 -0.049982 1 0 1 + 0.105104 0.040263 -0.097323 1 0 1 + 0.094966 0.039844 -0.122877 1 0 1 + 0.103285 0.039957 -0.114173 1 0 1 + 0.101686 0.030013 0.114107 1 0 1 + 0.108215 0.043443 0.010606 1 0 1 + 0.105273 0.042317 0.056531 1 0 1 + 0.104713 0.029928 0.08096 1 0 1 + 0.104716 0.042558 0.080953 1 0 1 + 0.101995 0.042673 0.114196 1 0 1 + 0.094966 0.028433 -0.122884 1 0 1 + 0.103285 0.028502 -0.11418 1 0 1 + 0.105102 0.028509 -0.098019 1 0 1 + 0.10783 0.02723 0.010606 1 0 1 + 0.10528 0.029728 0.05654 1 0 1 + 0.100517 0.068305 0.010606 1 0 1 + 0.101557 0.066974 0.010606 1 0 1 + 0.098967 0.000309 0.010272 1 0 1 + 0.102738 0.004798 0.010272 1 0 1 + 0.092993 0.043248 0.121945 1 0 1 + 0.097367 0.0432 0.119055 1 0 1 + 0.096924 0.000325 0.09985 1 0 1 + 0.098325 0.001225 0.099219 1 0 1 + 0.09704 0.030014 0.11912 1 0 1 + 0.09299 0.030127 0.12194 1 0 1 + 0.097663 0.067662 0.103917 1 0 1 + 0.074095 0.069115 0.101023 1 0 1 + 0.096219 0.068328 0.106008 1 0 1 + 0.097983 0.055586 0.11551 1 0 1 + 0.096249 0.057358 0.115783 1 0 1 + 0.097585 0.019191 0.11697 1 0 1 + 0.095784 0.017603 0.117453 1 0 1 + 0.0966 0.00659 0.111582 1 0 1 + 0.096703 0.005482 0.109745 1 0 1 + 0.097853 0.007264 0.110502 1 0 1 + 0.09854 0.064083 0.078736 1 0 1 + 0.074358 0.066681 0.083519 1 0 1 + 0.099204 0.001264 0.060851 1 0 1 + 0.097837 0.000102 0.061159 1 0 1 + 0.099524 0.060852 0.055595 1 0 1 + 0.097629 0.062404 0.056351 1 0 1 + 0.099204 0.060941 -0.094643 1 0 1 + 0.097741 0.062194 -0.094804 1 0 1 + 0.096651 0.005444 -0.097466 1 0 1 + 0.098671 0.006659 -0.097507 1 0 1 + 0.082317 0.052785 -0.121687 1 0 1 + 0.080766 0.050312 -0.122122 1 0 1 + 0.080638 0.013655 -0.122036 1 0 1 + 0.080788 0.028208 -0.123425 1 0 1 + 0.080778 0.040109 -0.123334 1 0 1 + 0.089464 0.055244 -0.120417 1 0 1 + 0.087706 0.056501 -0.120418 1 0 1 + 0.085407 0.010785 -0.121038 1 0 1 + 0.088918 0.011306 -0.120239 1 0 1 + 0.099352 0.004815 -0.087377 1 0 1 + 0.097836 0.000325 -0.088269 1 0 1 + 0.095943 0.059814 -0.111905 1 0 1 + 0.097559 0.058552 -0.111904 1 0 1 + 0.096854 0.008093 -0.111674 1 0 1 + 0.095069 0.006915 -0.111414 1 0 1 + 0.10035 0.063606 -0.079384 1 0 1 + 0.098107 0.065296 -0.078996 1 0 1 + 0.099717 0.062179 -0.080064 1 0 1 + 0.096894 0.063073 -0.079626 1 0 1 + 0.098398 0.004093 -0.089969 1 0 1 + 0.099352 0.005387 -0.089143 1 0 1 + 0.038973 0.069107 0.101034 1 0 1 + 0.098641 0.030127 0.120371 1 0 1 + 0.093983 0.03038 0.12492 1 0 1 + 0.082815 0.039887 -0.1255 1 0 1 + 0.093983 0.043048 0.124914 1 0 1 + 0.098787 0.043073 0.120473 1 0 1 + 0.082818 0.028319 -0.125528 1 0 1 + 0.096842 0.005482 0.103617 1 0 1 + 0.098341 0.006759 0.103094 1 0 1 + 0.104602 0.028857 -0.082021 1 0 1 + 0.107037 0.026609 -0.082021 1 0 1 + 0.103624 0.027881 -0.082021 1 0 1 + 0.104964 0.026215 -0.082021 1 0 1 + 0.105461 0.040198 -0.081958 1 0 1 + 0.107171 0.042335 -0.082021 1 0 1 + 0.10325 0.040493 -0.081958 1 0 1 + 0.104971 0.042876 -0.082021 1 0 1 + 0.105344 0.043442 -0.049982 1 0 1 + 0.10556 0.026589 -0.049982 1 0 1 + 0.107603 0.042845 -0.049982 1 0 1 + 0.107565 0.026969 -0.049982 1 0 1 + 0.098309 0.000126 -0.05019 1 0 1 + 0.102002 0.004809 -0.050225 1 0 1 + 0.029527 0.065693 0.078989 1 0 1 + 0.09684 0.065125 0.077617 1 0 1 + 0.095774 0.069007 0.103121 1 0 1 + -0.029869 0.065796 0.078825 1 0 1 + -0.096641 0.065211 0.077284 1 0 1 + -0.095505 0.069006 0.101987 1 0 1 + -0.084591 0.066599 0.083829 1 0 1 + -0.084203 0.069079 0.100077 1 0 1 + -0.049014 0.068989 0.100099 1 0 1 + -0.083116 0.06794 0.098553 1 0 1 + -0.050091 0.068843 0.098784 1 0 1 + -0.050287 0.066821 0.085134 1 0 1 + -0.0835 0.066083 0.085812 1 0 1 + -0.050735 0.056297 0.087297 1 0 1 + -0.083088 0.056335 0.087447 1 0 1 + -0.08271 0.058241 0.099985 1 0 1 + -0.050554 0.05828 0.100336 1 0 1 + 0.02216 0.004997 -0.09962 1 0 1 + -0.022635 0.004997 -0.099611 1 0 1 + -0.057908 0.06381 -0.079553 1 0 1 + 0.057457 0.063844 -0.079545 1 0 1 + 0.057221 0.065952 -0.078646 1 0 1 + -0.057444 0.065883 -0.079035 1 0 1 + -0.028748 0.060079 -0.112239 1 0 1 + 0.028372 0.060109 -0.112087 1 0 1 + -0.026422 0.056539 -0.122364 1 0 1 + 0.026089 0.056539 -0.122368 1 0 1 + -0.05671 0.064395 0.010606 1 0 1 + 0.056796 0.06551 0.010606 1 0 1 + 0.029419 0.062616 -0.095567 1 0 1 + -0.028092 0.062641 -0.095221 1 0 1 + 0.013104 0.043333 0.126069 1 0 1 + -0.013098 0.043334 0.126069 1 0 1 + -0.013096 0.030028 0.12602 1 0 1 + 0.013102 0.030028 0.12602 1 0 1 + 0.020805 0.056853 0.119632 1 0 1 + 0.013099 0.017542 0.121192 1 0 1 + -0.013093 0.017542 0.121192 1 0 1 + 0.056509 0.06302 0.056472 1 0 1 + -0.056513 0.063009 0.05629 1 0 1 + -0.022619 0.000024 -0.05019 1 0 1 + 0.022619 0.000024 -0.05019 1 0 1 + -0.018485 0.006509 -0.11194 1 0 1 + 0.017995 0.006509 -0.11194 1 0 1 + -0.02262 0.004805 -0.09595 1 0 1 + 0.02262 0.004805 -0.09595 1 0 1 + -0.013094 0.030286 0.128834 1 0 1 + 0.0131 0.030287 0.128834 1 0 1 + 0.0131 0.043111 0.128807 1 0 1 + -0.013094 0.043111 0.128807 1 0 1 + 0.016332 0.013663 -0.124721 1 0 1 + -0.016737 0.013662 -0.124716 1 0 1 + -0.017027 0.011161 -0.124183 1 0 1 + 0.016608 0.011164 -0.124189 1 0 1 + 0.024605 0.052955 -0.12429 1 0 1 + -0.024918 0.052955 -0.124286 1 0 1 + -0.024481 0.050419 -0.124733 1 0 1 + 0.024177 0.050419 -0.124736 1 0 1 + 0.033632 0.068808 0.109193 1 0 1 + -0.034171 0.068695 0.109504 1 0 1 + -0.020191 0.057227 0.119494 1 0 1 + -0.034763 0.069324 0.106329 1 0 1 + 0.033962 0.069594 0.10761 1 0 1 + -0.020437 0.058635 0.117394 1 0 1 + 0.020406 0.058742 0.116556 1 0 1 + 0.011937 0.005363 0.109771 1 0 1 + -0.011931 0.005363 0.109771 1 0 1 + -0.011931 0.006456 0.111785 1 0 1 + 0.011937 0.006456 0.111785 1 0 1 + 0.056796 0.064655 -0.052423 1 0 1 + -0.05671 0.064655 -0.052423 1 0 1 + 0.011938 0.004998 0.106594 1 0 1 + -0.011932 0.004998 0.106594 1 0 1 + 0.022619 -0 0.010272 1 0 1 + -0.022619 -0 0.010272 1 0 1 + -0.011932 0.000242 0.102783 1 0 1 + 0.011938 0.000242 0.102783 1 0 1 + -0.022619 -0 0.062547 1 0 1 + 0.022619 -0 0.062547 1 0 1 + 0.022619 0.000325 -0.093358 1 0 1 + -0.022619 0.000325 -0.093358 1 0 1 + -0.01674 0.028107 -0.126153 1 0 1 + 0.016335 0.028113 -0.126162 1 0 1 + 0.024177 0.040164 -0.125958 1 0 1 + -0.024481 0.040163 -0.125955 1 0 1 + 0.016556 0.028198 -0.128141 1 0 1 + -0.016973 0.028194 -0.128127 1 0 1 + -0.016973 0.040011 -0.128141 1 0 1 + 0.016556 0.040006 -0.128154 1 0 1 + -0.049243 0.066582 0.083831 1 0 1 + -0.059483 0.066123 0.086832 1 0 1 + -0.073664 0.066111 0.086837 1 0 1 + -0.105648 0.044302 0.034586 1 0 1 + -0.106036 0.02734 0.034586 1 0 1 + -0.10765 0.043854 0.034586 1 0 1 + -0.107743 0.028077 0.034586 1 0 1 + -0.098445 0.000145 0.034221 1 0 1 + -0.101958 0.004042 0.034221 1 0 1 + -0.099963 0.065673 0.034586 1 0 1 + -0.101251 0.064252 0.034586 1 0 1 + 0.105375 0.04447 0.034586 1 0 1 + 0.105655 0.027321 0.034586 1 0 1 + 0.107521 0.043953 0.034586 1 0 1 + 0.107523 0.027648 0.034586 1 0 1 + 0.098445 0.000145 0.034221 1 0 1 + 0.102347 0.004765 0.034221 1 0 1 + 0.099726 0.066334 0.034586 1 0 1 + 0.10099 0.065056 0.034586 1 0 1 + -0.0567 0.064248 0.033907 1 0 1 + 0.056786 0.064247 0.033907 1 0 1 + 0.022619 -0 0.034221 1 0 1 + -0.022619 -0 0.034221 1 0 1 + -0.057415 0.067682 -0.052947 1 0 1 + -0.057356 0.069427 0.010606 1 0 1 + 0.057168 0.067647 -0.052947 1 0 1 + 0.057221 0.069671 0.010606 1 0 1 + -0.057408 0.067633 0.034586 1 0 1 + 0.057231 0.067622 0.034586 1 0 1 + -0.103377 0.042211 0.049187 1 0 1 + -0.103394 0.029541 0.048024 1 0 1 + -0.105531 0.042076 0.049317 1 0 1 + -0.105485 0.02967 0.04817 1 0 1 + -0.099321 0.001436 0.047915 1 0 1 + -0.098013 0.063048 0.050536 1 0 1 + 0.104116 0.041731 0.049506 1 0 1 + 0.103453 0.029627 0.047162 1 0 1 + 0.105286 0.041986 0.048981 1 0 1 + 0.105593 0.029661 0.047781 1 0 1 + 0.09879 0.001187 0.047696 1 0 1 + 0.098014 0.063049 0.050536 1 0 1 + -0.056897 0.063803 0.050536 1 0 1 + 0.056735 0.063803 0.050536 1 0 1 + 0.022619 -0 0.048187 1 0 1 + -0.022619 -0 0.048187 1 0 1 + -0.097979 0.000245 0.047288 1 0 1 + -0.099365 0.061784 0.050887 1 0 1 + 0.098003 0.000099 0.047898 1 0 1 + 0.099385 0.061852 0.050536 1 0 1 + -0.099966 0.063909 0.049999 1 0 1 + 0.100451 0.063846 0.049993 1 0 1 + -0.104925 0.04446 0.049252 1 0 1 + -0.105263 0.027493 0.047292 1 0 1 + -0.107058 0.044008 0.049168 1 0 1 + -0.107128 0.027833 0.047328 1 0 1 + -0.101496 0.004292 0.047555 1 0 1 + -0.0982 0.064851 0.049936 1 0 1 + 0.104424 0.043722 0.049365 1 0 1 + 0.104788 0.027633 0.047533 1 0 1 + 0.107052 0.043983 0.049252 1 0 1 + 0.106974 0.028014 0.047648 1 0 1 + 0.101466 0.004173 0.047716 1 0 1 + 0.098521 0.065294 0.050243 1 0 1 + -0.057444 0.0661 0.05002 1 0 1 + 0.056376 0.065928 0.050331 1 0 1 + -0.073762 0.056507 0.088609 1 0 1 + -0.060063 0.056501 0.088607 1 0 1 + 0.022619 0.000226 -0.079772 1 0 1 + 0.101619 0.004814 -0.08011 1 0 1 + -0.09794 0.000281 -0.079776 1 0 1 + -0.022619 0.000226 -0.079772 1 0 1 + 0.09794 0.000281 -0.079776 1 0 1 + -0.101569 0.004308 -0.080073 1 0 1 + -0.099494 0.004308 -0.08064 1 0 1 + 0.097932 0.000285 -0.080447 1 0 1 + -0.097932 0.000285 -0.080447 1 0 1 + 0.099352 0.004814 -0.080664 1 0 1 + 0.039036 0.066668 0.08349 1 0 1 + 0.039036 0.066809 0.083507 1 0 1 + -0.101787 0.030178 0.096252 1 0 1 + -0.101629 0.042866 0.095275 1 0 1 + -0.104176 0.042753 0.096378 1 0 1 + -0.104181 0.030041 0.096467 1 0 1 + 0.102072 0.030087 0.097389 1 0 1 + 0.101859 0.042431 0.095646 1 0 1 + 0.10415 0.042616 0.097575 1 0 1 + 0.103938 0.030103 0.097628 1 0 1 + 0.038973 0.069248 0.101051 1 0 1 + 0.074358 0.066822 0.083537 1 0 1 + 0.074095 0.069256 0.101041 1 0 1 + 0.076404 0.066402 -0.023983 1 0 1 + 0.078906 0.066402 -0.026125 1 0 1 + 0.080396 0.066402 -0.029062 1 0 1 + 0.08065 0.066402 -0.032345 1 0 1 + 0.079628 0.066402 -0.035476 1 0 1 + 0.077485 0.066402 -0.037977 1 0 1 + 0.074549 0.066402 -0.039468 1 0 1 + 0.071265 0.066402 -0.039721 1 0 1 + 0.068134 0.066402 -0.038699 1 0 1 + 0.065633 0.066402 -0.036557 1 0 1 + 0.064143 0.066402 -0.03362 1 0 1 + 0.063889 0.066402 -0.030337 1 0 1 + 0.064911 0.066402 -0.027206 1 0 1 + 0.067054 0.066402 -0.024705 1 0 1 + 0.06999 0.066402 -0.023214 1 0 1 + 0.073274 0.066402 -0.022961 1 0 1 + 0.076137 0.069914 -0.024459 1 2 1 + 0.076404 0.069379 -0.023983 1 2 1 + 0.078477 0.069914 -0.026463 1 2 1 + 0.078906 0.069379 -0.026125 1 2 1 + 0.079871 0.069914 -0.029209 1 2 1 + 0.080396 0.069379 -0.029062 1 2 1 + 0.080108 0.069914 -0.032281 1 2 1 + 0.08065 0.069379 -0.032345 1 2 1 + 0.079152 0.069915 -0.035209 1 2 1 + 0.079628 0.069379 -0.035476 1 2 1 + 0.077148 0.069915 -0.037548 1 2 1 + 0.077485 0.069379 -0.037977 1 2 1 + 0.074401 0.069915 -0.038942 1 2 1 + 0.074549 0.069379 -0.039468 1 2 1 + 0.07133 0.069915 -0.03918 1 2 1 + 0.071265 0.069379 -0.039721 1 2 1 + 0.068402 0.069915 -0.038223 1 2 1 + 0.068134 0.069379 -0.038699 1 2 1 + 0.066062 0.069915 -0.036219 1 2 1 + 0.065633 0.069379 -0.036557 1 2 1 + 0.064668 0.069914 -0.033473 1 2 1 + 0.064143 0.069379 -0.03362 1 2 1 + 0.064431 0.069914 -0.030402 1 2 1 + 0.063889 0.069379 -0.030337 1 2 1 + 0.065387 0.069914 -0.027473 1 2 1 + 0.064911 0.069379 -0.027206 1 2 1 + 0.067391 0.069914 -0.025134 1 2 1 + 0.067054 0.069379 -0.024705 1 2 1 + 0.070138 0.069914 -0.02374 1 2 1 + 0.06999 0.069379 -0.023214 1 2 1 + 0.073209 0.069914 -0.023502 1 2 1 + 0.073274 0.069379 -0.022961 1 2 1 + 0.071912 0.067354 0.023795 1 0 1 + 0.074194 0.067354 0.023341 1 0 1 + 0.076129 0.067354 0.022048 1 0 1 + 0.077421 0.067354 0.020114 1 0 1 + 0.077875 0.067354 0.017832 1 0 1 + 0.077421 0.067354 0.01555 1 0 1 + 0.076129 0.067354 0.013615 1 0 1 + 0.074194 0.067354 0.012322 1 0 1 + 0.071912 0.067354 0.011868 1 0 1 + 0.06963 0.067354 0.012322 1 0 1 + 0.067695 0.067354 0.013615 1 0 1 + 0.066403 0.067354 0.01555 1 0 1 + 0.065949 0.067354 0.017832 1 0 1 + 0.066403 0.067354 0.020114 1 0 1 + 0.067695 0.067354 0.022048 1 0 1 + 0.06963 0.067354 0.023341 1 0 1 + 0.071912 0.070342 0.023409 1 1 1 + 0.071912 0.069964 0.023795 1 1 1 + 0.074046 0.070342 0.022985 1 1 1 + 0.074194 0.069964 0.023341 1 1 1 + 0.075856 0.070342 0.021776 1 1 1 + 0.076129 0.069964 0.022048 1 1 1 + 0.077065 0.070342 0.019966 1 1 1 + 0.077421 0.069964 0.020114 1 1 1 + 0.07749 0.070342 0.017832 1 1 1 + 0.077875 0.069964 0.017832 1 1 1 + 0.077065 0.070342 0.015697 1 1 1 + 0.077421 0.069964 0.01555 1 1 1 + 0.075856 0.070342 0.013888 1 1 1 + 0.076129 0.069964 0.013615 1 1 1 + 0.074046 0.070342 0.012678 1 1 1 + 0.074194 0.069964 0.012322 1 1 1 + 0.071912 0.070342 0.012254 1 1 1 + 0.071912 0.069964 0.011868 1 1 1 + 0.069777 0.070342 0.012678 1 1 1 + 0.06963 0.069964 0.012322 1 1 1 + 0.067968 0.070342 0.013888 1 1 1 + 0.067695 0.069964 0.013615 1 1 1 + 0.066759 0.070342 0.015697 1 1 1 + 0.066403 0.069964 0.01555 1 1 1 + 0.066334 0.070342 0.017832 1 1 1 + 0.065949 0.069964 0.017832 1 1 1 + 0.066759 0.070342 0.019966 1 1 1 + 0.066403 0.069964 0.020114 1 1 1 + 0.067968 0.070342 0.021776 1 1 1 + 0.067695 0.069964 0.022048 1 1 1 + 0.069777 0.070342 0.022985 1 1 1 + 0.06963 0.069964 0.023341 1 1 1 + 0.04023 0.065257 -0.064431 1 0 1 + 0.037732 0.068121 -0.065001 1 0 1 + 0.042336 0.065257 -0.065863 1 0 1 + 0.039521 0.068121 -0.067295 1 0 1 + 0.042719 0.065257 -0.067295 1 0 1 + 0.042336 0.065257 -0.068727 1 0 1 + 0.04023 0.065257 -0.07016 1 0 1 + 0.037732 0.068121 -0.069589 1 0 1 + 0.015145 0.065257 -0.064431 1 0 1 + 0.017643 0.068121 -0.065001 1 0 1 + 0.013039 0.065257 -0.065863 1 0 1 + 0.015854 0.068121 -0.067295 1 0 1 + 0.012656 0.065257 -0.067295 1 0 1 + 0.013039 0.065257 -0.068727 1 0 1 + 0.015145 0.065257 -0.07016 1 0 1 + 0.017643 0.068121 -0.069589 1 0 1 + 0.040002 0.067119 -0.064483 1 0 1 + 0.04207 0.067119 -0.065889 1 0 1 + 0.042447 0.067119 -0.067295 1 0 1 + 0.04207 0.067119 -0.068702 1 0 1 + 0.040002 0.067119 -0.070108 1 0 1 + 0.015373 0.067119 -0.064483 1 0 1 + 0.013305 0.067119 -0.065889 1 0 1 + 0.012928 0.067119 -0.067295 1 0 1 + 0.013305 0.067119 -0.068702 1 0 1 + 0.015373 0.067119 -0.070108 1 0 1 + 0.039122 0.06772 -0.064684 1 0 1 + 0.041063 0.06772 -0.066219 1 0 1 + 0.041352 0.06772 -0.067295 1 0 1 + 0.041063 0.06772 -0.068372 1 0 1 + 0.039122 0.06772 -0.069907 1 0 1 + 0.016252 0.06772 -0.064684 1 0 1 + 0.014312 0.06772 -0.066219 1 0 1 + 0.014023 0.06772 -0.067295 1 0 1 + 0.014312 0.06772 -0.068372 1 0 1 + 0.016252 0.06772 -0.069907 1 0 1 + -0.04023 0.065257 -0.064431 1 0 1 + -0.037732 0.068121 -0.065001 1 0 1 + -0.042336 0.065257 -0.065863 1 0 1 + -0.039521 0.068121 -0.067295 1 0 1 + -0.042719 0.065257 -0.067295 1 0 1 + -0.042336 0.065257 -0.068727 1 0 1 + -0.04023 0.065257 -0.07016 1 0 1 + -0.037732 0.068121 -0.069589 1 0 1 + -0.015145 0.065257 -0.064431 1 0 1 + -0.017643 0.068121 -0.065001 1 0 1 + -0.013039 0.065257 -0.065863 1 0 1 + -0.015854 0.068121 -0.067295 1 0 1 + -0.012656 0.065257 -0.067295 1 0 1 + -0.013039 0.065257 -0.068727 1 0 1 + -0.015145 0.065257 -0.07016 1 0 1 + -0.017643 0.068121 -0.069589 1 0 1 + -0.040002 0.067119 -0.064483 1 0 1 + -0.04207 0.067119 -0.065889 1 0 1 + -0.042447 0.067119 -0.067295 1 0 1 + -0.04207 0.067119 -0.068702 1 0 1 + -0.040002 0.067119 -0.070108 1 0 1 + -0.015373 0.067119 -0.064483 1 0 1 + -0.013305 0.067119 -0.065889 1 0 1 + -0.012928 0.067119 -0.067295 1 0 1 + -0.013305 0.067119 -0.068702 1 0 1 + -0.015373 0.067119 -0.070108 1 0 1 + -0.039122 0.06772 -0.064684 1 0 1 + -0.041063 0.06772 -0.066219 1 0 1 + -0.041352 0.06772 -0.067295 1 0 1 + -0.041063 0.06772 -0.068372 1 0 1 + -0.039122 0.06772 -0.069907 1 0 1 + -0.016252 0.06772 -0.064684 1 0 1 + -0.014312 0.06772 -0.066219 1 0 1 + -0.014023 0.06772 -0.067295 1 0 1 + -0.014312 0.06772 -0.068372 1 0 1 + -0.016252 0.06772 -0.069907 1 0 1 + 0.071964 0.065257 -0.063871 1 0 1 + 0.073029 0.068121 -0.064553 1 0 1 + 0.070115 0.065257 -0.065863 1 0 1 + 0.072266 0.068121 -0.067295 1 0 1 + 0.069927 0.065257 -0.067295 1 0 1 + 0.070115 0.065257 -0.068727 1 0 1 + 0.071964 0.065257 -0.070719 1 0 1 + 0.073029 0.068121 -0.070037 1 0 1 + 0.082661 0.065257 -0.063871 1 0 1 + 0.081595 0.068121 -0.064553 1 0 1 + 0.084509 0.065257 -0.065863 1 0 1 + 0.082358 0.068121 -0.067295 1 0 1 + 0.084698 0.065257 -0.067295 1 0 1 + 0.084509 0.065257 -0.068727 1 0 1 + 0.082661 0.065257 -0.070719 1 0 1 + 0.081595 0.068121 -0.070037 1 0 1 + 0.072061 0.067119 -0.063933 1 0 1 + 0.070246 0.067119 -0.065889 1 0 1 + 0.070061 0.067119 -0.067295 1 0 1 + 0.070246 0.067119 -0.068702 1 0 1 + 0.072061 0.067119 -0.070657 1 0 1 + 0.082564 0.067119 -0.063933 1 0 1 + 0.084379 0.067119 -0.065889 1 0 1 + 0.084564 0.067119 -0.067295 1 0 1 + 0.084379 0.067119 -0.068702 1 0 1 + 0.082564 0.067119 -0.070657 1 0 1 + 0.072436 0.06772 -0.064174 1 0 1 + 0.070741 0.06772 -0.066219 1 0 1 + 0.070599 0.06772 -0.067295 1 0 1 + 0.070741 0.06772 -0.068372 1 0 1 + 0.072436 0.06772 -0.070417 1 0 1 + 0.082189 0.06772 -0.064174 1 0 1 + 0.083884 0.06772 -0.066219 1 0 1 + 0.084026 0.06772 -0.067295 1 0 1 + 0.083884 0.06772 -0.068372 1 0 1 + 0.082189 0.06772 -0.070417 1 0 1 + } + $texCoords { + 0.00249 0.99751 + 0.00258 0.24072 + 0.99751 0.99751 + 0.99743 0.24072 + 0.95674 0.88715 + 0.92921 0.88715 + 0.95674 0.8651 + 0.20703 0.66412 + 0.18331 0.65427 + 0.21172 0.65711 + 0.24345 0.70448 + 0.23516 0.70614 + 0.23229 0.67764 + 0.24349 0.73354 + 0.23519 0.73191 + 0.2324 0.76049 + 0.22534 0.75579 + 0.21177 0.78118 + 0.20704 0.77411 + 0.18477 0.79238 + 0.18313 0.78404 + 0.15554 0.79234 + 0.15722 0.784 + 0.12854 0.78113 + 0.13328 0.77407 + 0.10791 0.76038 + 0.11502 0.75568 + 0.10523 0.73167 + 0.09688 0.73327 + 0.10543 0.70581 + 0.09713 0.70408 + 0.1155 0.68203 + 0.1085 0.67727 + 0.13806 0.69728 + 0.14882 0.68661 + 0.13381 0.66392 + 0.12918 0.65687 + 0.95674 0.93125 + 0.92921 0.93125 + 0.95674 0.9092 + 0.95674 0.9533 + 0.92921 0.9533 + 0.95674 0.97535 + 0.92921 0.97535 + 0.95674 0.9975 + 0.92921 0.9975 + 0.95674 0.64449 + 0.95674 0.66664 + 0.92921 0.64449 + 0.95674 0.68869 + 0.92921 0.66664 + 0.95674 0.71075 + 0.92921 0.68869 + 0.95674 0.7328 + 0.92921 0.71075 + 0.95674 0.75485 + 0.92921 0.7328 + 0.95674 0.7769 + 0.92921 0.75485 + 0.95674 0.79895 + 0.92921 0.7769 + 0.95674 0.821 + 0.92921 0.79895 + 0.95674 0.84305 + 0.92921 0.84305 + 0.92921 0.8651 + 0.22526 0.68234 + 0.17793 0.68092 + 0.19189 0.68672 + 0.2026 0.69743 + 0.20842 0.71142 + 0.20843 0.72657 + 0.20264 0.7406 + 0.1919 0.75136 + 0.17785 0.75719 + 0.16264 0.75718 + 0.14858 0.75134 + 0.13785 0.74054 + 0.13209 0.72645 + 0.13218 0.71125 + 0.15603 0.64595 + 0.16282 0.68089 + 0.1703 0.71899 + 0.15763 0.65422 + 0.18497 0.64603 + 0.92921 0.9092 + 0.83247 0.96941 + 0.85763 0.96938 + 0.83248 0.98566 + 0.78054 0.64732 + 0.77759 0.76985 + 0.77687 0.64648 + 0.82844 0.85377 + 0.83238 0.85131 + 0.82844 0.86407 + 0.86206 0.56144 + 0.85733 0.56144 + 0.86204 0.53636 + 0.83239 0.86636 + 0.82848 0.90858 + 0.78942 0.5964 + 0.78518 0.59597 + 0.8282 0.53636 + 0.82819 0.51562 + 0.83214 0.53636 + 0.86203 0.51562 + 0.89195 0.53636 + 0.15438 0.93375 + 0.03536 0.93375 + 0.14945 0.91559 + 0.80234 0.53636 + 0.80506 0.51562 + 0.85765 0.98501 + 0.86238 0.9823 + 0.82852 0.96988 + 0.80645 0.97738 + 0.8285 0.93923 + 0.82853 0.9828 + 0.8574 0.65485 + 0.85735 0.59354 + 0.86213 0.65474 + 0.86226 0.82326 + 0.85753 0.82392 + 0.86222 0.7746 + 0.85759 0.91159 + 0.85756 0.86626 + 0.86232 0.9082 + 0.36195 0.96652 + 0.36592 0.97052 + 0.25271 0.96652 + 0.90713 0.95344 + 0.90611 0.96501 + 0.90349 0.95189 + 0.8532 0.45399 + 0.85608 0.45247 + 0.86128 0.46244 + 0.36079 0.94665 + 0.25207 0.94665 + 0.90112 0.04558 + 0.90112 0.02579 + 0.90524 0.04558 + 0.91624 0.87456 + 0.86229 0.86416 + 0.9177 0.8567 + 0.54142 0.81778 + 0.3974 0.81772 + 0.54122 0.7016 + 0.39929 0.51603 + 0.3996 0.50698 + 0.5613 0.51603 + 0.83216 0.56144 + 0.82822 0.56144 + 0.38316 0.4665 + 0.24041 0.4665 + 0.37735 0.43767 + 0.38816 0.8498 + 0.38905 0.85359 + 0.30996 0.8498 + 0.86201 0.49576 + 0.88917 0.50114 + 0.36351 0.94167 + 0.25272 0.94167 + 0.25549 0.54959 + 0.38326 0.54959 + 0.30996 0.59118 + 0.55316 0.96038 + 0.55047 0.93887 + 0.61653 0.96038 + 0.8974 0.56144 + 0.40108 0.91353 + 0.54249 0.91353 + 0.40434 0.93887 + 0.6069 0.50274 + 0.76858 0.50274 + 0.60691 0.50698 + 0.91243 0.94367 + 0.85761 0.94048 + 0.86237 0.96977 + 0.26436 0.75116 + 0.28595 0.75116 + 0.26436 0.76602 + 0.01779 0.4665 + 0.02486 0.43767 + 0.16115 0.4665 + 0.17329 0.97052 + 0.04476 0.97052 + 0.1585 0.96652 + 0.88109 0.9778 + 0.26083 0.88234 + 0.31456 0.85359 + 0.39134 0.88234 + 0.82828 0.64808 + 0.85755 0.85022 + 0.85728 0.49765 + 0.38816 0.80005 + 0.30996 0.80005 + 0.40138 0.47713 + 0.40649 0.45358 + 0.55914 0.47713 + 0.76981 0.91353 + 0.76627 0.93887 + 0.6273 0.91353 + 0.3998 0.50274 + 0.56131 0.50698 + 0.39735 0.62257 + 0.39764 0.60322 + 0.54112 0.62257 + 0.36716 0.99333 + 0.36361 0.9975 + 0.2389 0.99333 + 0.82841 0.81741 + 0.78321 0.82296 + 0.82837 0.76958 + 0.78662 0.90699 + 0.78981 0.86212 + 0.26826 0.49353 + 0.83242 0.91209 + 0.83218 0.5895 + 0.85735 0.59018 + 0.83219 0.59367 + 0.80204 0.51562 + 0.79917 0.53636 + 0.78441 0.95705 + 0.77953 0.95406 + 0.95168 0.02579 + 0.9366 0.02579 + 0.94503 0.00539 + 0.37911 0.43235 + 0.22567 0.43235 + 0.38274 0.49353 + 0.26884 0.49913 + 0.83213 0.51562 + 0.83211 0.49768 + 0.90404 0.96841 + 0.90218 0.96583 + 0.88495 0.9803 + 0.92145 0.85612 + 0.91963 0.87545 + 0.86258 0.94102 + 0.82854 0.99613 + 0.80224 0.97937 + 0.78234 0.96097 + 0.42287 0.96038 + 0.43185 0.96612 + 0.86239 0.99525 + 0.83249 0.99749 + 0.78276 0.90722 + 0.78338 0.86191 + 0.91526 0.94523 + 0.77313 0.77033 + 0.77937 0.82338 + 0.92025 0.64764 + 0.92422 0.77025 + 0.90952 0.64949 + 0.79028 0.59392 + 0.78702 0.59332 + 0.96735 0.07198 + 0.9707 0.07198 + 0.97882 0.10246 + 0.91208 0.57718 + 0.9035 0.57926 + 0.903 0.57136 + 0.90079 0.56144 + 0.89197 0.51562 + 0.89503 0.53636 + 0.88886 0.51562 + 0.79525 0.56144 + 0.79186 0.56144 + 0.80968 0.49972 + 0.80599 0.50369 + 0.74626 0.96038 + 0.61938 0.93887 + 0.85765 0.99657 + 0.56132 0.50274 + 0.73741 0.96612 + 0.8573 0.51562 + 0.38816 0.68246 + 0.30996 0.68246 + 0.83245 0.94075 + 0.82824 0.59133 + 0.82824 0.58696 + 0.83232 0.77039 + 0.83223 0.64863 + 0.85749 0.7743 + 0.86209 0.59182 + 0.91295 0.77034 + 0.86208 0.58787 + 0.8993 0.57385 + 0.90252 0.59646 + 0.91206 0.59324 + 0.90524 0.02579 + 0.93168 0.02579 + 0.60687 0.52796 + 0.56138 0.52796 + 0.60693 0.51603 + 0.23801 0.97052 + 0.02145 0.43235 + 0.02194 0.40806 + 0.17606 0.43235 + 0.39765 0.90287 + 0.54158 0.90287 + 0.39894 0.89392 + 0.93168 0.49726 + 0.90524 0.49571 + 0.93168 0.48475 + 0.98656 0.15113 + 0.99042 0.14964 + 0.99335 0.28074 + 0.9366 0.36379 + 0.9366 0.37451 + 0.93168 0.36066 + 0.39932 0.52796 + 0.5411 0.60322 + 0.90112 0.07198 + 0.90524 0.07198 + 0.9366 0.41912 + 0.93168 0.37659 + 0.98077 0.10484 + 0.98586 0.10449 + 0.93168 0.04558 + 0.86823 0.02579 + 0.86742 0.04558 + 0.15829 0.94665 + 0.04882 0.94665 + 0.1574 0.94167 + 0.9366 0.04558 + 0.90112 0.48127 + 0.90524 0.48342 + 0.90112 0.4953 + 0.9366 0.48224 + 0.9366 0.45068 + 0.95997 0.48822 + 0.9366 0.49656 + 0.90112 0.10383 + 0.90524 0.10562 + 0.90112 0.16827 + 0.90112 0.33593 + 0.90112 0.28592 + 0.90524 0.33503 + 0.90112 0.37384 + 0.90524 0.37594 + 0.90112 0.41784 + 0.15004 0.88234 + 0.86498 0.46092 + 0.86217 0.47415 + 0.76913 0.51603 + 0.90112 0.36126 + 0.85314 0.36449 + 0.17394 0.9975 + 0.04836 0.9975 + 0.17353 0.99333 + 0.93168 0.07198 + 0.7688 0.50698 + 0.60904 0.44967 + 0.76179 0.45314 + 0.60901 0.47713 + 0.90112 0.00775 + 0.86584 0.0163 + 0.38878 0.91559 + 0.3735 0.93375 + 0.25934 0.91559 + 0.01008 0.60157 + 0.01284 0.59118 + 0.08941 0.60157 + 0.86384 0.07198 + 0.0062 0.80005 + 0.08941 0.80005 + 0.01281 0.8498 + 0.85359 0.38275 + 0.90118 0.45237 + 0.90524 0.45239 + 0.01414 0.54959 + 0.08941 0.59118 + 0.01474 0.88234 + 0.01899 0.91559 + 0.88722 0.48738 + 0.9366 0.10093 + 0.9366 0.16418 + 0.13024 0.49353 + 0.93168 0.33606 + 0.93168 0.28723 + 0.04857 0.96652 + 0.90524 0.00904 + 0.01367 0.85359 + 0.09169 0.85359 + 0.62737 0.6566 + 0.77202 0.65686 + 0.62739 0.7016 + 0.04456 0.99333 + 0.9366 0.33451 + 0.9366 0.28698 + 0.98947 0.33222 + 0.97871 0.37517 + 0.25535 0.93375 + 0.17648 0.40806 + 0.22603 0.40806 + 0.93168 0.09926 + 0.90524 0.10087 + 0.93168 0.10321 + 0.95452 0.02579 + 0.95973 0.04558 + 0.98218 0.46833 + 0.9814 0.42195 + 0.98652 0.46759 + 0.90524 0.42136 + 0.0062 0.68246 + 0.08941 0.68246 + 0.93168 0.1656 + 0.90524 0.16868 + 0.17581 0.43767 + 0.9366 0.09644 + 0.9366 0.07198 + 0.9366 0.00356 + 0.93168 0.00605 + 0.86613 0.47502 + 0.86423 0.4776 + 0.88332 0.48982 + 0.84994 0.3648 + 0.9366 0.50656 + 0.9641 0.49022 + 0.77297 0.7016 + 0.77137 0.81772 + 0.93168 0.50947 + 0.98535 0.4201 + 0.98374 0.37738 + 0.85014 0.38348 + 0.99302 0.33269 + 0.84686 0.16116 + 0.85848 0.16268 + 0.84653 0.2839 + 0.98439 0.09967 + 0.86205 0.08959 + 0.86108 0.09301 + 0.85911 0.08798 + 0.85974 0.07198 + 0.86476 0.02579 + 0.86392 0.04558 + 0.95661 0.04558 + 0.94923 0.00903 + 0.76695 0.47713 + 0.90112 0.50484 + 0.12942 0.49913 + 0.01693 0.49353 + 0.04584 0.94167 + 0.98413 0.47257 + 0.76994 0.89392 + 0.77075 0.90287 + 0.62717 0.89392 + 0.93168 0.4536 + 0.30996 0.63721 + 0.38816 0.63721 + 0.90524 0.28664 + 0.90524 0.50834 + 0.90112 0.10033 + 0.85849 0.28366 + 0.86292 0.10938 + 0.85206 0.09165 + 0.85275 0.10652 + 0.37972 0.40806 + 0.34091 0.54131 + 0.27457 0.54131 + 0.34068 0.50669 + 0.76912 0.52796 + 0.62735 0.60322 + 0.77028 0.87311 + 0.62737 0.81778 + 0.27681 0.50669 + 0.38189 0.49913 + 0.0382 0.50669 + 0.01805 0.49913 + 0.10383 0.50669 + 0.0382 0.53536 + 0.14119 0.54959 + 0.10383 0.53536 + 0.08438 0.52984 + 0.10188 0.53366 + 0.10188 0.50844 + 0.28595 0.67931 + 0.28595 0.69673 + 0.26436 0.67931 + 0.2479 0.69673 + 0.26436 0.69673 + 0.2479 0.75116 + 0.30251 0.75116 + 0.30251 0.73594 + 0.6273 0.90287 + 0.73812 0.99374 + 0.61603 0.96612 + 0.02523 0.40303 + 0.37823 0.40303 + 0.43088 0.99374 + 0.55332 0.99374 + 0.82817 0.49579 + 0.30996 0.60157 + 0.08941 0.8498 + 0.23988 0.47159 + 0.16024 0.47159 + 0.01226 0.38281 + 0.0123 0.1188 + 0.4906 0.38293 + 0.22569 0.43767 + 0.22627 0.40303 + 0.62736 0.62257 + 0.3986 0.87512 + 0.5416 0.87311 + 0.55364 0.96612 + 0.61633 0.99374 + 0.04077 0.53366 + 0.05818 0.52984 + 0.85731 0.53636 + 0.01234 0.01945 + 0.49059 0.01942 + 0.30996 0.60554 + 0.38816 0.60554 + 0.9893 0.36156 + 0.98523 0.36016 + 0.8597 0.33098 + 0.9366 0.3611 + 0.93168 0.35758 + 0.90524 0.35584 + 0.0062 0.63721 + 0.08941 0.63721 + 0.90112 0.35916 + 0.78127 0.84909 + 0.78464 0.84819 + 0.92457 0.81868 + 0.91351 0.81797 + 0.82843 0.84951 + 0.39567 0.7016 + 0.39657 0.65665 + 0.86228 0.84811 + 0.85754 0.84647 + 0.83235 0.81821 + 0.09335 0.79559 + 0.30577 0.68246 + 0.30577 0.79559 + 0.09335 0.68246 + 0.09335 0.64264 + 0.30577 0.64264 + 0.30251 0.71277 + 0.28595 0.71262 + 0.78367 0.85183 + 0.78778 0.85136 + 0.90524 0.35872 + 0.77088 0.60322 + 0.98248 0.36329 + 0.9861 0.36453 + 0.38444 0.59118 + 0.7712 0.62257 + 0.08941 0.60554 + 0.54116 0.65658 + 0.0062 0.60554 + 0.86031 0.35743 + 0.91037 0.85177 + 0.83238 0.84719 + 0.86228 0.85264 + 0.38816 0.60157 + 0.28595 0.7361 + 0.91209 0.59446 + 0.62727 0.87311 + 0.86148 0.1058 + 0.85279 0.10772 + 0.39858 0.87311 + 0.90377 0.59315 + 0.77025 0.87483 + 0.75202 0.13042 + 0.50435 0.13042 + 0.75202 0.00601 + 0.93168 0.42246 + 0.34023 0.748 + 0.34523 0.75011 + 0.34006 0.74916 + 0.35107 0.75901 + 0.35107 0.76442 + 0.34991 0.75932 + 0.349 0.76944 + 0.34989 0.76429 + 0.34513 0.77325 + 0.34797 0.76886 + 0.34011 0.77529 + 0.34442 0.77231 + 0.33467 0.77526 + 0.33982 0.77413 + 0.32967 0.77313 + 0.33484 0.77409 + 0.32587 0.76925 + 0.33028 0.77211 + 0.32386 0.76421 + 0.32682 0.76855 + 0.32386 0.75881 + 0.32503 0.76391 + 0.32594 0.75379 + 0.32504 0.75894 + 0.32981 0.74998 + 0.32697 0.75437 + 0.33483 0.74797 + 0.33052 0.75091 + 0.33512 0.74911 + 0.34905 0.75397 + 0.34461 0.75113 + 0.34809 0.75469 + 0.3471 0.75533 + 0.34876 0.75954 + 0.34875 0.76404 + 0.347 0.76819 + 0.34379 0.77133 + 0.33961 0.77297 + 0.33508 0.77293 + 0.33094 0.77115 + 0.32781 0.76791 + 0.32618 0.7637 + 0.32619 0.75919 + 0.32794 0.75504 + 0.33116 0.75189 + 0.33533 0.75025 + 0.33981 0.7503 + 0.34393 0.7521 + 0.33357 0.65971 + 0.33731 0.65906 + 0.33372 0.65997 + 0.34415 0.66208 + 0.34621 0.66528 + 0.34395 0.66235 + 0.34689 0.66905 + 0.34594 0.66547 + 0.34607 0.67278 + 0.34657 0.66911 + 0.34388 0.67592 + 0.34575 0.67272 + 0.34064 0.67797 + 0.34362 0.67574 + 0.33688 0.67861 + 0.34048 0.6777 + 0.33317 0.67775 + 0.33684 0.6783 + 0.33007 0.67555 + 0.33326 0.67745 + 0.32801 0.67235 + 0.33028 0.67529 + 0.32732 0.66859 + 0.32828 0.67217 + 0.32815 0.66485 + 0.32764 0.66852 + 0.33035 0.66173 + 0.32846 0.66492 + 0.3306 0.66192 + 0.34103 0.65988 + 0.33735 0.65937 + 0.34095 0.66019 + 0.34059 0.66099 + 0.34332 0.66295 + 0.34512 0.66577 + 0.34569 0.66909 + 0.34495 0.67236 + 0.34301 0.6751 + 0.34016 0.67688 + 0.33686 0.67743 + 0.33362 0.67666 + 0.33092 0.67469 + 0.3291 0.67186 + 0.32852 0.66854 + 0.32926 0.66527 + 0.33121 0.66255 + 0.33403 0.66078 + 0.33731 0.66025 + 0.27451 0.82357 + 0.27196 0.82434 + 0.23215 0.8237 + 0.22842 0.82945 + 0.2314 0.82773 + 0.2322 0.83176 + 0.22782 0.82775 + 0.22839 0.82605 + 0.27202 0.83081 + 0.23477 0.83097 + 0.23471 0.82446 + 0.27531 0.82756 + 0.27457 0.83156 + 0.27885 0.82754 + 0.27829 0.82924 + 0.27827 0.82585 + 0.2307 0.83319 + 0.23028 0.83274 + 0.27613 0.83312 + 0.28102 0.8251 + 0.28051 0.82523 + 0.27597 0.82216 + 0.28183 0.82754 + 0.28134 0.82752 + 0.28056 0.82983 + 0.28114 0.83002 + 0.27647 0.83252 + 0.2255 0.82527 + 0.23053 0.82216 + 0.2261 0.82544 + 0.2248 0.82777 + 0.22532 0.82777 + 0.22562 0.83023 + 0.22616 0.83008 + 0.27641 0.82259 + 0.23022 0.82273 + 0.35794 0.83327 + 0.33858 0.83303 + 0.3569 0.83231 + 0.33877 0.82201 + 0.33981 0.82297 + 0.33554 0.82545 + 0.33838 0.82751 + 0.33521 0.82745 + 0.33545 0.82946 + 0.33964 0.8321 + 0.35706 0.82321 + 0.35813 0.82228 + 0.36124 0.82583 + 0.36148 0.82784 + 0.35832 0.82778 + 0.36116 0.82984 + 0.33894 0.82123 + 0.35808 0.82126 + 0.33878 0.82153 + 0.36145 0.83043 + 0.35774 0.83404 + 0.36122 0.83041 + 0.36196 0.82786 + 0.36174 0.82785 + 0.36165 0.82523 + 0.36133 0.82527 + 0.33503 0.83006 + 0.33536 0.83003 + 0.33861 0.83404 + 0.33472 0.82743 + 0.33496 0.82744 + 0.33548 0.82488 + 0.33523 0.82486 + 0.35792 0.83374 + 0.35812 0.8218 + 0.33857 0.8335 + 0.92921 0.821 + 0.28595 0.76761 + 0.55902 0.44978 + 0.2387 0.9975 + 0.5417 0.89392 + 0.99682 0.27838 + 0.04077 0.50844 + 0.17641 0.40303 + 0.49066 0.12041 + 0.84788 0.3319 + 0.30251 0.69673 + 0.50435 0.00601 + } + $normals { + 0 1 0 + 0 1 0 + 0.3023 0.3116 0.9008 + 0.379 0.4148 0.8272 + 0.3023 0.6326 0.713 + 0.9844 -0.1663 0.058 + 0.9844 -0.1315 0.1173 + 0.379 -0.8272 0.4148 + 0.379 -0.8272 -0.4148 + 0.9844 -0.1645 -0.0626 + 0.399 -0.917 -0 + 0.379 -0.6055 -0.6998 + 0.9844 -0.128 -0.1208 + 0.379 -0.2916 -0.8782 + 0.9844 -0.0721 -0.1606 + 0.379 0.0667 -0.923 + 0.9844 -0.0051 -0.1759 + 0.379 0.4148 -0.8272 + 0.9844 0.0626 -0.1645 + 0.379 0.6998 -0.6055 + 0.9844 0.1208 -0.128 + 0.379 0.8782 -0.2916 + 0.9811 0.1751 -0.0822 + 0.3852 0.9228 -0 + 0.9794 0.2021 -0.0023 + 0.9844 0.1605 0.072 + 0.379 0.8782 0.2916 + 0.9844 0.1208 0.128 + 0.379 0.6998 0.6055 + 0.9866 0.0564 0.1532 + 0.9969 0.0299 0.0722 + 0.9969 0 0.0788 + 0.9811 -0.009 0.1933 + 0.379 0.0667 0.923 + 0.3023 -0.4167 0.8573 + 0.379 -0.2917 0.8782 + 0.3023 -0.0569 0.9515 + 0.3024 -0.713 0.6326 + 0.379 -0.6055 0.6998 + 0.317 -0.8896 0.3289 + 0.3502 -0.9367 0 + 0.3171 -0.8895 -0.3289 + 0.3024 -0.713 -0.6326 + 0.3024 -0.4167 -0.8573 + 0.3023 -0.0569 -0.9515 + 0.3023 0.3116 -0.9008 + 0.3023 0.6326 -0.713 + 0.3023 0.8573 -0.4167 + 0.3028 0.9531 0 + 0.3023 0.8573 0.4167 + 0.9892 -0.1463 -0.0026 + 0.9969 -0.0515 0.0599 + 0.9969 -0.0705 0.0357 + 0.9969 -0.0788 0.006 + 0.9969 -0.0751 -0.0246 + 0.9969 -0.0599 -0.0515 + 0.9969 -0.0356 -0.0705 + 0.9969 -0.006 -0.0788 + 0.9969 0.0247 -0.0751 + 0.9969 0.0515 -0.0599 + 0.9969 0.0729 -0.0302 + 0.9969 0.0788 0.0059 + 0.9969 0.0705 0.0357 + 0.9969 0.0515 0.0599 + 0.9969 -0.0299 0.0722 + 1 0 -0 + 0.9866 -0.0685 0.1482 + -0.9638 0.1799 0.1968 + -0.9766 -0.0708 0.2031 + -0.8478 0.1272 0.5148 + -0.9699 0.2429 -0.0198 + -0.9565 0.2918 -0.0005 + -0.0573 0.9977 -0.035 + -0.9442 0.2356 0.2301 + -0.9783 0.1253 0.1653 + -0.9466 0.3219 0.0171 + -0.9597 -0.2756 -0.0557 + -0.9811 -0.1785 -0.074 + -0.9141 -0.284 -0.2895 + -0.9868 0.1603 0.0218 + -0.955 0.2951 0.0286 + -0.9667 0.2499 -0.0555 + -0.0624 0.9893 -0.1316 + -0.8254 0.322 -0.4638 + -0.3843 0.3921 -0.8358 + -0.9352 0.2259 -0.2728 + -0.4926 -0.2788 -0.8244 + -0.841 -0.214 -0.497 + -0.0102 0.853 -0.5218 + -0.0209 0.8757 -0.4824 + -0.004 0.9706 -0.2407 + -0.9264 0.2419 -0.2886 + -0.5518 0.1591 -0.8186 + -0.8232 -0.2653 0.502 + -0.7039 -0.3076 0.6402 + -0.9069 0.3986 0.1366 + -0.9717 0.1618 0.1719 + -0.9717 0.2316 0.0466 + -0.7166 0.3429 0.6074 + -0.99 -0.1404 -0.0143 + -0.9648 -0.2377 -0.1124 + -0.9765 -0.2149 -0.0131 + -0.9719 -0.233 0.034 + -0.9947 -0.0986 0.0281 + -0.9625 -0.2713 0.0059 + -0.986 -0.1648 0.0268 + -0.9711 -0.2371 0.0285 + -0.9816 -0.1881 0.0313 + 0.0635 0.2337 -0.9702 + 0.0661 0.1704 -0.9832 + 0.0234 0.4025 -0.9151 + -0.0389 -0.809 0.5865 + -0.0274 -0.9909 0.1314 + -0.9798 -0.1591 0.121 + 0.0098 -0.9973 0.0725 + 0.9817 -0.1856 0.0435 + 0.0389 -0.809 0.5865 + 0.084 0.1165 -0.9896 + 0.0247 0.1239 -0.992 + 0.8511 -0.3752 -0.3672 + 0.4948 -0.3044 -0.814 + 0.8491 -0.2499 -0.4655 + -0.987 -0.1588 0.0242 + -0.9794 -0.2003 0.0255 + -0.9771 -0.1942 0.0869 + 0.0008 -1 -0.0033 + 0.0382 -0.9993 -0.0004 + 0.0012 -1 -0.0002 + 0.0274 -0.9909 0.1314 + 0.0139 -0.9168 0.3992 + -0.9822 0.1813 -0.0488 + -0.9554 0.2826 -0.0858 + 0.0706 0.5568 0.8277 + 0.0311 0.4945 0.8686 + 0.0569 0.5408 0.8392 + 0.0594 0.9934 -0.0978 + 0.034 0.9535 -0.2996 + 0.0023 0.9924 -0.123 + -0.0586 -0.2375 -0.9696 + -0.0769 -0.1261 -0.989 + 0.0425 0.3118 -0.9492 + 0.0236 0.3018 -0.9531 + -0.039 0.9982 -0.0446 + 0.0283 0.9903 -0.1361 + 0.0044 0.9969 -0.0784 + 0.0149 -0.8083 -0.5885 + 0.0048 -0.9651 -0.2619 + -0.0106 -0.8517 -0.5239 + -0.9729 -0.207 -0.1035 + 0.021 -0.9922 -0.1225 + 0.0055 -0.9946 -0.104 + 0.025 -0.9796 -0.1996 + -0.0018 -0.6779 0.7351 + -0.0246 -0.6182 0.7856 + -0.0014 -0.9401 0.3408 + -0.9833 -0.1765 0.0436 + -0.9858 -0.1556 0.0625 + -0.9584 -0.2438 0.1482 + 0.1721 0.8125 -0.557 + 0.7166 0.4919 0.4945 + 0.3546 -0.0304 -0.9345 + -0.0773 0.5514 0.8306 + -0.0663 0.5253 0.8483 + -0.0291 0.4926 0.8698 + -0.0265 0.1624 -0.9864 + -0.0663 0.1703 -0.9832 + -0.0164 0.3586 -0.9333 + -0.937 -0.1584 0.3113 + 0.0041 0.9925 -0.1221 + 0.0043 0.9814 -0.1919 + 0.0349 0.994 -0.1039 + -0.9557 0.2937 -0.0215 + -0.8651 -0.2937 0.4066 + -0.0665 -0.2219 -0.9728 + 0.0604 0.9976 -0.0339 + -0.0091 0.9994 0.0341 + 0.0734 -0.3909 0.9175 + 0.0552 -0.5072 0.8601 + 0.0248 -0.475 0.8796 + -0.0283 -0.9957 -0.0885 + -0.0152 -0.9806 -0.1956 + -0.0028 -0.9943 -0.1067 + 0.0246 -0.6182 0.7856 + 0.0013 -0.9502 0.3117 + 0.0158 -0.9999 0.001 + 0.02 -0.9998 0.0038 + 0.0007 -1 0 + 0.0663 -0.2218 -0.9728 + 0.0706 -0.3421 -0.937 + 0.0311 -0.2014 -0.979 + -0.9435 0.3304 0.0256 + -0.9703 0.2386 0.0395 + -0.9586 0.2847 -0.0042 + -0.959 0.2835 0.0067 + -0.968 0.2504 0.015 + 0.025 0.6711 0.7409 + -0.9839 0.1764 0.027 + -0.9102 0.2914 -0.2944 + -0.9809 -0.1748 -0.0852 + -0.9908 0.1255 -0.0507 + -0.0201 0.9798 -0.1991 + -0.9744 0.216 0.0628 + -0.0755 0.9961 -0.0467 + 0.5518 0.1591 -0.8186 + 0.3844 0.3921 -0.8357 + 0.0942 0.2312 0.9683 + 0.0403 0.2419 0.9695 + 0.0665 0.7517 0.6562 + -0.2551 0.9663 0.0347 + -0.5599 0.1842 -0.8078 + -0.9255 -0.2118 0.3139 + -0.08 -0.3883 0.918 + -0.0414 -0.9991 0.0001 + -0.0233 -0.9997 0.0015 + -0.9714 -0.2319 0.0515 + -0.0617 0.8077 0.5864 + 0.0192 -0.8896 -0.4564 + 0.066 -0.1142 -0.9913 + -0.0624 -0.4913 0.8687 + -0.1023 0.1732 0.9796 + -0.0222 0.9911 -0.1312 + -0.0565 0.9975 -0.0422 + -0.0098 -0.9973 0.0725 + -0.0567 0.9981 0.0254 + -0.0988 0.9915 0.0846 + -0.0344 -0.9994 -0.0003 + -0.0999 -0.995 -0 + -0.9392 -0.3433 -0.0115 + -0.932 0.288 -0.2201 + -0.0454 0.9865 -0.1571 + 0.9736 0.2172 -0.0695 + 0.9145 0.3298 -0.2344 + -0.0372 -0.9816 -0.1872 + -0.9489 -0.3014 -0.0941 + -0.0745 -0.7997 -0.5958 + -0.0132 -0.8832 -0.4688 + -0.4661 -0.1927 -0.8635 + -0.9728 0.225 -0.0556 + -0.0362 0.994 -0.1037 + -0.0843 0.1164 -0.9896 + -0.0426 0.3116 -0.9493 + -0.0027 -0.9628 -0.2702 + -0.1027 -0.1017 0.9895 + 0.0022 -0.6909 0.7229 + -0.3889 -0.1806 -0.9034 + 0.0608 0.9981 0.0041 + -0.0558 0.9984 0.0021 + -0.9791 0.1845 0.0855 + -0.9351 0.3252 -0.1407 + -0.9663 0.2397 -0.0936 + -0.994 0.1091 -0.0026 + -0.9908 0.1346 -0.0129 + -0.9983 -0.0581 -0.0037 + -0.9598 -0.2314 -0.1589 + -0.9727 -0.2322 -0.004 + -0.9683 -0.2176 -0.1225 + -0.9844 -0.1732 -0.0305 + -0.9742 -0.2193 -0.0534 + -0.0922 -0.9957 -0.0057 + 0.3889 -0.1807 -0.9034 + 0.5598 0.1842 -0.8079 + -0.0051 -0.9898 0.1426 + 0.0067 -0.9782 0.2074 + -0.0121 -0.9051 0.4251 + 0.0185 0.1865 -0.9823 + -0.0423 0.1666 0.9851 + 0.0713 -0.8723 -0.4838 + 0.0252 -0.8036 -0.5946 + 0.0443 -0.9498 -0.3098 + 0.7623 0.1535 0.6287 + 0.8261 -0.1738 0.5361 + 0.9711 0.074 0.2269 + 0.974 0.2258 -0.0189 + 0.9691 0.2467 0.0008 + 0.9305 0.2558 0.2623 + 0.9534 0.2998 0.0337 + 0.9618 0.0889 0.2588 + 0.0009 -1 0.0051 + 0.9626 -0.2518 -0.1003 + 0.9821 -0.178 -0.061 + 0.9577 0.2867 0.025 + 0.9869 0.1607 0.0171 + 0.9671 0.2499 -0.0477 + 0.9352 0.2259 -0.2728 + 0.4834 -0.2122 -0.8493 + 0.8925 -0.2256 -0.3905 + -0.0293 0.1283 -0.9913 + -0.0218 0.3522 -0.9357 + 0.8254 0.322 -0.4638 + 0.8924 -0.402 0.2049 + 0.9596 -0.1698 0.2242 + 0.6747 -0.3153 0.6674 + 0.904 0.3946 0.1647 + 0.9713 0.2325 0.0507 + 0.9678 0.1667 0.1888 + 0.694 0.3503 0.629 + 0.9583 -0.2472 -0.1435 + 0.9612 -0.2454 -0.1256 + 0.9766 -0.2147 -0.0112 + 0.9672 -0.2507 0.0412 + 0.9644 -0.2643 0.0045 + 0.9929 -0.1156 0.0271 + 0.9784 -0.2066 0.0091 + 0.9756 -0.2183 0.0231 + 0.9813 -0.1906 0.0264 + -0.0028 0.9934 -0.1146 + 0.9786 -0.1352 0.1551 + 0.8699 -0.2072 0.4476 + 0.961 -0.2651 0.0785 + -0.0207 -0.2294 -0.9731 + -0.0264 -0.142 -0.9895 + 0.9854 0.1664 -0.0369 + -0.0274 -0.4872 0.8729 + -0.0281 -0.4702 0.8821 + 0.0204 0.9794 -0.2009 + 0.0205 0.8769 -0.4802 + 0.0028 0.972 -0.2351 + -0.0353 0.7646 0.6436 + -0.0055 0.8448 0.535 + 0.9438 -0.2983 -0.1428 + 0.0051 0.9996 -0.0268 + 0.9856 -0.1685 0.0139 + 0.9716 -0.2168 0.0943 + 0.9904 -0.1079 0.0859 + -0.0018 0.9977 -0.0682 + 0.9653 -0.145 0.217 + 0.942 0.3126 -0.122 + 0.9564 0.2916 -0.0183 + -0.0221 0.6996 0.7142 + 0.9876 0.1542 0.0304 + 0.996 0.0893 0.0024 + -0.0638 0.2338 -0.9702 + -0.0052 0.984 -0.1779 + -0.0012 -1 0.0011 + -0.033 -0.9995 -0.0002 + -0.0023 -1 -0.0001 + 0.9534 0.2988 0.042 + 0.9602 0.2794 -0.0024 + 0.9735 0.2259 0.0363 + 0.9716 0.2363 0.0141 + 0.0124 0.7863 -0.6177 + -0.0405 -0.3632 0.9308 + 0.0288 -0.2936 0.9555 + 0.8988 0.2484 -0.3611 + 0.9832 -0.1555 -0.0956 + 0.9904 0.1297 -0.0474 + 0.9746 0.2121 0.0723 + 0.9641 0.2655 0.0085 + 0.0694 0.9946 -0.0774 + 0.9892 -0.1432 0.03 + 0.0827 0.9965 -0.0087 + 0.992 0.1255 -0.0101 + 0.9897 -0.1432 -0.0019 + -0.0323 0.5649 0.8245 + 0.9671 0.2265 -0.1157 + 0.9554 0.2825 -0.086 + 0.9255 -0.2118 0.314 + 0.0614 0.9973 -0.0404 + 0.0665 0.9945 0.0814 + 0.9424 -0.3343 -0.0115 + 0.1122 -0.9937 -0.0001 + 0.9807 -0.1879 -0.055 + 0.9531 -0.2988 -0.0484 + 0.9264 0.2419 -0.2885 + 0.1814 0.9833 -0.0157 + -0.0145 -0.9352 -0.3538 + 0.9691 0.2345 0.0761 + -0.0049 0.9963 -0.0856 + 0.9973 -0.0733 -0.0032 + 0.0971 -0.1173 0.9883 + 0.9739 -0.1997 -0.1082 + 0.9744 -0.2249 -0.0059 + 0.9744 -0.2185 -0.0527 + 0.1038 -0.9946 -0.0058 + 0.0117 0.9862 -0.1654 + -0.0041 0.9894 -0.1454 + 0.004 0.9929 -0.1186 + -0.0009 -1 0.0045 + -0.0534 -0.9985 -0.0083 + -0.0007 -1 -0.0027 + -0.0151 0.9922 -0.1236 + 0.047 0.9807 -0.1899 + 0.0149 0.9967 -0.0797 + -0.0029 0.9928 -0.1197 + 0.042 0.9987 0.0304 + 0.0078 0.9918 -0.1275 + 0.0809 0.3257 0.942 + -0.7824 0.2978 0.547 + -0.575 0.1819 -0.7977 + -0.7338 0.4799 0.4808 + -0.1569 0.4766 -0.865 + 0.7764 0.3842 0.4996 + -0.0405 0.4585 0.8878 + -0.0161 -0.9213 -0.3884 + -0.0319 -0.1113 -0.9933 + 0.0331 -0.1771 -0.9836 + 0.0042 0.9557 0.2943 + -0.0081 0.9807 -0.1953 + -0.0794 0.9787 0.1893 + 0.166 0.9721 0.1659 + 0.0689 0.993 0.0964 + 0.0172 0.9998 0.0047 + -0.0363 0.9992 0.0188 + 0.0246 0.5127 0.8582 + 0.0325 -0.5452 0.8377 + -0.0018 -1 -0.0025 + 0.0003 -1 -0.007 + 0.0211 -0.1115 -0.9935 + -0.8491 -0.2499 -0.4655 + 0.068 0.9642 -0.2563 + -0.0381 0.9984 -0.041 + 0.0028 0.9678 0.2518 + 0.0393 0.9865 0.1592 + 0.9599 0.2541 0.1185 + 0.9671 -0.2524 0.0328 + 0.9297 0.2909 0.2257 + 0.9509 0.2589 0.1693 + 0.9811 -0.1284 0.1447 + -0.0063 0.9993 0.0374 + 0.9726 -0.1856 0.1398 + -0.0484 0.9898 0.1343 + -0.9281 0.3362 0.1598 + -0.9581 -0.2853 0.0259 + -0.9493 0.2639 0.171 + 0.0415 -0.9991 -0.0023 + -0.9445 -0.2298 0.2346 + -0.9886 -0.1049 0.1079 + -0.9881 0.1508 0.0305 + -0.0462 0.9989 0.0047 + 0.0175 0.9404 0.3397 + -0.8288 0.2641 0.4933 + 0.92 -0.3007 0.2514 + 0.9369 0.2189 0.2725 + 0.062 0.7825 0.6196 + -0.0075 0.9659 0.2588 + 0.0008 -1 -0.0001 + 0.9244 -0.2077 0.32 + -0.959 -0.2156 0.1842 + -0.9551 0.2025 0.2164 + -0.8855 -0.1923 0.423 + -0.0313 0.8669 0.4975 + -0.0004 -1 -0.0067 + 0.905 -0.2132 -0.3681 + 0.0599 -0.9982 -0.0088 + -0.909 -0.1833 -0.3744 + -0.0003 0.9905 -0.1377 + -0.0003 0.9905 -0.1377 + -0.0003 0.9905 -0.1377 + 0.9858 0.165 0.0322 + 0.0532 -0 0.9986 + 0.4313 -0 0.9022 + 0.1546 0.1799 0.9715 + 0.9429 -0 0.333 + 0.9986 0 -0.0532 + 0.9505 0.1831 0.2511 + 0.9022 0 -0.4313 + 0.9635 0.2252 -0.1446 + 0.6685 0 -0.7437 + 0.8526 0.1308 -0.5059 + 0.333 0 -0.9429 + 0.579 0.2252 -0.7836 + -0.0532 0 -0.9986 + 0.2289 0.1799 -0.9567 + -0.4313 0 -0.9022 + -0.1411 0.1308 -0.9813 + -0.7437 0 -0.6685 + -0.5024 0.2252 -0.8348 + -0.9429 0 -0.333 + -0.7937 0.1308 -0.5941 + -0.9986 -0 0.0532 + -0.9455 0.2252 -0.2351 + -0.9022 0 0.4313 + -0.9715 0.1799 0.1546 + -0.6685 -0 0.7437 + -0.8526 0.1308 0.5059 + -0.333 -0 0.9429 + -0.5958 0.1831 0.782 + -0.2351 0.2252 0.9455 + 0.7437 -0 0.6685 + 0.5146 0.1799 0.8384 + 0.7937 0.1308 0.5941 + 0.328 0.9088 0.2578 + 0.0202 0.9998 0.0042 + 0.0976 0.9952 -0.0117 + 0.267 0.9519 -0.1501 + 0.2578 0.9088 -0.328 + 0.0092 0.9996 -0.0258 + -0.0216 0.9834 -0.1801 + -0.2044 0.9088 -0.3637 + -0.328 0.9088 -0.2578 + -0.0092 1 -0.0025 + -0.4143 0.9088 0.0496 + -0.1441 0.9862 0.081 + -0.2578 0.9088 0.328 + -0.0088 0.9995 0.0315 + 0.0496 0.9088 0.4143 + 0.0131 0.9995 0.0276 + -0.3827 -0 0.9239 + -0 -0 1 + -0.3554 0.371 0.858 + 0.7071 -0 0.7071 + 0.9239 -0 0.3827 + 0.6567 0.371 0.6567 + 1 -0 0 + 0.858 0.371 0.3554 + 0.9239 0 -0.3827 + 0.9286 0.371 -0 + 0.7071 0 -0.7071 + 0.858 0.371 -0.3554 + 0.3827 0 -0.9239 + 0.6566 0.371 -0.6567 + 0 0 -1 + 0.3554 0.371 -0.858 + -0.3827 0 -0.9239 + -0 0.371 -0.9286 + -0.7071 0 -0.7071 + -0.3554 0.371 -0.858 + -0.9239 0 -0.3827 + -0.6567 0.371 -0.6567 + -1 0 -0 + -0.858 0.371 -0.3554 + -0.9239 -0 0.3827 + -0.9286 0.371 0 + -0.7071 -0 0.7071 + -0.858 0.371 0.3554 + -0.6567 0.371 0.6567 + 0.3827 -0 0.9239 + 0 0.371 0.9286 + 0.3554 0.371 0.858 + 0.1597 0.9088 0.3855 + 0.0123 0.9998 0.0122 + 0.3855 0.9088 0.1597 + 0.0406 0.9992 -0 + 0.3855 0.9088 -0.1597 + 0.0362 0.9985 -0.0416 + 0.1597 0.9088 -0.3855 + 0 0.9088 -0.4172 + -0.1597 0.9088 -0.3855 + -0.0089 0.9999 -0.0101 + -0.3854 0.9088 -0.1597 + -0.4172 0.9088 0 + -0.3855 0.9088 0.1597 + -0.0232 0.9995 0.0231 + -0.1597 0.9088 0.3855 + 0 0.9998 0.0201 + -0.073 0.6471 -0.7589 + -0.0044 0.9963 -0.0853 + 0.0419 0.5641 -0.8246 + 0.3183 0.9145 0.2497 + 0.1364 0.9907 0 + 0.0419 0.5641 0.8246 + 0.3717 0.9283 -0 + 0.3183 0.9145 -0.2497 + -0.0078 0.9885 0.1507 + 0.0046 0.999 0.0433 + 0.0083 0.9968 -0.0793 + -0.1363 0.9907 0 + -0.073 0.6471 0.7589 + -0.3717 0.9283 -0 + -0.3183 0.9145 0.2497 + -0.3183 0.9145 -0.2497 + 0.0966 0.0395 0.9945 + 0.0384 0.1032 0.9939 + -0.0526 0.0342 0.998 + -0.8174 0.1244 -0.5624 + -0.703 0.5083 -0.4974 + -0.0526 0.0343 -0.998 + -0.9895 0.1448 -0 + -0.8428 0.5383 -0 + -0.703 0.5083 0.4974 + -0.8174 0.1244 0.5624 + -0.0535 0.1836 0.9815 + 0.8174 0.1244 -0.5624 + 0.0966 0.0395 -0.9945 + 0.703 0.5083 -0.4974 + 0.9895 0.1448 -0 + 0.8428 0.5383 -0 + 0.8174 0.1244 0.5624 + 0.703 0.5083 0.4974 + -0.0535 0.1836 -0.9815 + 0.0384 0.1032 -0.9939 + 0.073 0.6471 -0.7589 + -0.0419 0.5641 -0.8246 + 0.0044 0.9963 -0.0853 + -0.0045 0.999 0.0433 + -0.1363 0.9907 0 + -0.0419 0.5641 0.8246 + -0.3717 0.9283 -0 + -0.3183 0.9145 0.2497 + -0.3183 0.9145 -0.2497 + 0.0078 0.9885 0.1507 + -0.0083 0.9968 -0.0793 + 0.3183 0.9145 0.2497 + 0.1363 0.9907 0 + 0.073 0.6471 0.7589 + 0.3717 0.9283 -0 + 0.3183 0.9145 -0.2497 + -0.0966 0.0395 0.9945 + 0.0526 0.0342 0.998 + -0.0384 0.1032 0.9939 + 0.8174 0.1244 -0.5624 + 0.0526 0.0343 -0.998 + 0.703 0.5083 -0.4974 + 0.9895 0.1448 -0 + 0.8428 0.5383 -0 + 0.8174 0.1244 0.5624 + 0.703 0.5083 0.4974 + -0.8174 0.1244 -0.5624 + -0.703 0.5083 -0.4974 + -0.0966 0.0395 -0.9945 + -0.9895 0.1448 -0 + -0.8428 0.5383 -0 + -0.703 0.5083 0.4974 + -0.8174 0.1244 0.5624 + -0.0384 0.1032 -0.9939 + 0.0535 0.1836 0.9815 + 0.0535 0.1836 -0.9815 + 0.2866 0.6628 -0.6918 + -0.0789 0.5715 -0.8168 + 0.0171 0.9971 -0.0743 + -0.0789 0.5715 0.8168 + -0.0177 0.999 0.0409 + -0.5023 0.8401 0.205 + -0.13 0.9915 -0 + -0.5307 0.8476 -0 + -0.5023 0.8401 -0.205 + -0.0312 0.9969 -0.072 + 0.0293 0.9914 0.1273 + 0.2866 0.6628 0.6918 + 0.5023 0.8401 0.205 + 0.5307 0.8476 -0 + 0.13 0.9915 -0 + 0.5023 0.8401 -0.205 + -0.2648 0.0459 0.9632 + 0.1567 0.041 0.9868 + -0.1162 0.1321 0.9844 + 0.9042 0.0692 -0.4215 + 0.2648 0.0459 -0.9632 + 0.8312 0.3867 -0.3995 + 0.9974 0.0717 -0 + 0.9246 0.3808 -0 + 0.9042 0.0692 0.4215 + 0.8312 0.3867 0.3995 + -0.9042 0.0692 -0.4215 + -0.8312 0.3867 -0.3995 + -0.1567 0.0411 -0.9868 + -0.9974 0.0717 -0 + -0.9246 0.3808 -0 + -0.8312 0.3867 0.3995 + -0.9042 0.0692 0.4215 + 0.104 0.1585 -0.9819 + 0.1564 0.2214 0.9626 + -0.1859 0.1911 -0.9638 + 0.0115 -0.9621 -0.2724 + -0.0003 0.9905 -0.1377 + } + } + } + $lod 1 { + #lodFactor 0.15 + $mesh "ZappyBoy1000" { + #texCoords 1 + $faces { + 3 3 0 1 2 + 3 3 3 4 5 + 3 3 6 7 8 + 3 3 9 10 11 + 3 3 12 13 14 + 3 3 15 16 17 + 3 3 18 19 20 + 3 3 21 22 23 + 3 3 24 25 26 + 3 3 27 28 29 + 3 3 30 31 32 + 3 3 33 34 35 + 3 3 36 37 38 + 3 3 39 40 41 + 3 3 42 43 44 + 3 3 45 46 47 + 3 3 48 49 50 + 3 3 51 52 53 + 3 3 54 55 56 + 3 3 57 58 59 + 3 3 60 61 62 + 3 3 63 64 65 + 3 3 66 67 68 + 3 3 69 70 71 + 3 3 72 73 74 + 3 3 75 76 77 + 3 3 78 79 80 + 3 3 81 82 83 + 3 3 84 85 86 + 3 3 87 88 89 + 3 3 90 91 92 + 3 3 93 94 95 + 3 3 96 97 98 + 3 3 99 100 101 + 3 3 102 103 104 + 3 3 105 106 107 + 3 3 108 109 110 + 3 3 111 112 113 + 3 3 114 115 116 + 3 3 117 118 119 + 3 3 120 121 122 + 3 3 123 124 125 + 3 3 126 127 128 + 3 3 129 130 131 + 3 3 132 133 134 + 3 3 135 136 137 + 3 3 138 139 140 + 3 3 141 142 143 + 3 3 144 145 146 + 3 3 147 148 149 + 3 3 150 151 152 + 3 3 153 154 155 + 3 3 156 157 158 + 3 3 159 160 161 + 3 3 162 163 164 + 3 3 165 166 167 + 3 3 168 169 170 + 3 3 171 172 173 + 3 3 174 175 176 + 3 3 177 178 179 + 3 3 180 181 182 + 3 3 183 184 185 + 3 3 186 187 188 + 3 3 189 190 191 + 3 3 192 193 194 + 3 3 195 196 197 + 3 3 198 199 200 + 3 3 201 202 203 + 3 3 204 205 206 + 3 3 207 208 209 + 3 3 210 211 212 + 3 3 213 214 215 + 3 3 216 217 218 + 3 3 219 220 221 + 3 3 222 223 224 + 3 3 225 226 227 + 3 3 228 229 230 + 3 3 231 232 233 + 3 3 234 235 236 + 3 3 237 238 239 + 3 3 240 241 242 + 3 3 243 244 245 + 3 3 246 247 248 + 3 3 249 250 251 + 3 3 252 253 254 + 3 3 255 256 257 + 3 3 258 259 260 + 3 3 261 262 263 + 3 3 264 265 266 + 3 3 267 268 269 + 3 3 270 271 272 + 3 3 273 274 275 + 3 3 276 277 278 + 3 3 279 280 281 + 3 3 282 283 284 + 3 3 285 286 287 + 3 3 288 289 290 + 3 3 291 292 293 + 3 3 294 295 296 + 3 3 297 298 299 + 3 3 300 301 302 + 3 3 303 304 305 + 3 3 306 307 308 + 3 3 309 310 311 + 3 3 312 313 314 + 3 3 315 316 317 + 3 3 318 319 320 + 3 3 321 322 323 + 3 3 324 325 326 + 3 3 327 328 329 + 3 3 330 331 332 + 3 3 333 334 335 + 3 3 336 337 338 + 3 3 339 340 341 + 3 3 342 343 344 + 3 3 345 346 347 + 3 3 348 349 350 + 3 3 351 352 353 + 3 3 354 355 356 + 3 3 357 358 359 + 3 3 360 361 362 + 3 3 363 364 365 + 3 3 366 367 368 + 3 3 369 370 371 + 3 3 372 373 374 + 3 3 375 376 377 + 3 3 378 379 380 + 3 3 381 382 383 + 3 3 384 385 386 + 3 3 387 388 389 + 3 3 390 391 392 + 3 3 393 394 395 + 3 3 396 397 398 + 3 3 399 400 401 + 3 3 402 403 404 + 3 3 405 406 407 + 3 3 408 409 410 + 3 3 411 412 413 + 3 3 414 415 416 + 3 3 417 418 419 + 3 3 420 421 422 + 3 3 423 424 425 + 3 3 426 427 428 + 3 3 429 430 431 + 3 3 432 433 434 + 3 3 435 436 437 + 3 3 438 439 440 + 3 3 441 442 443 + 3 3 444 445 446 + 3 3 447 448 449 + 3 3 450 451 452 + 3 3 453 454 455 + 3 3 456 457 458 + 3 3 459 460 461 + 3 3 462 463 464 + 3 3 465 466 467 + 3 3 468 469 470 + 3 3 471 472 473 + 3 3 474 475 476 + 3 3 477 478 479 + 3 3 480 481 482 + 3 3 483 484 485 + 3 3 486 487 488 + 3 3 489 490 491 + 3 3 492 493 494 + 3 3 495 496 497 + 3 3 498 499 500 + 3 3 501 502 503 + 3 3 504 505 506 + 3 3 507 508 509 + 3 3 510 511 512 + 3 3 513 514 515 + 3 3 516 517 518 + 3 3 519 520 521 + 3 3 522 523 524 + 3 3 525 526 527 + 3 3 528 529 530 + 3 3 531 532 533 + 3 3 534 535 536 + 3 3 537 538 539 + 3 3 540 541 542 + 3 3 543 544 545 + 3 3 546 547 548 + 3 3 549 550 551 + 3 3 552 553 554 + 3 3 555 556 557 + 3 3 558 559 560 + 3 3 561 562 563 + 3 3 564 565 566 + 3 3 567 568 569 + 3 3 570 571 572 + 3 3 573 574 575 + 3 3 576 577 578 + 3 3 579 580 581 + 3 3 582 583 584 + 3 3 585 586 587 + 3 3 588 589 590 + 3 3 591 592 593 + 3 3 594 595 596 + 3 3 597 598 599 + 3 3 600 601 602 + 3 3 603 604 605 + 3 3 606 607 608 + 3 3 609 610 611 + 3 3 612 613 614 + 3 3 615 616 617 + 3 3 618 619 620 + 3 3 621 622 623 + 3 3 624 625 626 + 3 3 627 628 629 + 3 3 630 631 632 + 3 3 633 634 635 + 3 3 636 637 638 + 3 3 639 640 641 + 3 3 642 643 644 + 3 3 645 646 647 + 3 3 648 649 650 + 3 3 651 652 653 + 3 3 654 655 656 + 3 3 657 658 659 + 3 3 660 661 662 + 3 3 663 664 665 + 3 3 666 667 668 + 3 3 669 670 671 + 3 3 672 673 674 + 3 3 675 676 677 + 3 3 678 679 680 + 3 3 681 682 683 + 3 3 684 685 686 + 3 3 687 688 689 + 3 3 690 691 692 + 3 3 693 694 695 + 3 3 696 697 698 + 3 3 699 700 701 + 3 3 702 703 704 + 3 3 705 706 707 + 3 3 708 709 710 + 3 3 711 712 713 + 3 3 714 715 716 + 3 3 717 718 719 + 3 3 720 721 722 + 3 3 723 724 725 + 3 3 726 727 728 + 3 3 729 730 731 + 3 3 732 733 734 + 3 3 735 736 737 + 3 3 738 739 740 + 3 3 741 742 743 + 3 3 744 745 746 + 3 3 747 748 749 + 3 3 750 751 752 + 3 3 753 754 755 + 3 3 756 757 758 + 3 3 759 760 761 + 3 3 762 763 764 + 3 3 765 766 767 + 3 3 768 769 770 + 3 3 771 772 773 + 3 3 774 775 776 + 3 3 777 778 779 + 3 3 780 781 782 + 3 3 783 784 785 + 3 3 786 787 788 + 3 3 789 790 791 + 3 3 792 793 794 + 3 3 795 796 797 + 3 3 798 799 800 + 3 3 801 802 803 + 3 3 804 805 806 + 3 3 807 808 809 + 3 3 810 811 812 + 3 3 813 814 815 + 3 3 816 817 818 + 3 3 819 820 821 + 3 3 822 823 824 + 3 3 825 826 827 + 3 3 828 829 830 + 3 3 831 832 833 + 3 3 834 835 836 + 3 3 837 838 839 + 3 3 840 841 842 + 3 3 843 844 845 + 3 3 846 847 848 + 3 3 849 850 851 + 3 3 852 853 854 + 3 3 855 856 857 + 3 3 858 859 860 + 3 3 861 862 863 + 3 3 864 865 866 + 3 3 867 868 869 + 3 3 870 871 872 + 3 3 873 874 875 + 3 3 876 877 878 + 3 3 879 880 881 + 3 3 882 883 884 + 3 3 885 886 887 + 3 3 888 889 890 + 3 3 891 892 893 + 3 3 894 895 896 + 3 3 897 898 899 + 3 3 900 901 902 + 3 3 903 904 905 + 3 3 906 907 908 + 3 3 909 910 911 + 3 3 912 913 914 + 3 3 915 916 917 + 3 3 918 919 920 + 3 3 921 922 923 + 3 3 924 925 926 + 3 3 927 928 929 + 3 3 930 931 932 + 3 3 933 934 935 + 3 3 936 937 938 + 3 3 939 940 941 + 3 3 942 943 944 + 3 3 945 946 947 + 3 3 948 949 950 + 3 3 951 952 953 + 3 3 954 955 956 + 3 3 957 958 959 + 3 3 960 961 962 + 3 3 963 964 965 + 3 3 966 967 968 + 3 3 969 970 971 + 3 3 972 973 974 + 3 3 975 976 977 + 3 3 978 979 980 + 3 3 981 982 983 + 3 3 984 985 986 + 3 3 987 988 989 + 3 3 990 991 992 + 3 3 993 994 995 + 3 3 996 997 998 + 3 3 999 1000 1001 + 3 3 1002 1003 1004 + 3 3 1005 1006 1007 + 3 3 1008 1009 1010 + 3 3 1011 1012 1013 + 3 3 1014 1015 1016 + 3 3 1017 1018 1019 + 3 3 1020 1021 1022 + 3 3 1023 1024 1025 + 3 3 1026 1027 1028 + 3 3 1029 1030 1031 + 3 3 1032 1033 1034 + 3 3 1035 1036 1037 + 3 3 1038 1039 1040 + 3 3 1041 1042 1043 + 3 3 1044 1045 1046 + 3 3 1047 1048 1049 + 3 3 1050 1051 1052 + 3 3 1053 1054 1055 + 3 3 1056 1057 1058 + 3 3 1059 1060 1061 + 3 3 1062 1063 1064 + 3 3 1065 1066 1067 + 3 3 1068 1069 1070 + 3 3 1071 1072 1073 + 3 3 1074 1075 1076 + 3 3 1077 1078 1079 + 3 3 1080 1081 1082 + 3 3 1083 1084 1085 + 3 3 1086 1087 1088 + 3 3 1089 1090 1091 + 3 3 1092 1093 1094 + 3 3 1095 1096 1097 + 3 3 1098 1099 1100 + 3 3 1101 1102 1103 + 3 3 1104 1105 1106 + 3 3 1107 1108 1109 + 3 3 1110 1111 1112 + 3 3 1113 1114 1115 + 3 3 1116 1117 1118 + 3 3 1119 1120 1121 + 3 3 1122 1123 1124 + 3 3 1125 1126 1127 + 3 3 1128 1129 1130 + 3 3 1131 1132 1133 + 3 3 1134 1135 1136 + 3 3 1137 1138 1139 + 3 3 1140 1141 1142 + 3 3 1143 1144 1145 + 3 3 1146 1147 1148 + 3 3 1149 1150 1151 + 3 3 1152 1153 1154 + 3 3 1155 1156 1157 + 3 3 1158 1159 1160 + 3 3 1161 1162 1163 + 3 3 1164 1165 1166 + 3 3 1167 1168 1169 + 3 3 1170 1171 1172 + 3 3 1173 1174 1175 + 3 3 1176 1177 1178 + 3 3 1179 1180 1181 + 3 3 1182 1183 1184 + 3 3 1185 1186 1187 + 3 3 1188 1189 1190 + 3 3 1191 1192 1193 + 3 3 1194 1195 1196 + 3 3 1197 1198 1199 + 3 3 1200 1201 1202 + 3 3 1203 1204 1205 + 3 3 1206 1207 1208 + 3 3 1209 1210 1211 + 3 3 1212 1213 1214 + 3 3 1215 1216 1217 + 3 3 1218 1219 1220 + 3 3 1221 1222 1223 + 3 3 1224 1225 1226 + 3 3 1227 1228 1229 + 3 3 1230 1231 1232 + 3 3 1233 1234 1235 + 3 3 1236 1237 1238 + 3 3 1239 1240 1241 + 3 3 1242 1243 1244 + 3 3 1245 1246 1247 + 3 3 1248 1249 1250 + 3 3 1251 1252 1253 + 3 3 1254 1255 1256 + 3 3 1257 1258 1259 + 3 3 1260 1261 1262 + 3 3 1263 1264 1265 + 3 3 1266 1267 1268 + 3 3 1269 1270 1271 + 3 3 1272 1273 1274 + 3 3 1275 1276 1277 + 3 3 1278 1279 1280 + 3 3 1281 1282 1283 + 3 3 1284 1285 1286 + 3 3 1287 1288 1289 + 3 3 1290 1291 1292 + 3 3 1293 1294 1295 + 3 3 1296 1297 1298 + 3 3 1299 1300 1301 + 3 3 1302 1303 1304 + 3 3 1305 1306 1307 + 3 3 1308 1309 1310 + 3 3 1311 1312 1313 + 3 3 1314 1315 1316 + 3 3 1317 1318 1319 + 3 3 1320 1321 1322 + 3 3 1323 1324 1325 + 3 3 1326 1327 1328 + 3 3 1329 1330 1331 + 3 3 1332 1333 1334 + 3 3 1335 1336 1337 + 3 3 1338 1339 1340 + 3 3 1341 1342 1343 + 3 3 1344 1345 1346 + 3 3 1347 1348 1349 + 3 3 1350 1351 1352 + 3 3 1353 1354 1355 + 3 3 1356 1357 1358 + 3 3 1359 1360 1361 + 3 3 1362 1363 1364 + 3 3 1365 1366 1367 + 3 3 1368 1369 1370 + 3 3 1371 1372 1373 + 3 3 1374 1375 1376 + 3 3 1377 1378 1379 + 3 3 1380 1381 1382 + 3 3 1383 1384 1385 + 3 3 1386 1387 1388 + 3 3 1389 1390 1391 + 3 3 1392 1393 1394 + 3 3 1395 1396 1397 + 3 3 1398 1399 1400 + 3 3 1401 1402 1403 + 3 3 1404 1405 1406 + 3 3 1407 1408 1409 + 3 3 1410 1411 1412 + 3 3 1413 1414 1415 + 3 3 1416 1417 1418 + 3 3 1419 1420 1421 + 3 3 1422 1423 1424 + 3 3 1425 1426 1427 + 3 3 1428 1429 1430 + 3 3 1431 1432 1433 + 3 3 1434 1435 1436 + 3 3 1437 1438 1439 + 3 3 1440 1441 1442 + 3 3 1443 1444 1445 + 3 3 1446 1447 1448 + 3 3 1449 1450 1451 + 3 3 1452 1453 1454 + 3 3 1455 1456 1457 + 3 3 1458 1459 1460 + 3 3 1461 1462 1463 + 3 3 1464 1465 1466 + 3 3 1467 1468 1469 + 3 3 1470 1471 1472 + 3 3 1473 1474 1475 + 3 3 1476 1477 1478 + 3 3 1479 1480 1481 + 3 3 1482 1483 1484 + 3 3 1485 1486 1487 + 3 3 1488 1489 1490 + 3 3 1491 1492 1493 + 3 3 1494 1495 1496 + 3 3 1497 1498 1499 + 3 3 1500 1501 1502 + 3 3 1503 1504 1505 + 3 3 1506 1507 1508 + 3 3 1509 1510 1511 + 3 3 1512 1513 1514 + 3 3 1515 1516 1517 + 3 3 1518 1519 1520 + 3 3 1521 1522 1523 + 3 3 1524 1525 1526 + 3 3 1527 1528 1529 + 3 3 1530 1531 1532 + 3 3 1533 1534 1535 + 3 3 1536 1537 1538 + 3 3 1539 1540 1541 + 3 3 1542 1543 1544 + 3 3 1545 1546 1547 + 3 3 1548 1549 1550 + 3 3 1551 1552 1553 + 3 3 1554 1555 1556 + 3 3 1557 1558 1559 + 3 3 1560 1561 1562 + 3 3 1563 1564 1565 + 3 3 1566 1567 1568 + 3 3 1569 1570 1571 + 3 3 1572 1573 1574 + 3 3 1575 1576 1577 + 3 3 1578 1579 1580 + 3 3 1581 1582 1583 + 3 3 1584 1585 1586 + 3 3 1587 1588 1589 + 3 3 1590 1591 1592 + 3 3 1593 1594 1595 + 3 3 1596 1597 1598 + 3 3 1599 1600 1601 + 3 3 1602 1603 1604 + 3 3 1605 1606 1607 + 3 3 1608 1609 1610 + 3 3 1611 1612 1613 + 3 3 1614 1615 1616 + 3 3 1617 1618 1619 + 3 3 1620 1621 1622 + 3 3 1623 1624 1625 + } + $faceVerts { + 15 0 0 + 47 1 1 + 14 2 2 + 31 3 3 + 30 4 4 + 47 1 5 + 19 5 6 + 35 6 7 + 20 7 8 + 20 7 8 + 36 8 9 + 21 9 10 + 21 9 10 + 37 10 11 + 22 11 12 + 22 11 12 + 38 12 13 + 23 13 14 + 23 13 14 + 39 14 15 + 24 15 16 + 24 15 16 + 40 16 17 + 25 17 18 + 25 17 18 + 41 18 19 + 26 19 20 + 26 19 20 + 42 20 21 + 27 21 22 + 27 21 22 + 43 22 23 + 28 23 24 + 44 24 25 + 45 25 26 + 28 23 24 + 45 25 26 + 46 26 27 + 29 27 28 + 18 28 29 + 34 29 30 + 19 5 6 + 1 30 31 + 32 31 32 + 0 32 33 + 2 33 34 + 34 29 35 + 1 30 31 + 3 34 36 + 35 6 37 + 2 33 34 + 4 35 38 + 36 8 39 + 3 34 36 + 4 35 40 + 5 36 41 + 36 8 42 + 5 36 41 + 6 37 43 + 37 10 44 + 6 37 43 + 7 38 45 + 38 12 46 + 7 38 45 + 8 39 47 + 39 14 48 + 8 39 47 + 9 40 49 + 40 16 50 + 9 40 49 + 10 41 51 + 41 18 52 + 10 41 51 + 11 42 53 + 42 20 54 + 11 42 53 + 12 43 55 + 43 22 56 + 13 44 57 + 45 25 58 + 12 43 55 + 14 2 2 + 46 26 59 + 13 44 57 + 34 29 30 + 18 28 29 + 32 31 60 + 33 45 61 + 17 46 62 + 47 1 5 + 16 47 63 + 48 48 64 + 17 46 62 + 115 49 65 + 223 50 66 + 114 51 67 + 0 32 33 + 33 45 68 + 15 0 0 + 26 19 20 + 48 48 64 + 25 17 18 + 19 5 6 + 48 48 64 + 18 28 29 + 27 21 22 + 48 48 64 + 26 19 20 + 20 7 8 + 48 48 64 + 19 5 6 + 28 23 24 + 48 48 64 + 27 21 22 + 21 9 10 + 48 48 64 + 20 7 8 + 29 27 28 + 48 48 64 + 28 23 24 + 22 11 12 + 48 48 64 + 21 9 10 + 30 4 4 + 48 48 64 + 29 27 28 + 23 13 14 + 48 48 64 + 22 11 12 + 31 3 3 + 48 48 64 + 30 4 4 + 24 15 16 + 48 48 64 + 23 13 14 + 17 46 62 + 48 48 64 + 31 3 3 + 25 17 18 + 48 48 64 + 24 15 16 + 18 28 29 + 48 48 64 + 16 47 63 + 61 52 69 + 67 53 70 + 55 54 71 + 117 55 72 + 116 56 73 + 225 57 74 + 56 58 75 + 57 59 76 + 50 60 77 + 102 61 78 + 62 62 79 + 103 63 80 + 279 64 81 + 278 65 82 + 55 54 71 + 57 59 76 + 56 58 75 + 100 66 83 + 93 67 84 + 98 68 85 + 164 69 86 + 99 70 87 + 92 71 88 + 51 72 89 + 55 54 71 + 71 73 90 + 279 64 81 + 55 54 71 + 64 74 91 + 71 73 90 + 53 75 92 + 240 76 93 + 59 77 94 + 108 78 95 + 76 79 96 + 109 80 97 + 134 81 98 + 135 82 99 + 180 83 100 + 159 84 101 + 162 85 102 + 88 86 103 + 79 87 104 + 59 77 94 + 242 88 105 + 76 79 106 + 108 78 107 + 146 89 108 + 90 90 109 + 89 91 110 + 56 58 75 + 88 86 103 + 87 92 111 + 159 84 101 + 190 93 112 + 191 94 113 + 208 95 114 + 101 96 115 + 94 97 116 + 172 98 117 + 58 99 118 + 57 59 76 + 86 100 119 + 85 101 120 + 101 96 115 + 156 102 121 + 66 103 122 + 60 104 123 + 79 87 104 + 54 105 124 + 53 75 92 + 60 104 123 + 205 106 125 + 204 107 126 + 199 108 127 + 61 52 69 + 73 109 128 + 67 53 70 + 62 62 79 + 102 61 78 + 114 51 67 + 50 60 77 + 91 110 129 + 56 58 75 + 68 111 130 + 74 112 131 + 137 113 132 + 75 114 133 + 76 79 106 + 145 115 134 + 250 116 135 + 252 117 136 + 80 118 137 + 117 55 72 + 225 57 74 + 115 49 65 + 78 119 138 + 81 120 139 + 54 105 124 + 207 121 140 + 142 122 141 + 210 123 142 + 54 105 124 + 60 104 123 + 279 64 81 + 112 124 143 + 52 125 144 + 110 126 145 + 93 67 146 + 92 71 88 + 98 68 147 + 69 127 148 + 195 128 149 + 78 119 138 + 163 129 150 + 119 130 151 + 159 84 152 + 111 131 153 + 115 49 65 + 113 132 154 + 210 123 142 + 140 133 155 + 214 134 156 + 113 132 154 + 112 124 143 + 111 131 153 + 75 114 157 + 77 135 158 + 76 79 96 + 75 114 157 + 74 112 159 + 77 135 158 + 250 116 160 + 80 118 161 + 242 88 105 + 60 104 123 + 66 103 122 + 278 65 82 + 63 136 162 + 72 137 163 + 64 74 91 + 70 138 164 + 69 127 148 + 72 137 163 + 89 91 165 + 160 139 166 + 94 97 116 + 68 111 167 + 67 53 70 + 74 112 159 + 68 111 167 + 63 136 162 + 67 53 70 + 194 140 168 + 82 141 169 + 78 119 138 + 65 142 170 + 66 103 122 + 80 118 161 + 222 143 171 + 227 144 172 + 114 51 67 + 104 145 173 + 102 61 78 + 105 146 174 + 154 147 175 + 155 148 176 + 175 149 177 + 97 150 178 + 96 151 179 + 106 152 180 + 85 101 181 + 106 152 180 + 86 100 119 + 94 97 182 + 101 96 183 + 95 153 184 + 83 154 185 + 84 155 186 + 99 70 87 + 101 96 183 + 85 101 181 + 100 66 83 + 83 154 185 + 99 70 87 + 52 125 144 + 88 86 187 + 92 71 88 + 87 92 188 + 95 153 184 + 89 91 110 + 94 97 182 + 145 115 134 + 144 156 189 + 75 114 133 + 195 128 149 + 69 127 148 + 70 138 164 + 116 56 190 + 188 157 191 + 224 158 192 + 61 52 69 + 109 80 97 + 73 109 128 + 102 61 78 + 104 145 173 + 113 132 154 + 104 145 173 + 83 154 185 + 112 124 143 + 187 159 193 + 186 160 194 + 229 161 195 + 110 126 145 + 58 99 118 + 107 162 196 + 111 131 153 + 271 163 197 + 115 49 65 + 97 150 178 + 274 164 198 + 96 151 179 + 130 165 199 + 280 166 200 + 124 167 201 + 52 125 144 + 51 72 89 + 58 99 118 + 180 83 202 + 108 78 107 + 134 81 203 + 137 113 204 + 132 168 205 + 68 111 206 + 85 101 120 + 156 102 121 + 106 152 207 + 124 167 201 + 133 169 208 + 130 165 199 + 230 170 209 + 188 157 210 + 231 171 211 + 151 172 212 + 134 81 203 + 80 118 137 + 120 173 213 + 126 174 214 + 119 130 151 + 173 175 215 + 174 176 216 + 131 177 217 + 166 178 218 + 125 179 219 + 171 180 220 + 119 130 151 + 163 129 150 + 120 173 213 + 124 167 201 + 281 181 221 + 141 182 222 + 133 169 208 + 124 167 201 + 141 182 222 + 245 183 223 + 244 184 224 + 128 185 225 + 105 146 226 + 176 186 227 + 84 155 228 + 180 83 100 + 181 187 229 + 146 89 230 + 245 183 223 + 128 185 225 + 246 188 231 + 91 110 232 + 162 85 102 + 90 90 233 + 63 136 234 + 207 121 140 + 212 189 235 + 161 190 236 + 125 179 219 + 160 139 237 + 243 191 238 + 82 141 239 + 248 192 240 + 157 193 241 + 171 180 220 + 127 194 242 + 237 195 243 + 118 196 244 + 174 176 245 + 128 185 225 + 129 197 246 + 150 198 247 + 128 185 225 + 122 199 248 + 129 197 246 + 82 141 239 + 194 140 249 + 209 200 250 + 155 148 251 + 169 201 252 + 84 155 228 + 143 202 253 + 130 165 199 + 136 203 254 + 185 204 255 + 173 175 215 + 186 160 194 + 212 189 235 + 211 205 256 + 72 137 257 + 119 130 151 + 125 179 219 + 162 85 258 + 105 146 226 + 103 63 259 + 176 186 227 + 218 206 260 + 234 207 261 + 217 208 262 + 189 209 263 + 187 159 193 + 231 171 211 + 122 199 248 + 152 210 264 + 123 211 265 + 164 69 86 + 158 212 266 + 93 67 84 + 127 194 242 + 121 213 267 + 182 214 268 + 164 69 269 + 169 201 270 + 163 129 150 + 138 215 271 + 148 216 272 + 192 217 273 + 232 218 274 + 118 196 244 + 239 219 275 + 186 160 194 + 187 159 193 + 185 204 255 + 182 214 268 + 184 220 276 + 183 221 277 + 147 222 278 + 145 115 279 + 146 89 230 + 145 115 279 + 147 222 278 + 144 156 280 + 246 188 231 + 150 198 247 + 252 117 281 + 181 187 229 + 135 82 99 + 280 166 200 + 132 168 282 + 133 169 208 + 142 122 283 + 141 182 222 + 138 215 271 + 142 122 283 + 143 202 253 + 136 203 254 + 144 156 280 + 136 203 254 + 133 169 208 + 137 113 284 + 191 94 285 + 148 216 272 + 153 223 286 + 150 198 247 + 135 82 99 + 151 172 287 + 233 224 288 + 228 225 289 + 131 177 217 + 175 149 177 + 176 186 290 + 173 175 215 + 178 226 291 + 167 227 292 + 177 228 293 + 156 102 294 + 157 193 241 + 177 228 293 + 165 229 295 + 166 178 218 + 172 98 296 + 169 201 270 + 155 148 176 + 170 230 297 + 171 180 220 + 157 193 241 + 172 98 296 + 154 147 175 + 121 213 267 + 170 230 297 + 164 69 269 + 163 129 150 + 158 212 298 + 160 139 237 + 166 178 218 + 165 229 295 + 211 205 256 + 213 231 299 + 70 138 300 + 138 215 271 + 192 217 273 + 140 133 301 + 97 150 302 + 106 152 207 + 168 232 303 + 173 175 215 + 185 204 255 + 175 149 177 + 175 149 177 + 184 220 276 + 154 147 175 + 236 233 304 + 49 234 305 + 238 235 306 + 182 214 268 + 178 226 291 + 127 194 242 + 183 221 277 + 187 159 193 + 268 236 307 + 168 232 308 + 167 227 292 + 273 237 309 + 121 213 267 + 127 194 242 + 120 173 213 + 149 238 310 + 276 239 311 + 139 240 312 + 179 241 313 + 214 134 156 + 139 240 312 + 139 240 312 + 192 217 314 + 149 238 310 + 276 239 311 + 190 93 112 + 179 241 313 + 276 239 311 + 149 238 310 + 190 93 112 + 197 242 315 + 195 128 316 + 198 243 317 + 194 140 249 + 195 128 316 + 196 244 318 + 193 245 319 + 194 140 249 + 219 246 320 + 198 243 317 + 213 231 299 + 219 246 320 + 220 247 321 + 201 248 322 + 219 246 320 + 198 243 317 + 219 246 320 + 200 249 323 + 198 243 317 + 200 249 323 + 197 242 315 + 201 248 324 + 203 250 325 + 200 249 326 + 200 249 327 + 206 251 328 + 199 108 329 + 202 252 330 + 204 107 126 + 221 253 331 + 161 190 332 + 160 139 166 + 90 90 333 + 91 110 129 + 50 60 77 + 88 86 187 + 248 192 240 + 209 200 250 + 249 254 334 + 193 245 319 + 190 93 112 + 209 200 250 + 214 134 156 + 216 255 335 + 210 123 142 + 213 231 299 + 211 205 256 + 215 256 336 + 216 255 335 + 214 134 156 + 190 93 112 + 213 231 299 + 215 256 336 + 193 245 319 + 218 206 337 + 236 233 304 + 234 207 338 + 207 121 140 + 216 255 335 + 212 189 235 + 190 93 112 + 193 245 319 + 216 255 335 + 109 80 97 + 66 103 122 + 108 78 95 + 196 244 318 + 197 242 315 + 202 252 339 + 196 244 318 + 221 253 340 + 219 246 320 + 202 252 339 + 221 253 340 + 196 244 318 + 83 154 185 + 104 145 173 + 84 155 186 + 265 257 341 + 263 258 342 + 239 219 275 + 263 258 343 + 255 259 344 + 232 218 345 + 260 260 346 + 228 225 289 + 255 259 344 + 260 260 346 + 261 261 347 + 228 225 289 + 259 262 348 + 226 263 349 + 254 264 350 + 254 264 350 + 227 144 172 + 256 265 351 + 239 219 275 + 237 195 243 + 235 266 352 + 217 208 353 + 237 195 243 + 218 206 337 + 238 235 306 + 239 219 275 + 234 207 338 + 220 247 354 + 221 253 331 + 267 267 355 + 203 250 325 + 267 267 355 + 206 251 328 + 49 234 356 + 62 62 79 + 226 263 349 + 53 75 92 + 81 120 139 + 240 76 93 + 243 191 357 + 251 268 358 + 82 141 169 + 233 224 288 + 131 177 217 + 232 218 345 + 244 184 224 + 253 269 359 + 122 199 248 + 153 223 286 + 152 210 264 + 247 270 360 + 208 95 114 + 153 223 361 + 249 254 334 + 264 271 362 + 248 192 240 + 265 257 341 + 224 158 192 + 230 170 363 + 250 116 135 + 259 262 364 + 243 191 238 + 264 271 362 + 261 261 347 + 245 183 223 + 262 272 365 + 260 260 346 + 244 184 224 + 261 261 347 + 231 171 211 + 262 272 365 + 246 188 231 + 242 88 105 + 258 273 366 + 250 116 160 + 256 265 351 + 257 274 367 + 240 76 93 + 242 88 105 + 241 275 368 + 258 273 366 + 256 265 351 + 222 143 171 + 257 274 367 + 225 57 74 + 258 273 366 + 223 50 66 + 229 161 195 + 261 261 347 + 231 171 211 + 226 263 369 + 259 262 364 + 238 235 306 + 264 271 362 + 265 257 341 + 238 235 306 + 240 76 93 + 251 268 358 + 256 265 351 + 259 262 348 + 254 264 350 + 243 191 357 + 244 184 224 + 260 260 346 + 253 269 359 + 253 269 359 + 255 259 344 + 247 270 360 + 249 254 334 + 247 270 370 + 265 257 341 + 267 267 355 + 203 250 325 + 220 247 354 + 266 276 371 + 204 107 126 + 205 106 125 + 206 251 328 + 267 267 355 + 205 106 125 + 116 56 73 + 117 55 72 + 269 277 372 + 270 278 373 + 188 157 191 + 269 277 374 + 274 164 375 + 168 232 303 + 273 237 376 + 167 227 292 + 178 226 291 + 275 279 377 + 268 236 307 + 189 209 263 + 270 278 378 + 274 164 198 + 269 277 372 + 272 280 379 + 268 236 307 + 270 278 378 + 275 279 377 + 268 236 307 + 275 279 377 + 183 221 277 + 271 163 197 + 111 131 153 + 272 280 379 + 96 151 179 + 272 280 379 + 107 162 196 + 283 281 380 + 277 282 381 + 284 283 382 + 224 158 383 + 250 116 160 + 225 57 74 + 69 127 148 + 78 119 138 + 279 64 81 + 143 202 253 + 147 222 278 + 181 187 229 + 280 166 200 + 129 197 246 + 281 181 221 + 123 211 265 + 148 216 272 + 281 181 221 + 16 47 63 + 17 46 62 + 32 31 60 + 47 1 1 + 46 26 59 + 14 2 2 + 30 4 4 + 46 26 27 + 47 1 5 + 35 6 7 + 36 8 9 + 20 7 8 + 36 8 9 + 37 10 11 + 21 9 10 + 37 10 11 + 38 12 13 + 22 11 12 + 38 12 13 + 39 14 15 + 23 13 14 + 39 14 15 + 40 16 17 + 24 15 16 + 40 16 17 + 41 18 19 + 25 17 18 + 41 18 19 + 42 20 21 + 26 19 20 + 42 20 21 + 43 22 23 + 27 21 22 + 43 22 23 + 44 24 25 + 28 23 24 + 45 25 26 + 29 27 28 + 28 23 24 + 46 26 27 + 30 4 4 + 29 27 28 + 34 29 30 + 35 6 7 + 19 5 6 + 32 31 32 + 33 45 68 + 0 32 33 + 34 29 35 + 32 31 32 + 1 30 31 + 35 6 37 + 34 29 35 + 2 33 34 + 36 8 39 + 35 6 37 + 3 34 36 + 5 36 41 + 37 10 44 + 36 8 42 + 6 37 43 + 38 12 46 + 37 10 44 + 7 38 45 + 39 14 48 + 38 12 46 + 8 39 47 + 40 16 50 + 39 14 48 + 9 40 49 + 41 18 52 + 40 16 50 + 10 41 51 + 42 20 54 + 41 18 52 + 11 42 53 + 43 22 56 + 42 20 54 + 12 43 55 + 44 24 384 + 43 22 56 + 45 25 58 + 44 24 384 + 12 43 55 + 46 26 59 + 45 25 58 + 13 44 57 + 18 28 29 + 16 47 63 + 32 31 60 + 17 46 62 + 31 3 3 + 47 1 5 + 223 50 66 + 222 143 171 + 114 51 67 + 33 45 68 + 47 1 1 + 15 0 0 + 67 53 70 + 64 74 91 + 55 54 71 + 116 56 73 + 224 158 383 + 225 57 74 + 57 59 76 + 51 72 89 + 50 60 77 + 62 62 79 + 49 234 356 + 103 63 80 + 278 65 82 + 61 52 69 + 55 54 71 + 56 58 75 + 95 153 184 + 100 66 83 + 98 68 85 + 169 201 252 + 164 69 86 + 92 71 88 + 50 60 77 + 51 72 89 + 71 73 90 + 69 127 148 + 279 64 81 + 240 76 93 + 241 275 368 + 59 77 94 + 76 79 96 + 77 135 158 + 109 80 97 + 135 82 99 + 181 187 229 + 180 83 100 + 162 85 102 + 91 110 232 + 88 86 103 + 59 77 94 + 241 275 368 + 242 88 105 + 108 78 107 + 180 83 202 + 146 89 108 + 89 91 110 + 95 153 184 + 56 58 75 + 87 92 111 + 158 212 266 + 159 84 101 + 191 94 113 + 153 223 361 + 208 95 114 + 94 97 116 + 165 229 385 + 172 98 117 + 57 59 76 + 100 66 83 + 86 100 119 + 101 96 115 + 172 98 117 + 156 102 121 + 60 104 123 + 59 77 94 + 79 87 104 + 53 75 92 + 59 77 94 + 60 104 123 + 204 107 126 + 202 252 386 + 199 108 127 + 102 61 78 + 113 132 154 + 114 51 67 + 91 110 129 + 90 90 109 + 56 58 75 + 74 112 131 + 144 156 189 + 137 113 132 + 76 79 106 + 146 89 108 + 145 115 134 + 252 117 136 + 151 172 212 + 80 118 137 + 225 57 74 + 223 50 66 + 115 49 65 + 81 120 139 + 53 75 92 + 54 105 124 + 142 122 141 + 140 133 155 + 210 123 142 + 60 104 123 + 278 65 82 + 279 64 81 + 52 125 144 + 58 99 118 + 110 126 145 + 92 71 88 + 99 70 87 + 98 68 147 + 195 128 149 + 194 140 168 + 78 119 138 + 119 130 151 + 162 85 258 + 159 84 152 + 115 49 65 + 114 51 67 + 113 132 154 + 140 133 155 + 192 217 314 + 214 134 156 + 112 124 143 + 110 126 145 + 111 131 153 + 74 112 159 + 73 109 128 + 77 135 158 + 80 118 161 + 79 87 104 + 242 88 105 + 66 103 122 + 109 80 97 + 278 65 82 + 72 137 163 + 71 73 90 + 64 74 91 + 69 127 148 + 71 73 90 + 72 137 163 + 160 139 166 + 165 229 385 + 94 97 116 + 67 53 70 + 73 109 128 + 74 112 159 + 63 136 162 + 64 74 91 + 67 53 70 + 82 141 169 + 81 120 139 + 78 119 138 + 66 103 122 + 79 87 104 + 80 118 161 + 227 144 172 + 62 62 79 + 114 51 67 + 102 61 78 + 103 63 80 + 105 146 174 + 155 148 176 + 176 186 290 + 175 149 177 + 96 151 179 + 107 162 196 + 106 152 180 + 106 152 180 + 107 162 196 + 86 100 119 + 101 96 183 + 100 66 83 + 95 153 184 + 84 155 186 + 98 68 147 + 99 70 87 + 85 101 181 + 86 100 119 + 100 66 83 + 99 70 87 + 51 72 89 + 52 125 144 + 92 71 88 + 93 67 146 + 87 92 188 + 144 156 189 + 74 112 131 + 75 114 133 + 188 157 191 + 230 170 363 + 224 158 192 + 73 109 128 + 109 80 97 + 77 135 158 + 61 52 69 + 278 65 82 + 109 80 97 + 104 145 173 + 112 124 143 + 113 132 154 + 83 154 185 + 52 125 144 + 112 124 143 + 186 160 194 + 228 225 289 + 229 161 195 + 58 99 118 + 86 100 119 + 107 162 196 + 271 163 197 + 117 55 72 + 115 49 65 + 274 164 198 + 272 280 379 + 96 151 179 + 280 166 200 + 281 181 221 + 124 167 201 + 51 72 89 + 57 59 76 + 58 99 118 + 108 78 107 + 65 142 387 + 134 81 203 + 132 168 205 + 63 136 234 + 68 111 206 + 156 102 121 + 177 228 388 + 106 152 207 + 133 169 208 + 136 203 254 + 130 165 199 + 188 157 210 + 189 209 263 + 231 171 211 + 134 81 203 + 65 142 387 + 80 118 137 + 126 174 214 + 125 179 219 + 119 130 151 + 174 176 216 + 118 196 389 + 131 177 217 + 125 179 219 + 126 174 214 + 171 180 220 + 163 129 150 + 170 230 297 + 120 173 213 + 281 181 221 + 138 215 271 + 141 182 222 + 244 184 224 + 122 199 248 + 128 185 225 + 176 186 227 + 155 148 251 + 84 155 228 + 181 187 229 + 147 222 278 + 146 89 230 + 128 185 225 + 150 198 247 + 246 188 231 + 162 85 102 + 161 190 390 + 90 90 233 + 132 168 205 + 142 122 141 + 207 121 140 + 207 121 140 + 63 136 234 + 132 168 205 + 212 189 235 + 72 137 257 + 63 136 234 + 125 179 219 + 166 178 218 + 160 139 237 + 82 141 239 + 209 200 250 + 248 192 240 + 171 180 220 + 126 174 214 + 127 194 242 + 236 233 304 + 103 63 259 + 49 234 305 + 237 195 243 + 174 176 245 + 103 63 259 + 237 195 243 + 103 63 259 + 236 233 304 + 129 197 246 + 135 82 99 + 150 198 247 + 122 199 248 + 123 211 265 + 129 197 246 + 194 140 249 + 193 245 319 + 209 200 250 + 169 201 252 + 98 68 85 + 84 155 228 + 173 175 215 + 131 177 217 + 186 160 194 + 211 205 256 + 70 138 300 + 72 137 257 + 125 179 219 + 161 190 236 + 162 85 258 + 103 63 259 + 174 176 245 + 176 186 227 + 234 207 261 + 235 266 391 + 217 208 262 + 187 159 193 + 229 161 195 + 231 171 211 + 152 210 264 + 148 216 272 + 123 211 265 + 158 212 266 + 87 92 111 + 93 67 84 + 121 213 267 + 184 220 276 + 182 214 268 + 169 201 270 + 170 230 297 + 163 129 150 + 148 216 272 + 191 94 285 + 192 217 273 + 118 196 244 + 237 195 243 + 239 219 275 + 187 159 193 + 183 221 277 + 185 204 255 + 184 220 276 + 185 204 255 + 183 221 277 + 147 222 278 + 143 202 253 + 144 156 280 + 150 198 247 + 151 172 287 + 252 117 281 + 135 82 99 + 129 197 246 + 280 166 200 + 133 169 208 + 141 182 222 + 142 122 283 + 138 215 271 + 140 133 301 + 142 122 283 + 136 203 254 + 137 113 284 + 144 156 280 + 133 169 208 + 132 168 282 + 137 113 284 + 148 216 272 + 152 210 264 + 153 223 286 + 135 82 99 + 134 81 98 + 151 172 287 + 228 225 289 + 186 160 194 + 131 177 217 + 176 186 290 + 174 176 216 + 173 175 215 + 167 227 292 + 168 232 308 + 177 228 293 + 157 193 241 + 178 226 291 + 177 228 293 + 166 178 218 + 171 180 220 + 172 98 296 + 155 148 176 + 154 147 175 + 170 230 297 + 157 193 241 + 156 102 294 + 172 98 296 + 121 213 267 + 120 173 213 + 170 230 297 + 163 129 150 + 159 84 152 + 158 212 298 + 213 231 299 + 195 128 316 + 70 138 300 + 106 152 207 + 177 228 388 + 168 232 303 + 185 204 255 + 184 220 276 + 175 149 177 + 184 220 276 + 121 213 267 + 154 147 175 + 49 234 305 + 226 263 369 + 238 235 306 + 178 226 291 + 157 193 241 + 127 194 242 + 187 159 193 + 189 209 263 + 268 236 307 + 167 227 292 + 275 279 377 + 273 237 309 + 127 194 242 + 126 174 214 + 120 173 213 + 276 239 311 + 179 241 313 + 139 240 312 + 214 134 156 + 192 217 314 + 139 240 312 + 192 217 314 + 191 94 113 + 149 238 310 + 190 93 112 + 214 134 156 + 179 241 313 + 149 238 310 + 191 94 113 + 190 93 112 + 195 128 316 + 213 231 299 + 198 243 317 + 195 128 316 + 197 242 315 + 196 244 318 + 194 140 249 + 196 244 318 + 219 246 320 + 213 231 299 + 193 245 319 + 219 246 320 + 219 246 320 + 201 248 322 + 200 249 323 + 200 249 323 + 199 108 392 + 197 242 315 + 203 250 325 + 206 251 328 + 200 249 326 + 206 251 328 + 205 106 125 + 199 108 329 + 204 107 126 + 266 276 371 + 221 253 331 + 160 139 166 + 89 91 165 + 90 90 333 + 50 60 77 + 92 71 88 + 88 86 187 + 209 200 250 + 208 95 114 + 249 254 334 + 190 93 112 + 208 95 114 + 209 200 250 + 216 255 335 + 207 121 140 + 210 123 142 + 211 205 256 + 212 189 235 + 215 256 336 + 236 233 304 + 238 235 306 + 234 207 338 + 216 255 335 + 215 256 336 + 212 189 235 + 193 245 319 + 215 256 336 + 216 255 335 + 66 103 122 + 65 142 170 + 108 78 95 + 197 242 315 + 199 108 392 + 202 252 339 + 221 253 340 + 220 247 321 + 219 246 320 + 104 145 173 + 105 146 174 + 84 155 186 + 263 258 342 + 232 218 274 + 239 219 275 + 255 259 344 + 233 224 288 + 232 218 345 + 228 225 289 + 233 224 288 + 255 259 344 + 261 261 347 + 229 161 195 + 228 225 289 + 226 263 349 + 227 144 172 + 254 264 350 + 227 144 172 + 222 143 171 + 256 265 351 + 237 195 243 + 217 208 353 + 235 266 352 + 237 195 243 + 236 233 304 + 218 206 337 + 239 219 275 + 235 266 352 + 234 207 338 + 221 253 331 + 266 276 371 + 267 267 355 + 62 62 79 + 227 144 172 + 226 263 349 + 81 120 139 + 251 268 358 + 240 76 93 + 251 268 358 + 81 120 139 + 82 141 169 + 131 177 217 + 118 196 389 + 232 218 345 + 253 269 359 + 152 210 264 + 122 199 248 + 152 210 264 + 253 269 359 + 247 270 360 + 153 223 361 + 247 270 370 + 249 254 334 + 248 192 240 + 249 254 334 + 265 257 341 + 230 170 363 + 252 117 136 + 250 116 135 + 243 191 238 + 248 192 240 + 264 271 362 + 245 183 223 + 246 188 231 + 262 272 365 + 244 184 224 + 245 183 223 + 261 261 347 + 246 188 231 + 230 170 209 + 231 171 211 + 246 188 231 + 252 117 281 + 230 170 209 + 257 274 367 + 241 275 368 + 240 76 93 + 241 275 368 + 257 274 367 + 258 273 366 + 222 143 171 + 223 50 66 + 257 274 367 + 258 273 366 + 257 274 367 + 223 50 66 + 261 261 347 + 262 272 365 + 231 171 211 + 259 262 364 + 264 271 362 + 238 235 306 + 265 257 341 + 239 219 275 + 238 235 306 + 251 268 358 + 254 264 350 + 256 265 351 + 254 264 350 + 251 268 358 + 243 191 357 + 260 260 346 + 255 259 344 + 253 269 359 + 255 259 344 + 263 258 343 + 247 270 360 + 247 270 370 + 263 258 342 + 265 257 341 + 203 250 325 + 201 248 393 + 220 247 354 + 267 267 355 + 266 276 371 + 205 106 125 + 117 55 72 + 271 163 197 + 269 277 372 + 188 157 191 + 116 56 190 + 269 277 374 + 274 164 375 + 97 150 302 + 168 232 303 + 270 278 373 + 269 277 374 + 274 164 375 + 274 164 375 + 273 237 376 + 270 278 373 + 178 226 291 + 182 214 268 + 275 279 377 + 189 209 263 + 188 157 210 + 270 278 378 + 269 277 372 + 271 163 197 + 272 280 379 + 270 278 378 + 273 237 309 + 275 279 377 + 275 279 377 + 182 214 268 + 183 221 277 + 111 131 153 + 110 126 145 + 272 280 379 + 272 280 379 + 110 126 145 + 107 162 196 + 277 282 381 + 282 284 394 + 284 283 382 + 250 116 160 + 258 273 366 + 225 57 74 + 78 119 138 + 54 105 124 + 279 64 81 + 143 202 253 + 280 166 200 + 130 165 199 + 143 202 253 + 181 187 229 + 280 166 200 + 129 197 246 + 123 211 265 + 281 181 221 + 148 216 272 + 138 215 271 + 281 181 221 + 17 46 62 + 33 45 61 + 32 31 60 + } + $verts { + 0.095517 0.032733 0.109455 0 + 0.095517 0.020632 0.107048 0 + 0.095517 0.010374 0.100193 0 + 0.095517 0.003519 0.089935 0 + 0.095523 0.000333 0.077834 0 + 0.095517 0.003519 0.065733 0 + 0.095517 0.010374 0.055475 0 + 0.095517 0.020632 0.048621 0 + 0.095517 0.032733 0.046214 0 + 0.095517 0.044833 0.048621 0 + 0.095517 0.055092 0.055475 0 + 0.095517 0.061946 0.065733 0 + 0.095517 0.064353 0.077834 0 + 0.095517 0.061946 0.089935 0 + 0.095517 0.055092 0.100193 0 + 0.095517 0.044833 0.107048 0 + 0.111973 0.028357 0.088398 0 + 0.111973 0.032733 0.089268 0 + 0.111973 0.024648 0.08592 0 + 0.111973 0.022169 0.08221 0 + 0.111973 0.021299 0.077835 0 + 0.111973 0.02217 0.073459 0 + 0.111973 0.024648 0.06975 0 + 0.111973 0.028357 0.067271 0 + 0.111973 0.032733 0.066401 0 + 0.111973 0.037108 0.067271 0 + 0.111973 0.040817 0.069749 0 + 0.111973 0.043296 0.073459 0 + 0.111973 0.044166 0.077834 0 + 0.111973 0.043296 0.08221 0 + 0.111973 0.040817 0.085919 0 + 0.111973 0.037108 0.088397 0 + 0.109433 0.022325 0.102962 0 + 0.109433 0.032733 0.105033 0 + 0.109433 0.013501 0.097066 0 + 0.109433 0.007605 0.088243 0 + 0.109433 0.005534 0.077834 0 + 0.109433 0.007605 0.067426 0 + 0.109433 0.013501 0.058602 0 + 0.109433 0.022325 0.052706 0 + 0.109433 0.032733 0.050635 0 + 0.109433 0.043141 0.052706 0 + 0.109433 0.051965 0.058602 0 + 0.109433 0.057861 0.067426 0 + 0.109433 0.059932 0.077834 0 + 0.109433 0.057861 0.088243 0 + 0.109433 0.051965 0.097066 0 + 0.109433 0.043141 0.102962 0 + 0.112842 0.032736 0.07783 0 + -0.099505 0.067031 -0.049982 0 + -0.092664 0.040435 -0.120434 0 + -0.101124 0.04045 -0.112057 0 + -0.103063 0.040678 -0.095936 0 + -0.103224 0.04265 0.055065 0 + -0.102689 0.042952 0.078947 0 + -0.10057 0.043426 0.111602 0 + -0.092667 0.028525 -0.120438 0 + -0.10114 0.028707 -0.112065 0 + -0.103051 0.028786 -0.096612 0 + -0.103279 0.029866 0.055076 0 + -0.10247 0.03046 0.07871 0 + -0.101201 0.030502 0.111521 0 + -0.100893 0.065664 -0.049982 0 + -0.092993 0.043571 0.121945 0 + -0.098171 0.043584 0.117525 0 + -0.096924 0.000647 0.09985 0 + -0.098325 0.001548 0.099219 0 + -0.098284 0.030503 0.117724 0 + -0.09299 0.03045 0.12194 0 + -0.097654 0.068024 0.103994 0 + -0.096254 0.068681 0.105953 0 + -0.097983 0.055908 0.11551 0 + -0.096249 0.057681 0.115783 0 + -0.097585 0.019513 0.11697 0 + -0.095784 0.017926 0.117453 0 + -0.0966 0.006912 0.111582 0 + -0.096703 0.005805 0.109745 0 + -0.097853 0.007586 0.110502 0 + -0.098338 0.064481 0.077262 0 + -0.099204 0.001586 0.060851 0 + -0.097837 0.000424 0.061159 0 + -0.099385 0.061455 0.055253 0 + -0.096662 0.06296 0.054868 0 + -0.099204 0.061264 -0.094643 0 + -0.097741 0.062517 -0.094804 0 + -0.097694 0.005617 -0.098186 0 + -0.09916 0.006866 -0.097947 0 + -0.082317 0.053107 -0.121687 0 + -0.080766 0.050635 -0.122122 0 + -0.080762 0.014012 -0.12203 0 + -0.080788 0.02853 -0.123425 0 + -0.080778 0.040431 -0.123334 0 + -0.089464 0.055566 -0.120417 0 + -0.087706 0.056823 -0.120418 0 + -0.085467 0.010689 -0.120859 0 + -0.08943 0.011047 -0.120417 0 + -0.099494 0.004632 -0.087377 0 + -0.097836 0.000647 -0.088269 0 + -0.095943 0.060136 -0.111905 0 + -0.097559 0.058875 -0.111904 0 + -0.097537 0.008242 -0.111904 0 + -0.095931 0.006994 -0.111905 0 + -0.100235 0.063323 -0.079921 0 + -0.098348 0.064847 -0.079425 0 + -0.099155 0.062132 -0.080035 0 + -0.097925 0.063329 -0.079999 0 + -0.098144 0.005087 -0.091061 0 + -0.099296 0.006727 -0.090056 0 + -0.096842 0.005805 0.103617 0 + -0.098341 0.007081 0.103094 0 + -0.103264 0.028964 -0.082005 0 + -0.10496 0.026945 -0.082005 0 + -0.103232 0.040852 -0.082005 0 + -0.104948 0.043007 -0.082005 0 + -0.10547 0.043606 -0.049982 0 + -0.105788 0.026991 -0.049982 0 + -0.098308 0.000448 -0.05019 0 + -0.101952 0.004625 -0.050221 0 + 0.099932 0.06699 -0.049982 0 + 0.092664 0.040435 -0.120434 0 + 0.101124 0.04045 -0.112057 0 + 0.103063 0.040678 -0.095936 0 + 0.103224 0.042557 0.055071 0 + 0.102689 0.042952 0.078947 0 + 0.100532 0.043446 0.112406 0 + 0.092667 0.028525 -0.120438 0 + 0.10114 0.028707 -0.112065 0 + 0.103051 0.028786 -0.096612 0 + 0.103279 0.030026 0.055076 0 + 0.102704 0.03024 0.078961 0 + 0.100748 0.030377 0.112741 0 + 0.101027 0.065387 -0.049982 0 + 0.092993 0.043571 0.121945 0 + 0.097367 0.043522 0.119055 0 + 0.096924 0.000647 0.09985 0 + 0.098325 0.001548 0.099219 0 + 0.09704 0.030337 0.11912 0 + 0.09299 0.03045 0.12194 0 + 0.097663 0.067985 0.103917 0 + 0.074095 0.069437 0.101023 0 + 0.096219 0.06865 0.106008 0 + 0.097983 0.055908 0.11551 0 + 0.096249 0.057681 0.115783 0 + 0.097585 0.019513 0.11697 0 + 0.095784 0.017926 0.117453 0 + 0.0966 0.006912 0.111582 0 + 0.096703 0.005805 0.109745 0 + 0.097853 0.007586 0.110502 0 + 0.09854 0.064405 0.078736 0 + 0.074358 0.067003 0.083519 0 + 0.099204 0.001586 0.060851 0 + 0.097837 0.000424 0.061159 0 + 0.099524 0.061174 0.055595 0 + 0.097629 0.062726 0.056351 0 + 0.099204 0.061264 -0.094643 0 + 0.097741 0.062517 -0.094804 0 + 0.096651 0.005767 -0.097466 0 + 0.098671 0.006982 -0.097507 0 + 0.082317 0.053107 -0.121687 0 + 0.080766 0.050635 -0.122122 0 + 0.080638 0.013977 -0.122036 0 + 0.080788 0.02853 -0.123425 0 + 0.080778 0.040431 -0.123334 0 + 0.089464 0.055566 -0.120417 0 + 0.087706 0.056823 -0.120418 0 + 0.085407 0.011107 -0.121038 0 + 0.088918 0.011628 -0.120239 0 + 0.099352 0.005138 -0.087377 0 + 0.097836 0.000647 -0.088269 0 + 0.095943 0.060136 -0.111905 0 + 0.097559 0.058875 -0.111904 0 + 0.096854 0.008416 -0.111674 0 + 0.095069 0.007238 -0.111414 0 + 0.10035 0.063928 -0.079384 0 + 0.098107 0.065618 -0.078996 0 + 0.099717 0.062501 -0.080064 0 + 0.096894 0.063395 -0.079626 0 + 0.098398 0.004415 -0.089969 0 + 0.099352 0.005709 -0.089143 0 + 0.038973 0.06943 0.101034 0 + 0.096842 0.005805 0.103617 0 + 0.098341 0.007081 0.103094 0 + 0.103624 0.028204 -0.082021 0 + 0.104964 0.026537 -0.082021 0 + 0.10325 0.040816 -0.081958 0 + 0.104971 0.043199 -0.082021 0 + 0.105344 0.043765 -0.049982 0 + 0.10556 0.026912 -0.049982 0 + 0.098308 0.000448 -0.05019 0 + 0.102002 0.005131 -0.050225 0 + 0.029527 0.066015 0.078989 0 + 0.09684 0.065447 0.077617 0 + 0.095774 0.06933 0.103121 0 + -0.029869 0.066118 0.078825 0 + -0.096641 0.065533 0.077284 0 + -0.095505 0.069328 0.101987 0 + -0.084591 0.066921 0.083829 0 + -0.084203 0.069401 0.100077 0 + -0.049014 0.069311 0.100099 0 + -0.083116 0.068262 0.098553 0 + -0.050091 0.069166 0.098784 0 + -0.050287 0.067144 0.085134 0 + -0.0835 0.066406 0.085812 0 + -0.050735 0.05662 0.087297 0 + -0.083088 0.056657 0.087447 0 + -0.08271 0.058563 0.099985 0 + -0.050554 0.058602 0.100336 0 + 0.020805 0.057175 0.119632 0 + 0.056509 0.063343 0.056472 0 + -0.056513 0.063331 0.05629 0 + 0.033632 0.06913 0.109193 0 + -0.034171 0.069017 0.109504 0 + -0.020191 0.057549 0.119494 0 + -0.034763 0.069646 0.106329 0 + 0.033962 0.069916 0.10761 0 + -0.020437 0.058958 0.117394 0 + 0.020406 0.059064 0.116556 0 + 0.056796 0.06628 -0.052423 0 + -0.05671 0.06628 -0.052423 0 + -0.049243 0.066904 0.083831 0 + -0.059483 0.066445 0.086832 0 + -0.073664 0.066434 0.086837 0 + -0.105648 0.044625 0.034586 0 + -0.106036 0.027662 0.034586 0 + -0.098445 0.000467 0.034221 0 + -0.101958 0.004364 0.034221 0 + -0.099963 0.065995 0.034586 0 + -0.101251 0.064574 0.034586 0 + 0.105375 0.044792 0.034586 0 + 0.105655 0.027644 0.034586 0 + 0.098445 0.000467 0.034221 0 + 0.102347 0.005088 0.034221 0 + 0.099726 0.066656 0.034586 0 + 0.10099 0.065379 0.034586 0 + -0.0567 0.065873 0.033907 0 + 0.056786 0.065872 0.033907 0 + -0.057415 0.068004 -0.052947 0 + 0.057168 0.06797 -0.052947 0 + -0.057408 0.067956 0.034586 0 + 0.057231 0.067944 0.034586 0 + -0.103377 0.042534 0.049187 0 + -0.103394 0.029863 0.048024 0 + -0.099321 0.001759 0.047915 0 + -0.098013 0.063371 0.050536 0 + 0.104116 0.042053 0.049506 0 + 0.103453 0.029949 0.047162 0 + 0.09879 0.001509 0.047696 0 + 0.098014 0.063371 0.050536 0 + -0.056897 0.064125 0.050536 0 + 0.056735 0.064125 0.050536 0 + -0.097979 0.000567 0.047288 0 + -0.099365 0.062107 0.050887 0 + 0.098003 0.000422 0.047898 0 + 0.099385 0.062174 0.050536 0 + -0.099966 0.064232 0.049999 0 + 0.100451 0.064168 0.049993 0 + -0.104925 0.044782 0.049252 0 + -0.105263 0.027816 0.047292 0 + -0.101496 0.004614 0.047555 0 + -0.0982 0.065173 0.049936 0 + 0.104424 0.044045 0.049365 0 + 0.104788 0.027956 0.047533 0 + 0.101466 0.004496 0.047716 0 + 0.098521 0.065616 0.050243 0 + -0.057444 0.066422 0.05002 0 + 0.056376 0.06625 0.050331 0 + -0.073762 0.056829 0.088609 0 + -0.060063 0.056823 0.088607 0 + 0.101619 0.005136 -0.08011 0 + -0.09794 0.000604 -0.079776 0 + 0.09794 0.000604 -0.079776 0 + -0.101569 0.004631 -0.080073 0 + -0.099494 0.004631 -0.08064 0 + 0.097932 0.000607 -0.080447 0 + -0.097932 0.000607 -0.080447 0 + 0.099352 0.005136 -0.080664 0 + 0.039036 0.06699 0.08349 0 + 0.039036 0.067131 0.083507 0 + -0.101787 0.0305 0.096252 0 + -0.101629 0.043189 0.095275 0 + 0.102072 0.030409 0.097389 0 + 0.101859 0.042753 0.095646 0 + 0.038973 0.069571 0.101051 0 + 0.074358 0.067144 0.083537 0 + 0.074095 0.069578 0.101041 0 + } + $texCoords { + 0.95674 0.88715 + 0.92921 0.88715 + 0.95674 0.8651 + 0.13806 0.69728 + 0.13218 0.71125 + 0.1085 0.67727 + 0.19189 0.68672 + 0.21172 0.65711 + 0.2026 0.69743 + 0.23229 0.67764 + 0.20842 0.71142 + 0.24345 0.70448 + 0.20843 0.72657 + 0.24349 0.73354 + 0.20264 0.7406 + 0.2324 0.76049 + 0.1919 0.75136 + 0.21177 0.78118 + 0.17785 0.75719 + 0.18477 0.79238 + 0.16264 0.75718 + 0.15554 0.79234 + 0.14858 0.75134 + 0.12854 0.78113 + 0.13785 0.74054 + 0.10791 0.76038 + 0.09688 0.73327 + 0.09713 0.70408 + 0.13209 0.72645 + 0.17793 0.68092 + 0.18497 0.64603 + 0.95674 0.93125 + 0.92921 0.93125 + 0.95674 0.9092 + 0.95674 0.9533 + 0.92921 0.9533 + 0.95674 0.97535 + 0.92921 0.97535 + 0.95674 0.9975 + 0.92921 0.9975 + 0.95674 0.64449 + 0.95674 0.66664 + 0.92921 0.64449 + 0.95674 0.68869 + 0.92921 0.66664 + 0.95674 0.71075 + 0.92921 0.68869 + 0.95674 0.7328 + 0.92921 0.71075 + 0.95674 0.75485 + 0.92921 0.7328 + 0.95674 0.7769 + 0.92921 0.75485 + 0.95674 0.79895 + 0.92921 0.7769 + 0.95674 0.821 + 0.92921 0.79895 + 0.95674 0.84305 + 0.92921 0.84305 + 0.92921 0.8651 + 0.15603 0.64595 + 0.12918 0.65687 + 0.14882 0.68661 + 0.16282 0.68089 + 0.1703 0.71899 + 0.86213 0.65474 + 0.86226 0.82326 + 0.82828 0.64808 + 0.92921 0.9092 + 0.86237 0.96977 + 0.86238 0.9823 + 0.82852 0.96988 + 0.90952 0.64949 + 0.92025 0.64764 + 0.91351 0.81797 + 0.86203 0.51562 + 0.86204 0.53636 + 0.82819 0.51562 + 0.78942 0.5964 + 0.78054 0.64732 + 0.78518 0.59597 + 0.8285 0.93923 + 0.86258 0.94102 + 0.89195 0.53636 + 0.03536 0.93375 + 0.01899 0.91559 + 0.3735 0.93375 + 0.80234 0.53636 + 0.80506 0.51562 + 0.8282 0.53636 + 0.80645 0.97738 + 0.82853 0.9828 + 0.82844 0.86407 + 0.82844 0.85377 + 0.86229 0.86416 + 0.90713 0.95344 + 0.90611 0.96501 + 0.90349 0.95189 + 0.8532 0.45399 + 0.85608 0.45247 + 0.86128 0.46244 + 0.36079 0.94665 + 0.36195 0.96652 + 0.04882 0.94665 + 0.91624 0.87456 + 0.9177 0.8567 + 0.7688 0.50698 + 0.76913 0.51603 + 0.3996 0.50698 + 0.86201 0.49576 + 0.88917 0.50114 + 0.04584 0.94167 + 0.25549 0.54959 + 0.38326 0.54959 + 0.30996 0.59118 + 0.76627 0.93887 + 0.74626 0.96038 + 0.40434 0.93887 + 0.86206 0.56144 + 0.8974 0.56144 + 0.76981 0.91353 + 0.40108 0.91353 + 0.91243 0.94367 + 0.86232 0.9082 + 0.82848 0.90858 + 0.26436 0.75116 + 0.28595 0.75116 + 0.26436 0.76602 + 0.88109 0.9778 + 0.82817 0.49579 + 0.76179 0.45314 + 0.76695 0.47713 + 0.40649 0.45358 + 0.76858 0.50274 + 0.3998 0.50274 + 0.7712 0.62257 + 0.39735 0.62257 + 0.77088 0.60322 + 0.78662 0.90699 + 0.78981 0.86212 + 0.24041 0.4665 + 0.38316 0.4665 + 0.26826 0.49353 + 0.82824 0.58696 + 0.82822 0.56144 + 0.86208 0.58787 + 0.80204 0.51562 + 0.79917 0.53636 + 0.78441 0.95705 + 0.77953 0.95406 + 0.95168 0.02579 + 0.9366 0.02579 + 0.94503 0.00539 + 0.86209 0.59182 + 0.82824 0.59133 + 0.38274 0.49353 + 0.26884 0.49913 + 0.90404 0.96841 + 0.90218 0.96583 + 0.88495 0.9803 + 0.92145 0.85612 + 0.91963 0.87545 + 0.82854 0.99613 + 0.80224 0.97937 + 0.78234 0.96097 + 0.73741 0.96612 + 0.43185 0.96612 + 0.86239 0.99525 + 0.78276 0.90722 + 0.78338 0.86191 + 0.91526 0.94523 + 0.82841 0.81741 + 0.78321 0.82296 + 0.79028 0.59392 + 0.78702 0.59332 + 0.96735 0.07198 + 0.9707 0.07198 + 0.97882 0.10246 + 0.91208 0.57718 + 0.9035 0.57926 + 0.903 0.57136 + 0.90079 0.56144 + 0.89197 0.51562 + 0.89503 0.53636 + 0.88886 0.51562 + 0.79525 0.56144 + 0.79186 0.56144 + 0.80968 0.49972 + 0.80599 0.50369 + 0.40138 0.47713 + 0.77137 0.81772 + 0.3974 0.81772 + 0.77202 0.65686 + 0.90112 0.16827 + 0.9366 0.16418 + 0.90112 0.33593 + 0.8993 0.57385 + 0.90252 0.59646 + 0.91206 0.59324 + 0.90112 0.48127 + 0.90118 0.45237 + 0.9366 0.48224 + 0.39929 0.51603 + 0.39932 0.52796 + 0.37823 0.40303 + 0.37735 0.43767 + 0.02523 0.40303 + 0.77075 0.90287 + 0.9366 0.49656 + 0.84788 0.3319 + 0.84686 0.16116 + 0.8597 0.33098 + 0.39764 0.60322 + 0.9366 0.04558 + 0.90112 0.04558 + 0.98077 0.10484 + 0.98586 0.10449 + 0.98656 0.15113 + 0.86823 0.02579 + 0.90112 0.02579 + 0.86742 0.04558 + 0.9366 0.45068 + 0.95997 0.48822 + 0.90112 0.36126 + 0.9366 0.36379 + 0.90112 0.37384 + 0.01367 0.85359 + 0.38905 0.85359 + 0.01474 0.88234 + 0.86498 0.46092 + 0.86217 0.47415 + 0.85314 0.36449 + 0.04857 0.96652 + 0.04836 0.9975 + 0.02486 0.43767 + 0.16115 0.4665 + 0.90112 0.00775 + 0.86584 0.0163 + 0.01008 0.60157 + 0.01284 0.59118 + 0.08941 0.60157 + 0.86384 0.07198 + 0.90112 0.07198 + 0.30996 0.80005 + 0.38816 0.80005 + 0.38816 0.8498 + 0.90112 0.41784 + 0.85359 0.38275 + 0.9366 0.37451 + 0.01414 0.54959 + 0.08941 0.59118 + 0.39134 0.88234 + 0.38878 0.91559 + 0.88722 0.48738 + 0.90112 0.4953 + 0.9366 0.10093 + 0.13024 0.49353 + 0.01779 0.4665 + 0.9366 0.00356 + 0.01281 0.8498 + 0.01226 0.38281 + 0.01234 0.01945 + 0.4906 0.38293 + 0.85848 0.16268 + 0.97871 0.37517 + 0.9366 0.41912 + 0.36351 0.94167 + 0.9366 0.07198 + 0.90112 0.10033 + 0.95452 0.02579 + 0.95973 0.04558 + 0.98218 0.46833 + 0.9814 0.42195 + 0.98652 0.46759 + 0.38816 0.63721 + 0.30996 0.63721 + 0.9366 0.09644 + 0.90112 0.10383 + 0.86613 0.47502 + 0.86423 0.4776 + 0.88332 0.48982 + 0.84994 0.3648 + 0.9366 0.50656 + 0.9641 0.49022 + 0.90112 0.50484 + 0.98535 0.4201 + 0.98374 0.37738 + 0.85014 0.38348 + 0.98947 0.33222 + 0.9366 0.33451 + 0.98439 0.09967 + 0.86205 0.08959 + 0.86108 0.09301 + 0.85911 0.08798 + 0.85974 0.07198 + 0.86476 0.02579 + 0.86392 0.04558 + 0.95661 0.04558 + 0.94923 0.00903 + 0.12942 0.49913 + 0.01693 0.49353 + 0.98413 0.47257 + 0.76994 0.89392 + 0.39894 0.89392 + 0.08941 0.80005 + 0.0062 0.80005 + 0.08941 0.63721 + 0.86292 0.10938 + 0.85206 0.09165 + 0.85275 0.10652 + 0.34091 0.54131 + 0.27457 0.54131 + 0.34068 0.50669 + 0.27681 0.50669 + 0.38189 0.49913 + 0.0382 0.50669 + 0.01805 0.49913 + 0.10383 0.50669 + 0.0382 0.53536 + 0.14119 0.54959 + 0.10383 0.53536 + 0.08438 0.52984 + 0.10188 0.53366 + 0.10188 0.50844 + 0.28595 0.67931 + 0.28595 0.69673 + 0.26436 0.67931 + 0.2479 0.69673 + 0.26436 0.69673 + 0.2479 0.75116 + 0.30251 0.75116 + 0.30251 0.73594 + 0.43088 0.99374 + 0.73812 0.99374 + 0.30996 0.60157 + 0.23988 0.47159 + 0.16024 0.47159 + 0.09335 0.79559 + 0.09335 0.64264 + 0.04077 0.53366 + 0.05818 0.52984 + 0.30996 0.60554 + 0.38816 0.60554 + 0.9893 0.36156 + 0.98523 0.36016 + 0.99302 0.33269 + 0.9366 0.3611 + 0.90112 0.35916 + 0.78127 0.84909 + 0.77937 0.82338 + 0.78464 0.84819 + 0.82843 0.84951 + 0.30577 0.64264 + 0.30577 0.79559 + 0.30251 0.71277 + 0.28595 0.71262 + 0.77687 0.64648 + 0.78367 0.85183 + 0.78778 0.85136 + 0.98248 0.36329 + 0.9861 0.36453 + 0.38444 0.59118 + 0.08941 0.60554 + 0.39657 0.65665 + 0.0062 0.60554 + 0.86031 0.35743 + 0.91037 0.85177 + 0.86228 0.84811 + 0.86228 0.85264 + 0.0062 0.63721 + 0.38816 0.60157 + 0.28595 0.7361 + 0.91209 0.59446 + 0.39858 0.87311 + 0.77028 0.87311 + 0.77025 0.87483 + 0.3986 0.87512 + 0.86148 0.1058 + 0.85279 0.10772 + 0.90377 0.59315 + 0.75202 0.13042 + 0.50435 0.13042 + 0.75202 0.00601 + 0.92457 0.81868 + 0.92921 0.821 + 0.42287 0.96038 + 0.28595 0.76761 + 0.76912 0.52796 + 0.39765 0.90287 + 0.99042 0.14964 + 0.36361 0.9975 + 0.49059 0.01942 + 0.04077 0.50844 + 0.30251 0.69673 + 0.50435 0.00601 + } + $normals { + 0.3023 0.3116 0.9008 + 0.7532 0.2893 0.5908 + 0.3023 0.6326 0.713 + 0.9922 0.0476 0.1149 + 0.9903 0.0888 0.1071 + 0.9903 -0.1231 0.065 + 0.7201 -0.6241 0.3034 + 0.9903 -0.1386 0.0129 + 0.6653 -0.7466 -0.0024 + 0.9903 -0.133 -0.0411 + 0.7199 -0.6217 -0.3088 + 0.9903 -0.1071 -0.0888 + 0.7199 -0.4562 -0.5232 + 0.9903 -0.065 -0.1231 + 0.7199 -0.2212 -0.6579 + 0.9903 -0.0129 -0.1386 + 0.7199 0.0474 -0.6925 + 0.9903 0.0411 -0.133 + 0.7199 0.3088 -0.6217 + 0.9903 0.0888 -0.1071 + 0.7199 0.5232 -0.4562 + 0.9903 0.1231 -0.065 + 0.7199 0.6579 -0.2212 + 0.9895 0.1445 0 + 0.7751 0.6319 0 + 0.7199 0.6579 0.2212 + 0.7199 0.5232 0.4562 + 0.9903 0.1231 0.065 + 0.9903 -0.0888 0.1071 + 0.72 -0.4605 0.5191 + 0.3023 -0.4167 0.8573 + 0.7532 -0.2131 0.6223 + 0.3023 -0.0569 0.9515 + 0.3024 -0.713 0.6326 + 0.317 -0.8896 0.3289 + 0.3502 -0.9367 0 + 0.3171 -0.8895 -0.3289 + 0.3024 -0.713 -0.6326 + 0.3023 -0.4167 -0.8573 + 0.3023 -0.0569 -0.9515 + 0.3023 0.3116 -0.9008 + 0.3023 0.6326 -0.713 + 0.3023 0.8573 -0.4167 + 0.3028 0.9531 0 + 0.3023 0.8573 0.4167 + 0.6791 0.048 0.7325 + 0.9895 0 0.1445 + 0.9922 -0.0476 0.1149 + 1 0 -0 + -0.9938 -0.1106 -0.0075 + -0.9977 -0.0678 0.0058 + -0.9909 0.1345 -0.008 + -0.9837 -0.0936 0.1537 + -0.7762 -0.0271 0.6299 + -0.9852 0.0729 0.1553 + -0.9564 -0.292 -0.0044 + -0.0349 -0.9994 -0.0013 + -0.9613 -0.2756 0.0021 + -0.4736 -0.0675 -0.8781 + -0.9215 -0.1091 -0.3727 + -0.4888 0.0558 -0.8706 + -0.9667 0.2499 -0.0555 + -0.9583 0.2856 -0.0123 + -0.0139 0.9851 -0.1715 + -0.9918 0.1178 0.0505 + -0.9967 -0.064 0.0504 + -0.841 -0.214 -0.497 + -0.0046 0.7195 -0.6944 + -0.0065 0.9667 -0.256 + 0.0032 0.871 -0.4912 + -0.9264 0.2419 -0.2886 + -0.5518 0.1591 -0.8186 + -0.9081 0.1018 -0.4062 + -0.9717 0.1618 0.1719 + -0.7776 0.0831 0.6232 + -0.9957 0.089 0.0245 + -0.964 0.0831 0.2524 + -0.9947 -0.0998 0.0262 + -0.0052 -0.8861 0.4634 + -0.0118 -0.9755 0.2197 + -0.9798 -0.1591 0.121 + 0.0025 -0.9921 0.1253 + 0.9817 -0.1856 0.0435 + 0.0103 -0.8857 0.4641 + 0.0208 0.1299 -0.9913 + 0.0132 0.0578 -0.9982 + -0.0143 0.1205 -0.9926 + -0.987 -0.1588 0.0242 + -0.9771 -0.1942 0.0869 + 0.0084 -0.9968 0.0789 + -0.009 -0.0491 -0.9988 + -0.0226 -0.1346 -0.9906 + -0.0025 0.238 -0.9713 + -0.039 0.9982 -0.0446 + 0.0283 0.9903 -0.1361 + 0.0044 0.9969 -0.0784 + -0.0031 -0.9839 -0.1784 + 0.0001 -0.8395 -0.5434 + 0.0099 -0.9638 -0.2666 + -0.9923 -0.1027 -0.0698 + -0.9729 -0.207 -0.1035 + -0.0097 -0.9957 -0.0922 + 0.0038 -0.9937 -0.1118 + -0.9833 -0.1765 0.0436 + -0.9955 -0.0888 0.0329 + -0.9895 0.1404 0.0334 + 0.1721 0.8125 -0.557 + 0.7166 0.4919 0.4945 + 0.3546 -0.0304 -0.9345 + -0.937 -0.1584 0.3113 + -0.0251 0.0568 -0.9981 + -0.0147 -0.1147 0.9933 + -0.0123 -0.379 0.9253 + 0.0147 -0.2266 0.9739 + -0.0036 -0.5063 0.8623 + 0.0059 -0.5846 0.8113 + -0.0158 -0.9999 -0.0017 + 0.0051 -1 -0.0027 + -0.0056 -1 0.003 + -0.959 0.2835 0.0067 + -0.968 0.2504 0.015 + 0.0135 0.3436 0.939 + 0.0706 0.5567 0.8277 + 0.025 0.6711 0.7409 + -0.9796 0.1518 -0.1315 + -0.9896 0.1228 -0.0751 + -0.9894 -0.1049 -0.1007 + -0.9744 0.216 0.0628 + -0.0755 0.9961 -0.0467 + 0.5518 0.1591 -0.8186 + 0.4888 0.0558 -0.8706 + -0.9859 -0.0939 -0.1388 + -0.9919 0.099 -0.0798 + 0.0665 0.7517 0.6562 + -0.2551 0.9663 0.0347 + -0.9255 -0.2118 0.3139 + -0.033 0.1465 0.9887 + -0.0773 0.5514 0.8306 + -0.0617 0.8077 0.5864 + 0.0124 -0.1365 -0.9906 + -0.0222 0.9911 -0.1312 + -0.0565 0.9975 -0.0422 + -0.005 -0.992 0.1259 + -0.9925 0.1222 0.0071 + -0.9724 0.2332 0.0074 + -0.932 0.288 -0.2201 + -0.0058 0.9885 -0.1512 + 0.9737 0.2172 -0.0695 + 0.0117 0.9948 -0.1011 + 0.9145 0.3298 -0.2344 + -0.0204 -0.9212 -0.3885 + -0.9489 -0.3014 -0.0941 + -0.01 -0.8843 -0.4669 + -0.4661 -0.1927 -0.8635 + -0.9728 0.225 -0.0556 + -0.0064 0.9949 -0.1003 + 0.0102 -0.4232 0.906 + 0.0203 -0.9998 -0.0066 + -0.0106 -0.9999 0.0008 + 0.9949 -0.1009 -0.006 + 0.9945 0.1049 -0.0069 + 0.9986 -0.0523 0.0062 + -0.9844 -0.1732 -0.0305 + -0.9742 -0.2193 -0.0534 + -0.0182 -0.9998 -0.0053 + 0.964 -0.0683 0.257 + 0.9928 -0.0848 0.0851 + 0.9842 0.0726 0.1617 + 0.0151 0.104 0.9945 + 0.7584 0.0612 0.649 + 0.0209 -0.9998 0.0008 + 0.9662 -0.2577 0.0061 + 0.0093 -0.9999 0.0083 + 0.9081 0.1018 -0.4062 + 0.8888 -0.1088 -0.4452 + 0.9671 0.2499 -0.0477 + 0.0165 0.9884 -0.1508 + 0.9689 0.2475 -0.0071 + 0.4834 -0.2122 -0.8493 + 0.4768 -0.083 -0.8751 + 0.8925 -0.2256 -0.3905 + 0.9913 0.1206 0.0527 + 0.9678 0.1667 0.1888 + 0.9158 -0.1288 0.3804 + 0.97 0.0593 0.2357 + 0.9939 -0.1087 0.018 + 0.0022 0.985 -0.1726 + 0.9786 -0.1352 0.1551 + 0.961 -0.2651 0.0785 + -0.0265 0.4896 0.8715 + 0.0172 -0.049 -0.9986 + -0.0353 0.7646 0.6436 + -0.0055 0.8448 0.535 + 0.9437 -0.2983 -0.1428 + 0.9865 -0.1287 -0.1009 + -0.0171 0.9991 -0.0394 + 0.047 0.9989 -0.0056 + 0.9955 -0.0905 0.0277 + 0.9856 -0.1685 0.0139 + 0.9942 0.1009 0.0378 + -0.0018 0.9977 -0.0682 + 0.0052 0.9821 -0.1885 + 0.9653 -0.145 0.2171 + 0.7374 -0.0659 0.6722 + 0.9932 0.0935 -0.0689 + -0.0221 0.6996 0.7142 + 0.015 0.9989 0.0436 + 0.0166 0.9997 -0.0192 + -0.0074 0.9999 0.0145 + 0.9586 -0.2847 -0.0066 + 0.9716 0.2363 0.0141 + 0.9899 0.1387 0.0285 + 0.0021 0.2859 -0.9583 + 0.9891 0.1253 -0.0778 + 0.9904 -0.1027 -0.092 + 0.9746 0.2121 0.0723 + 0.9641 0.2655 0.0085 + 0.0694 0.9946 -0.0774 + 0.0918 0.9957 0.0148 + 0.0041 0.9999 -0.0138 + 0.9788 0.146 -0.1434 + 0.988 -0.0936 -0.1229 + 0.9255 -0.2118 0.314 + 0.0614 0.9973 -0.0404 + 0.9682 0.2502 0.0086 + 0.9894 0.1449 0.0103 + 0.9807 -0.1879 -0.055 + 0.9531 -0.2988 -0.0484 + 0.0162 -0.8746 -0.4845 + 0.0065 -0.8404 -0.542 + 0.9264 0.2419 -0.2885 + 0.1814 0.9833 -0.0157 + 0.0115 -0.9247 -0.3805 + 0.026 0.9992 -0.0314 + -0.0509 0.9987 -0.0059 + -0.0094 0.9997 0.0225 + 0.9744 -0.2185 -0.0527 + 0.0406 -0.9992 -0.0054 + 0.0117 0.9862 -0.1654 + -0.0041 0.9894 -0.1454 + 0.004 0.9929 -0.1186 + -0.0151 0.9922 -0.1236 + 0.047 0.9807 -0.1899 + 0.0149 0.9967 -0.0797 + -0.0029 0.9928 -0.1197 + 0.042 0.9987 0.0304 + 0.0078 0.9918 -0.1275 + 0.0809 0.3257 0.942 + -0.7824 0.2978 0.547 + -0.575 0.1819 -0.7977 + -0.7338 0.4799 0.4808 + -0.1569 0.4766 -0.865 + 0.7764 0.3842 0.4996 + -0.0405 0.4585 0.8878 + 0.0042 0.9557 0.2943 + -0.0794 0.9787 0.1893 + 0.166 0.9721 0.1659 + 0.0028 0.9678 0.2518 + 0.0393 0.9865 0.1592 + 0.9599 0.254 0.1185 + 0.9817 0.1106 0.1549 + 0.9895 -0.0771 0.1223 + -0.0484 0.9898 0.1343 + -0.1029 0.9945 0.0195 + -0.9281 0.3362 0.1598 + -0.9744 0.1592 0.1589 + -0.0329 0.9993 -0.0189 + 0.0175 0.9404 0.3397 + -0.8288 0.2641 0.4933 + 0.9369 0.2189 0.2725 + 0.062 0.7825 0.6196 + -0.0075 0.9659 0.2588 + 0.9244 -0.2077 0.32 + -0.959 -0.2156 0.1842 + -0.9816 -0.0582 0.1816 + -0.9238 -0.0999 0.3696 + -0.0313 0.8669 0.4975 + -0.0208 -0.9998 -0.0061 + 0.0445 -0.999 -0.0073 + 0.905 -0.2132 -0.3681 + -0.909 -0.1833 -0.3744 + -0.0003 0.9905 -0.1377 + -0.0003 0.9905 -0.1377 + -0.0003 0.9905 -0.1377 + -0.0003 0.9905 -0.1377 + } + } + } + $lod 2 { + #lodFactor 0.02 + $mesh "ZappyBoy1000" { + #texCoords 1 + $faces { + 3 3 0 1 2 + 3 3 3 4 5 + 3 3 6 7 8 + 3 3 9 10 11 + 3 3 12 13 14 + 3 3 15 16 17 + 3 3 18 19 20 + 3 3 21 22 23 + 3 3 24 25 26 + 3 3 27 28 29 + 3 3 30 31 32 + 3 3 33 34 35 + 3 3 36 37 38 + 3 3 39 40 41 + 3 3 42 43 44 + 3 3 45 46 47 + 3 3 48 49 50 + 3 3 51 52 53 + 3 3 54 55 56 + 3 3 57 58 59 + 3 3 60 61 62 + 3 3 63 64 65 + 3 3 66 67 68 + 3 3 69 70 71 + 3 3 72 73 74 + 3 3 75 76 77 + 3 3 78 79 80 + 3 3 81 82 83 + 3 3 84 85 86 + 3 3 87 88 89 + 3 3 90 91 92 + 3 3 93 94 95 + 3 3 96 97 98 + 3 3 99 100 101 + 3 3 102 103 104 + 3 3 105 106 107 + 3 3 108 109 110 + 3 3 111 112 113 + 3 3 114 115 116 + 3 3 117 118 119 + 3 3 120 121 122 + 3 3 123 124 125 + 3 3 126 127 128 + 3 3 129 130 131 + 3 3 132 133 134 + 3 3 135 136 137 + 3 3 138 139 140 + 3 3 141 142 143 + 3 3 144 145 146 + 3 3 147 148 149 + 3 3 150 151 152 + 3 3 153 154 155 + 3 3 156 157 158 + 3 3 159 160 161 + 3 3 162 163 164 + 3 3 165 166 167 + 3 3 168 169 170 + 3 3 171 172 173 + 3 3 174 175 176 + 3 3 177 178 179 + 3 3 180 181 182 + 3 3 183 184 185 + 3 3 186 187 188 + 3 3 189 190 191 + 3 3 192 193 194 + 3 3 195 196 197 + 3 3 198 199 200 + 3 3 201 202 203 + 3 3 204 205 206 + 3 3 207 208 209 + 3 3 210 211 212 + 3 3 213 214 215 + 3 3 216 217 218 + 3 3 219 220 221 + 3 3 222 223 224 + 3 3 225 226 227 + 3 3 228 229 230 + 3 3 231 232 233 + 3 3 234 235 236 + 3 3 237 238 239 + 3 3 240 241 242 + 3 3 243 244 245 + 3 3 246 247 248 + 3 3 249 250 251 + 3 3 252 253 254 + 3 3 255 256 257 + 3 3 258 259 260 + 3 3 261 262 263 + 3 3 264 265 266 + 3 3 267 268 269 + 3 3 270 271 272 + 3 3 273 274 275 + 3 3 276 277 278 + 3 3 279 280 281 + 3 3 282 283 284 + 3 3 285 286 287 + 3 3 288 289 290 + 3 3 291 292 293 + 3 3 294 295 296 + 3 3 297 298 299 + 3 3 300 301 302 + 3 3 303 304 305 + 3 3 306 307 308 + 3 3 309 310 311 + 3 3 312 313 314 + 3 3 315 316 317 + 3 3 318 319 320 + 3 3 321 322 323 + 3 3 324 325 326 + 3 3 327 328 329 + 3 3 330 331 332 + 3 3 333 334 335 + 3 3 336 337 338 + 3 3 339 340 341 + 3 3 342 343 344 + 3 3 345 346 347 + 3 3 348 349 350 + 3 3 351 352 353 + 3 3 354 355 356 + 3 3 357 358 359 + 3 3 360 361 362 + 3 3 363 364 365 + 3 3 366 367 368 + 3 3 369 370 371 + 3 3 372 373 374 + 3 3 375 376 377 + 3 3 378 379 380 + 3 3 381 382 383 + 3 3 384 385 386 + 3 3 387 388 389 + 3 3 390 391 392 + 3 3 393 394 395 + 3 3 396 397 398 + 3 3 399 400 401 + 3 3 402 403 404 + 3 3 405 406 407 + 3 3 408 409 410 + 3 3 411 412 413 + 3 3 414 415 416 + 3 3 417 418 419 + 3 3 420 421 422 + 3 3 423 424 425 + 3 3 426 427 428 + 3 3 429 430 431 + 3 3 432 433 434 + 3 3 435 436 437 + 3 3 438 439 440 + 3 3 441 442 443 + 3 3 444 445 446 + 3 3 447 448 449 + 3 3 450 451 452 + 3 3 453 454 455 + 3 3 456 457 458 + 3 3 459 460 461 + 3 3 462 463 464 + 3 3 465 466 467 + 3 3 468 469 470 + 3 3 471 472 473 + 3 3 474 475 476 + 3 3 477 478 479 + 3 3 480 481 482 + 3 3 483 484 485 + 3 3 486 487 488 + 3 3 489 490 491 + 3 3 492 493 494 + 3 3 495 496 497 + 3 3 498 499 500 + 3 3 501 502 503 + 3 3 504 505 506 + 3 3 507 508 509 + 3 3 510 511 512 + 3 3 513 514 515 + 3 3 516 517 518 + 3 3 519 520 521 + 3 3 522 523 524 + 3 3 525 526 527 + 3 3 528 529 530 + 3 3 531 532 533 + 3 3 534 535 536 + 3 3 537 538 539 + 3 3 540 541 542 + 3 3 543 544 545 + 3 3 546 547 548 + 3 3 549 550 551 + 3 3 552 553 554 + 3 3 555 556 557 + 3 3 558 559 560 + 3 3 561 562 563 + 3 3 564 565 566 + 3 3 567 568 569 + 3 3 570 571 572 + 3 3 573 574 575 + 3 3 576 577 578 + 3 3 579 580 581 + 3 3 582 583 584 + 3 3 585 586 587 + 3 3 588 589 590 + 3 3 591 592 593 + 3 3 594 595 596 + 3 3 597 598 599 + 3 3 600 601 602 + 3 3 603 604 605 + 3 3 606 607 608 + 3 3 609 610 611 + 3 3 612 613 614 + 3 3 615 616 617 + 3 3 618 619 620 + 3 3 621 622 623 + 3 3 624 625 626 + 3 3 627 628 629 + 3 3 630 631 632 + 3 3 633 634 635 + 3 3 636 637 638 + 3 3 639 640 641 + 3 3 642 643 644 + 3 3 645 646 647 + 3 3 648 649 650 + 3 3 651 652 653 + 3 3 654 655 656 + 3 3 657 658 659 + 3 3 660 661 662 + 3 3 663 664 665 + 3 3 666 667 668 + 3 3 669 670 671 + 3 3 672 673 674 + 3 3 675 676 677 + 3 3 678 679 680 + 3 3 681 682 683 + 3 3 684 685 686 + 3 3 687 688 689 + 3 3 690 691 692 + 3 3 693 694 695 + 3 3 696 697 698 + 3 3 699 700 701 + 3 3 702 703 704 + 3 3 705 706 707 + 3 3 708 709 710 + 3 3 711 712 713 + 3 3 714 715 716 + 3 3 717 718 719 + 3 3 720 721 722 + 3 3 723 724 725 + 3 3 726 727 728 + 3 3 729 730 731 + 3 3 732 733 734 + 3 3 735 736 737 + 3 3 738 739 740 + 3 3 741 742 743 + 3 3 744 745 746 + 3 3 747 748 749 + 3 3 750 751 752 + 3 3 753 754 755 + 3 3 756 757 758 + 3 3 759 760 761 + 3 3 762 763 764 + 3 3 765 766 767 + 3 3 768 769 770 + 3 3 771 772 773 + 3 3 774 775 776 + 3 3 777 778 779 + 3 3 780 781 782 + 3 3 783 784 785 + 3 3 786 787 788 + 3 3 789 790 791 + 3 3 792 793 794 + 3 3 795 796 797 + 3 3 798 799 800 + 3 3 801 802 803 + 3 3 804 805 806 + 3 3 807 808 809 + 3 3 810 811 812 + 3 3 813 814 815 + 3 3 816 817 818 + 3 3 819 820 821 + 3 3 822 823 824 + 3 3 825 826 827 + 3 3 828 829 830 + 3 3 831 832 833 + 3 3 834 835 836 + 3 3 837 838 839 + 3 3 840 841 842 + 3 3 843 844 845 + 3 3 846 847 848 + 3 3 849 850 851 + 3 3 852 853 854 + 3 3 855 856 857 + 3 3 858 859 860 + 3 3 861 862 863 + 3 3 864 865 866 + 3 3 867 868 869 + 3 3 870 871 872 + 3 3 873 874 875 + 3 3 876 877 878 + 3 3 879 880 881 + 3 3 882 883 884 + 3 3 885 886 887 + 3 3 888 889 890 + 3 3 891 892 893 + 3 3 894 895 896 + 3 3 897 898 899 + 3 3 900 901 902 + 3 3 903 904 905 + 3 3 906 907 908 + 3 3 909 910 911 + 3 3 912 913 914 + 3 3 915 916 917 + 3 3 918 919 920 + 3 3 921 922 923 + 3 3 924 925 926 + 3 3 927 928 929 + 3 3 930 931 932 + 3 3 933 934 935 + 3 3 936 937 938 + 3 3 939 940 941 + 3 3 942 943 944 + 3 3 945 946 947 + 3 3 948 949 950 + 3 3 951 952 953 + 3 3 954 955 956 + 3 3 957 958 959 + 3 3 960 961 962 + 3 3 963 964 965 + 3 3 966 967 968 + 3 3 969 970 971 + 3 3 972 973 974 + 3 3 975 976 977 + 3 3 978 979 980 + 3 3 981 982 983 + 3 3 984 985 986 + 3 3 987 988 989 + } + $faceVerts { + 8 0 0 + 15 1 1 + 16 2 2 + 9 3 3 + 24 4 4 + 8 0 0 + 10 5 5 + 18 6 6 + 11 7 7 + 11 7 7 + 19 8 8 + 12 9 9 + 12 9 9 + 20 10 10 + 13 11 11 + 21 12 12 + 22 13 13 + 13 11 11 + 22 13 13 + 23 14 14 + 14 15 15 + 9 3 3 + 17 16 16 + 10 5 5 + 1 17 17 + 2 18 18 + 17 16 19 + 0 19 20 + 16 2 21 + 7 20 22 + 2 18 18 + 3 21 23 + 18 6 24 + 3 21 23 + 4 22 25 + 19 8 26 + 4 22 25 + 5 23 27 + 20 10 28 + 21 12 29 + 5 23 27 + 22 13 30 + 7 20 22 + 23 14 31 + 6 24 32 + 17 16 16 + 9 3 3 + 16 2 2 + 62 25 33 + 129 26 34 + 61 27 35 + 9 3 3 + 10 5 5 + 24 4 4 + 12 9 9 + 13 11 11 + 24 4 4 + 13 11 11 + 14 15 15 + 24 4 4 + 10 5 5 + 11 7 7 + 24 4 4 + 14 15 15 + 15 1 1 + 24 4 4 + 11 7 7 + 12 9 9 + 24 4 4 + 8 0 0 + 24 4 4 + 15 1 1 + 33 28 36 + 37 29 37 + 29 30 38 + 105 31 39 + 104 32 40 + 134 33 41 + 59 34 42 + 26 35 43 + 57 36 44 + 53 37 45 + 54 38 46 + 60 39 47 + 169 40 48 + 168 41 49 + 29 30 38 + 54 38 46 + 50 42 50 + 59 34 42 + 96 43 51 + 55 44 52 + 92 45 53 + 29 30 38 + 40 46 54 + 169 40 48 + 29 30 38 + 35 47 55 + 40 46 54 + 27 48 56 + 142 49 57 + 31 50 58 + 36 51 59 + 32 52 60 + 45 53 61 + 100 54 62 + 104 32 40 + 163 55 63 + 154 56 64 + 131 57 65 + 152 58 66 + 42 59 67 + 33 28 36 + 168 41 49 + 44 60 68 + 56 61 69 + 84 62 70 + 56 61 71 + 168 41 49 + 36 51 59 + 106 63 72 + 107 64 73 + 119 65 74 + 30 66 75 + 48 67 76 + 51 68 77 + 28 69 78 + 27 48 56 + 32 52 60 + 115 70 79 + 127 71 80 + 161 72 81 + 33 28 36 + 42 59 67 + 37 29 37 + 26 35 43 + 49 73 82 + 30 66 75 + 38 74 83 + 43 75 84 + 77 76 85 + 89 77 86 + 92 45 53 + 48 67 87 + 150 78 88 + 151 79 89 + 45 53 90 + 25 80 91 + 61 27 35 + 131 57 65 + 111 81 92 + 41 82 93 + 121 83 94 + 28 69 78 + 32 52 60 + 169 40 48 + 110 84 95 + 46 85 96 + 28 69 78 + 58 86 97 + 62 25 33 + 60 39 47 + 60 39 47 + 59 34 42 + 58 86 97 + 45 53 61 + 31 50 58 + 150 78 98 + 63 87 99 + 62 25 33 + 162 88 100 + 34 89 101 + 41 82 102 + 35 47 55 + 111 81 103 + 110 84 95 + 169 40 48 + 63 87 99 + 130 90 104 + 62 25 33 + 38 74 105 + 37 29 37 + 43 75 106 + 38 74 105 + 34 89 101 + 37 29 37 + 25 80 91 + 53 37 45 + 61 27 35 + 99 91 107 + 96 43 108 + 69 92 109 + 49 73 82 + 26 35 43 + 47 93 110 + 63 87 111 + 105 31 112 + 130 90 113 + 57 36 44 + 30 66 75 + 55 44 114 + 104 32 40 + 103 94 115 + 133 95 116 + 82 96 117 + 83 97 118 + 84 62 119 + 93 98 120 + 96 43 108 + 164 99 121 + 72 100 122 + 170 101 123 + 68 102 124 + 98 103 125 + 56 61 69 + 75 104 126 + 77 76 127 + 73 105 128 + 38 74 129 + 54 38 130 + 95 106 131 + 50 42 132 + 68 102 124 + 74 107 133 + 72 100 122 + 150 78 98 + 143 108 134 + 153 109 135 + 86 110 136 + 75 104 126 + 45 53 90 + 99 91 107 + 69 92 109 + 101 111 137 + 94 112 138 + 102 113 139 + 95 106 140 + 65 114 141 + 91 115 142 + 101 111 137 + 68 102 124 + 171 116 143 + 80 117 144 + 74 107 133 + 68 102 124 + 80 117 144 + 146 118 145 + 145 119 146 + 70 120 147 + 70 120 147 + 71 121 148 + 86 110 149 + 82 96 117 + 84 62 119 + 98 103 150 + 49 73 151 + 90 122 152 + 48 67 153 + 108 123 154 + 81 124 155 + 78 125 156 + 98 103 150 + 75 104 157 + 170 101 123 + 144 126 158 + 46 85 159 + 148 127 160 + 89 77 161 + 69 92 109 + 92 45 162 + 139 128 163 + 64 129 164 + 94 112 165 + 70 120 147 + 66 130 166 + 71 121 148 + 46 85 159 + 110 84 167 + 120 131 168 + 82 96 117 + 72 100 122 + 76 132 169 + 123 133 170 + 34 89 171 + 73 105 128 + 65 114 141 + 69 92 109 + 90 122 172 + 54 38 130 + 53 37 173 + 95 106 131 + 126 134 174 + 136 135 175 + 125 136 176 + 135 137 177 + 132 138 178 + 64 129 179 + 91 115 180 + 88 139 181 + 50 42 132 + 107 64 182 + 67 140 183 + 87 141 184 + 135 137 185 + 64 129 164 + 141 142 186 + 103 94 115 + 104 32 40 + 102 113 139 + 99 91 107 + 101 111 137 + 100 54 62 + 146 118 145 + 70 120 147 + 151 79 187 + 73 105 188 + 74 107 133 + 81 124 155 + 107 64 182 + 108 123 154 + 78 125 156 + 82 96 117 + 76 132 169 + 83 97 118 + 76 132 169 + 74 107 133 + 77 76 189 + 102 113 139 + 94 112 138 + 103 94 115 + 91 115 142 + 65 114 141 + 88 139 190 + 52 143 191 + 55 44 52 + 93 98 192 + 138 144 193 + 25 80 194 + 140 145 195 + 44 60 68 + 84 62 70 + 43 75 84 + 85 146 196 + 166 147 197 + 79 148 198 + 97 149 199 + 122 150 200 + 79 148 198 + 79 148 198 + 108 123 201 + 85 146 196 + 166 147 197 + 106 63 72 + 97 149 199 + 166 147 197 + 85 146 196 + 106 63 72 + 113 151 202 + 111 81 92 + 114 152 203 + 110 84 167 + 111 81 92 + 112 153 204 + 109 154 205 + 110 84 167 + 127 71 80 + 114 152 203 + 121 83 94 + 127 71 80 + 112 153 204 + 160 155 206 + 127 71 80 + 112 153 204 + 113 151 202 + 116 156 207 + 127 71 80 + 115 70 79 + 114 152 203 + 114 152 203 + 118 157 208 + 113 151 202 + 148 127 160 + 120 131 168 + 149 158 209 + 109 154 205 + 106 63 72 + 120 131 168 + 88 139 181 + 90 122 152 + 47 93 210 + 124 159 211 + 81 124 212 + 122 150 200 + 124 159 211 + 122 150 200 + 106 63 72 + 121 83 94 + 123 133 170 + 109 154 205 + 126 134 213 + 138 144 193 + 136 135 214 + 106 63 72 + 109 154 205 + 124 159 211 + 159 160 215 + 157 161 216 + 141 142 186 + 46 85 96 + 144 126 217 + 27 48 56 + 155 162 218 + 156 163 219 + 132 138 178 + 155 162 218 + 132 138 178 + 157 161 220 + 141 142 186 + 139 128 163 + 137 164 221 + 125 136 222 + 139 128 163 + 126 134 213 + 140 145 195 + 141 142 186 + 136 135 214 + 115 70 79 + 161 72 81 + 118 157 208 + 87 141 184 + 66 130 166 + 147 165 223 + 154 56 64 + 152 58 66 + 144 126 217 + 119 65 74 + 87 141 224 + 149 158 209 + 158 166 225 + 148 127 160 + 159 160 215 + 130 90 113 + 134 33 226 + 150 78 88 + 154 56 227 + 144 126 158 + 158 166 225 + 130 90 104 + 150 78 98 + 129 26 34 + 155 162 218 + 145 119 146 + 156 163 219 + 152 58 66 + 153 109 135 + 142 49 57 + 152 58 66 + 128 167 228 + 153 109 135 + 133 95 116 + 156 163 219 + 146 118 145 + 163 55 63 + 164 99 121 + 100 54 62 + 131 57 229 + 154 56 227 + 140 145 195 + 158 166 225 + 159 160 215 + 140 145 195 + 145 119 146 + 155 162 218 + 147 165 223 + 43 75 106 + 42 59 67 + 44 60 230 + 149 158 209 + 147 165 231 + 159 160 215 + 160 155 206 + 116 156 207 + 117 168 232 + 118 157 208 + 161 72 81 + 117 168 232 + 163 55 233 + 105 31 112 + 162 88 234 + 165 169 235 + 93 98 192 + 164 99 236 + 52 143 237 + 165 169 238 + 55 44 114 + 162 88 100 + 58 86 97 + 165 169 238 + 173 170 239 + 167 171 240 + 174 172 241 + 170 101 123 + 71 121 148 + 171 116 143 + 116 156 207 + 160 155 206 + 112 153 204 + 40 46 54 + 41 82 102 + 39 173 242 + 16 2 21 + 0 19 20 + 17 16 19 + 15 1 1 + 23 14 14 + 16 2 2 + 18 6 6 + 19 8 8 + 11 7 7 + 19 8 8 + 20 10 10 + 12 9 9 + 20 10 10 + 21 12 12 + 13 11 11 + 22 13 13 + 14 15 15 + 13 11 11 + 23 14 14 + 15 1 1 + 14 15 15 + 17 16 16 + 18 6 6 + 10 5 5 + 2 18 18 + 18 6 24 + 17 16 19 + 16 2 21 + 23 14 31 + 7 20 22 + 3 21 23 + 19 8 26 + 18 6 24 + 4 22 25 + 20 10 28 + 19 8 26 + 5 23 27 + 21 12 29 + 20 10 28 + 5 23 27 + 6 24 32 + 22 13 30 + 23 14 31 + 22 13 30 + 6 24 32 + 9 3 3 + 8 0 0 + 16 2 2 + 129 26 34 + 128 167 228 + 61 27 35 + 37 29 37 + 35 47 55 + 29 30 38 + 104 32 40 + 133 95 116 + 134 33 41 + 26 35 43 + 30 66 75 + 57 36 44 + 54 38 46 + 59 34 42 + 60 39 47 + 168 41 49 + 33 28 36 + 29 30 38 + 50 42 50 + 26 35 43 + 59 34 42 + 55 44 52 + 51 68 243 + 92 45 53 + 40 46 54 + 39 173 242 + 169 40 48 + 142 49 57 + 143 108 134 + 31 50 58 + 32 52 60 + 31 50 58 + 45 53 61 + 104 32 40 + 105 31 39 + 163 55 63 + 131 57 65 + 128 167 228 + 152 58 66 + 42 59 67 + 56 61 71 + 44 60 230 + 42 59 67 + 168 41 49 + 56 61 71 + 56 61 69 + 98 103 125 + 84 62 70 + 168 41 49 + 32 52 60 + 36 51 59 + 107 64 73 + 87 141 224 + 119 65 74 + 27 48 56 + 31 50 58 + 32 52 60 + 49 73 82 + 48 67 76 + 30 66 75 + 43 75 84 + 83 97 244 + 77 76 85 + 92 45 53 + 51 68 243 + 48 67 87 + 151 79 89 + 86 110 136 + 45 53 90 + 61 27 35 + 128 167 228 + 131 57 65 + 41 82 93 + 123 133 170 + 121 83 94 + 32 52 60 + 168 41 49 + 169 40 48 + 46 85 96 + 27 48 56 + 28 69 78 + 62 25 33 + 61 27 35 + 60 39 47 + 59 34 42 + 57 36 44 + 58 86 97 + 31 50 58 + 143 108 134 + 150 78 98 + 62 25 33 + 58 86 97 + 162 88 100 + 41 82 102 + 40 46 54 + 35 47 55 + 169 40 48 + 39 173 242 + 111 81 103 + 110 84 95 + 28 69 78 + 169 40 48 + 130 90 104 + 129 26 34 + 62 25 33 + 37 29 37 + 42 59 67 + 43 75 106 + 34 89 101 + 35 47 55 + 37 29 37 + 53 37 45 + 60 39 47 + 61 27 35 + 96 43 108 + 92 45 162 + 69 92 109 + 26 35 43 + 50 42 50 + 47 93 110 + 105 31 112 + 134 33 226 + 130 90 113 + 30 66 75 + 51 68 77 + 55 44 114 + 103 94 115 + 132 138 178 + 133 95 116 + 96 43 108 + 99 91 107 + 164 99 121 + 170 101 123 + 171 116 143 + 68 102 124 + 56 61 69 + 36 51 245 + 75 104 126 + 73 105 128 + 34 89 171 + 38 74 129 + 95 106 131 + 91 115 180 + 50 42 132 + 74 107 133 + 76 132 169 + 72 100 122 + 75 104 126 + 36 51 245 + 45 53 90 + 69 92 109 + 65 114 141 + 101 111 137 + 102 113 139 + 101 111 137 + 95 106 140 + 91 115 142 + 95 106 140 + 101 111 137 + 171 116 143 + 78 125 156 + 80 117 144 + 145 119 146 + 66 130 166 + 70 120 147 + 71 121 148 + 75 104 157 + 86 110 149 + 82 96 117 + 170 101 123 + 72 100 122 + 82 96 117 + 98 103 150 + 170 101 123 + 90 122 152 + 89 77 246 + 48 67 153 + 81 124 155 + 80 117 144 + 78 125 156 + 75 104 157 + 71 121 148 + 170 101 123 + 46 85 159 + 120 131 168 + 148 127 160 + 138 144 193 + 53 37 173 + 25 80 194 + 139 128 163 + 94 112 165 + 53 37 173 + 139 128 163 + 53 37 173 + 138 144 193 + 66 130 166 + 67 140 183 + 71 121 148 + 110 84 167 + 109 154 205 + 120 131 168 + 123 133 170 + 41 82 93 + 34 89 171 + 73 105 128 + 124 159 211 + 123 133 170 + 73 105 128 + 81 124 212 + 124 159 211 + 69 92 109 + 89 77 161 + 90 122 172 + 53 37 173 + 94 112 165 + 95 106 131 + 136 135 175 + 137 164 247 + 125 136 176 + 132 138 178 + 103 94 115 + 64 129 179 + 88 139 181 + 47 93 210 + 50 42 132 + 67 140 183 + 66 130 166 + 87 141 184 + 64 129 164 + 139 128 163 + 141 142 186 + 104 32 40 + 100 54 62 + 102 113 139 + 101 111 137 + 102 113 139 + 100 54 62 + 70 120 147 + 86 110 149 + 151 79 187 + 74 107 133 + 80 117 144 + 81 124 155 + 107 64 182 + 171 116 143 + 67 140 183 + 107 64 182 + 78 125 156 + 171 116 143 + 76 132 169 + 77 76 189 + 83 97 118 + 74 107 133 + 73 105 188 + 77 76 189 + 94 112 138 + 64 129 179 + 103 94 115 + 65 114 141 + 90 122 172 + 88 139 190 + 55 44 52 + 96 43 51 + 93 98 192 + 25 80 194 + 131 57 229 + 140 145 195 + 84 62 70 + 83 97 244 + 43 75 84 + 166 147 197 + 97 149 199 + 79 148 198 + 122 150 200 + 108 123 201 + 79 148 198 + 108 123 201 + 107 64 73 + 85 146 196 + 106 63 72 + 122 150 200 + 97 149 199 + 85 146 196 + 107 64 73 + 106 63 72 + 111 81 92 + 121 83 94 + 114 152 203 + 111 81 92 + 113 151 202 + 112 153 204 + 110 84 167 + 112 153 204 + 127 71 80 + 121 83 94 + 109 154 205 + 127 71 80 + 160 155 206 + 161 72 81 + 127 71 80 + 113 151 202 + 117 168 232 + 116 156 207 + 115 70 79 + 118 157 208 + 114 152 203 + 118 157 208 + 117 168 232 + 113 151 202 + 120 131 168 + 119 65 74 + 149 158 209 + 106 63 72 + 119 65 74 + 120 131 168 + 90 122 152 + 49 73 151 + 47 93 210 + 81 124 212 + 108 123 201 + 122 150 200 + 138 144 193 + 140 145 195 + 136 135 214 + 109 154 205 + 123 133 170 + 124 159 211 + 157 161 216 + 135 137 185 + 141 142 186 + 144 126 217 + 142 49 57 + 27 48 56 + 156 163 219 + 133 95 116 + 132 138 178 + 132 138 178 + 135 137 177 + 157 161 220 + 139 128 163 + 125 136 222 + 137 164 221 + 139 128 163 + 138 144 193 + 126 134 213 + 141 142 186 + 137 164 221 + 136 135 214 + 66 130 166 + 145 119 146 + 147 165 223 + 152 58 66 + 142 49 57 + 144 126 217 + 87 141 224 + 147 165 231 + 149 158 209 + 148 127 160 + 149 158 209 + 159 160 215 + 134 33 226 + 151 79 89 + 150 78 88 + 144 126 158 + 148 127 160 + 158 166 225 + 150 78 98 + 153 109 135 + 129 26 34 + 145 119 146 + 146 118 145 + 156 163 219 + 153 109 135 + 143 108 134 + 142 49 57 + 128 167 228 + 129 26 34 + 153 109 135 + 151 79 187 + 134 33 41 + 133 95 116 + 146 118 145 + 151 79 187 + 133 95 116 + 164 99 121 + 99 91 107 + 100 54 62 + 154 56 227 + 158 166 225 + 140 145 195 + 159 160 215 + 141 142 186 + 140 145 195 + 155 162 218 + 157 161 220 + 147 165 223 + 147 165 231 + 157 161 216 + 159 160 215 + 161 72 81 + 160 155 206 + 117 168 232 + 105 31 112 + 63 87 111 + 162 88 234 + 165 169 235 + 52 143 191 + 93 98 192 + 163 55 233 + 162 88 234 + 165 169 235 + 165 169 235 + 164 99 236 + 163 55 233 + 165 169 238 + 57 36 44 + 55 44 114 + 58 86 97 + 57 36 44 + 165 169 238 + 167 171 240 + 172 174 248 + 174 172 241 + 71 121 148 + 67 140 183 + 171 116 143 + 41 82 102 + 111 81 103 + 39 173 242 + 0 19 20 + 1 17 17 + 17 16 19 + } + $verts { + 0.095517 0.020535 0.107048 0 + 0.095517 0.003422 0.089935 0 + 0.095517 0.003423 0.065733 0 + 0.095517 0.020535 0.048621 0 + 0.095517 0.044737 0.048621 0 + 0.095517 0.061849 0.065733 0 + 0.095517 0.061849 0.089935 0 + 0.095517 0.044737 0.107048 0 + 0.111973 0.02826 0.088398 0 + 0.111973 0.022072 0.08221 0 + 0.111973 0.022073 0.073459 0 + 0.111973 0.02826 0.067271 0 + 0.111973 0.037011 0.067271 0 + 0.111973 0.043199 0.073459 0 + 0.111973 0.043199 0.08221 0 + 0.111973 0.037011 0.088397 0 + 0.109433 0.022228 0.102962 0 + 0.109433 0.007508 0.088243 0 + 0.109433 0.007508 0.067426 0 + 0.109433 0.022228 0.052706 0 + 0.109433 0.043045 0.052706 0 + 0.109433 0.057765 0.067426 0 + 0.109433 0.057765 0.088243 0 + 0.109433 0.043045 0.102962 0 + 0.112842 0.032639 0.07783 0 + -0.099505 0.066935 -0.049982 0 + -0.092664 0.040339 -0.120434 0 + -0.103224 0.042554 0.055065 0 + -0.102689 0.042855 0.078947 0 + -0.10057 0.043329 0.111602 0 + -0.092667 0.028429 -0.120438 0 + -0.103279 0.029769 0.055076 0 + -0.10247 0.030363 0.07871 0 + -0.101201 0.030406 0.111521 0 + -0.092993 0.043474 0.121945 0 + -0.098171 0.043488 0.117525 0 + -0.096924 0.00055 0.09985 0 + -0.098284 0.030406 0.117724 0 + -0.09299 0.030353 0.12194 0 + -0.097654 0.067927 0.103994 0 + -0.097983 0.055812 0.11551 0 + -0.096249 0.057584 0.115783 0 + -0.097585 0.019416 0.11697 0 + -0.095784 0.017829 0.117453 0 + -0.096703 0.005708 0.109745 0 + -0.097837 0.000327 0.061159 0 + -0.096662 0.062863 0.054868 0 + -0.082317 0.053011 -0.121687 0 + -0.080788 0.028433 -0.123425 0 + -0.080778 0.040334 -0.123334 0 + -0.087706 0.056726 -0.120418 0 + -0.085467 0.010592 -0.120859 0 + -0.097836 0.000551 -0.088269 0 + -0.098348 0.064751 -0.079425 0 + -0.097925 0.063232 -0.079999 0 + -0.098144 0.00499 -0.091061 0 + -0.096842 0.005708 0.103617 0 + -0.103264 0.028867 -0.082005 0 + -0.10496 0.026848 -0.082005 0 + -0.103232 0.040755 -0.082005 0 + -0.104948 0.04291 -0.082005 0 + -0.10547 0.043509 -0.049982 0 + -0.105788 0.026895 -0.049982 0 + -0.098308 0.000352 -0.05019 0 + 0.099932 0.066894 -0.049982 0 + 0.092664 0.040339 -0.120434 0 + 0.103224 0.042461 0.055071 0 + 0.102689 0.042855 0.078947 0 + 0.100532 0.043349 0.112406 0 + 0.092667 0.028429 -0.120438 0 + 0.103279 0.029929 0.055076 0 + 0.102704 0.030143 0.078961 0 + 0.100748 0.03028 0.112741 0 + 0.092993 0.043474 0.121945 0 + 0.097367 0.043425 0.119055 0 + 0.096924 0.00055 0.09985 0 + 0.09704 0.03024 0.11912 0 + 0.09299 0.030353 0.12194 0 + 0.097663 0.067888 0.103917 0 + 0.074095 0.06934 0.101023 0 + 0.097983 0.055812 0.11551 0 + 0.096249 0.057584 0.115783 0 + 0.097585 0.019416 0.11697 0 + 0.095784 0.017829 0.117453 0 + 0.096703 0.005708 0.109745 0 + 0.074358 0.066906 0.083519 0 + 0.097837 0.000327 0.061159 0 + 0.097629 0.06263 0.056351 0 + 0.082317 0.053011 -0.121687 0 + 0.080788 0.028433 -0.123425 0 + 0.080778 0.040334 -0.123334 0 + 0.087706 0.056726 -0.120418 0 + 0.085407 0.011011 -0.121038 0 + 0.097836 0.000551 -0.088269 0 + 0.098107 0.065522 -0.078996 0 + 0.096894 0.063298 -0.079626 0 + 0.098398 0.004318 -0.089969 0 + 0.038973 0.069333 0.101034 0 + 0.096842 0.005708 0.103617 0 + 0.103624 0.028107 -0.082021 0 + 0.104964 0.026441 -0.082021 0 + 0.10325 0.040719 -0.081958 0 + 0.104971 0.043102 -0.082021 0 + 0.105344 0.043668 -0.049982 0 + 0.10556 0.026815 -0.049982 0 + 0.098308 0.000352 -0.05019 0 + 0.029527 0.065919 0.078989 0 + 0.09684 0.065351 0.077617 0 + 0.095774 0.069233 0.103121 0 + -0.029869 0.066022 0.078825 0 + -0.096641 0.065436 0.077284 0 + -0.095505 0.069231 0.101987 0 + -0.084591 0.066825 0.083829 0 + -0.084203 0.069305 0.100077 0 + -0.049014 0.069214 0.100099 0 + -0.050735 0.056523 0.087297 0 + -0.083088 0.05656 0.087447 0 + -0.08271 0.058466 0.099985 0 + -0.050554 0.058505 0.100336 0 + 0.056509 0.063246 0.056472 0 + -0.056513 0.063235 0.05629 0 + -0.034763 0.069549 0.106329 0 + 0.033962 0.069819 0.10761 0 + -0.020437 0.058861 0.117394 0 + 0.020406 0.058967 0.116556 0 + 0.056796 0.066183 -0.052423 0 + -0.05671 0.066183 -0.052423 0 + -0.049243 0.066807 0.083831 0 + -0.105648 0.044528 0.034586 0 + -0.106036 0.027566 0.034586 0 + -0.098445 0.000371 0.034221 0 + -0.099963 0.065898 0.034586 0 + 0.105375 0.044695 0.034586 0 + 0.105655 0.027547 0.034586 0 + 0.098445 0.000371 0.034221 0 + 0.099726 0.066559 0.034586 0 + -0.0567 0.065776 0.033907 0 + 0.056786 0.065776 0.033907 0 + -0.057415 0.067908 -0.052947 0 + 0.057168 0.067873 -0.052947 0 + -0.057408 0.067859 0.034586 0 + 0.057231 0.067847 0.034586 0 + -0.103377 0.042437 0.049187 0 + -0.103394 0.029767 0.048024 0 + -0.098013 0.063274 0.050536 0 + 0.104116 0.041956 0.049506 0 + 0.103453 0.029852 0.047162 0 + 0.098014 0.063274 0.050536 0 + -0.056897 0.064028 0.050536 0 + 0.056735 0.064028 0.050536 0 + -0.097979 0.000471 0.047288 0 + 0.098003 0.000325 0.047898 0 + -0.104925 0.044685 0.049252 0 + -0.105263 0.027719 0.047292 0 + -0.0982 0.065076 0.049936 0 + 0.104424 0.043948 0.049365 0 + 0.104788 0.027859 0.047533 0 + 0.098521 0.06552 0.050243 0 + -0.057444 0.066326 0.05002 0 + 0.056376 0.066153 0.050331 0 + -0.073762 0.056733 0.088609 0 + -0.060063 0.056726 0.088607 0 + -0.09794 0.000507 -0.079776 0 + 0.09794 0.000507 -0.079776 0 + 0.097932 0.00051 -0.080447 0 + -0.097932 0.00051 -0.080447 0 + 0.039036 0.066893 0.08349 0 + 0.039036 0.067034 0.083507 0 + -0.101787 0.030403 0.096252 0 + -0.101629 0.043092 0.095275 0 + 0.102072 0.030312 0.097389 0 + 0.101859 0.042657 0.095646 0 + 0.038973 0.069474 0.101051 0 + 0.074358 0.067047 0.083537 0 + 0.074095 0.069481 0.101041 0 + } + $texCoords { + 0.16282 0.68089 + 0.13806 0.69728 + 0.15603 0.64595 + 0.19189 0.68672 + 0.1703 0.71899 + 0.20842 0.71142 + 0.24345 0.70448 + 0.20264 0.7406 + 0.2324 0.76049 + 0.17785 0.75719 + 0.18477 0.79238 + 0.14858 0.75134 + 0.12854 0.78113 + 0.09688 0.73327 + 0.1085 0.67727 + 0.13209 0.72645 + 0.21172 0.65711 + 0.95674 0.97535 + 0.95674 0.66664 + 0.92921 0.97535 + 0.95674 0.93125 + 0.92921 0.93125 + 0.95674 0.88715 + 0.95674 0.71075 + 0.92921 0.66664 + 0.95674 0.75485 + 0.92921 0.71075 + 0.95674 0.79895 + 0.92921 0.75485 + 0.92921 0.79895 + 0.92921 0.84305 + 0.92921 0.88715 + 0.95674 0.84305 + 0.86213 0.65474 + 0.86226 0.82326 + 0.82828 0.64808 + 0.86237 0.96977 + 0.86238 0.9823 + 0.82852 0.96988 + 0.84686 0.16116 + 0.90112 0.16827 + 0.84788 0.3319 + 0.82824 0.58696 + 0.82819 0.51562 + 0.86208 0.58787 + 0.78518 0.59597 + 0.78702 0.59332 + 0.82824 0.59133 + 0.8285 0.93923 + 0.86258 0.94102 + 0.80204 0.51562 + 0.39765 0.90287 + 0.77075 0.90287 + 0.42287 0.96038 + 0.80645 0.97738 + 0.82853 0.9828 + 0.82844 0.86407 + 0.82844 0.85377 + 0.86229 0.86416 + 0.91526 0.94523 + 0.86232 0.9082 + 0.91963 0.87545 + 0.90112 0.10383 + 0.85279 0.10772 + 0.78127 0.84909 + 0.77937 0.82338 + 0.82843 0.84951 + 0.88109 0.9778 + 0.7688 0.50698 + 0.76913 0.51603 + 0.3996 0.50698 + 0.90713 0.95344 + 0.25549 0.54959 + 0.38326 0.54959 + 0.30996 0.59118 + 0.86203 0.51562 + 0.86201 0.49576 + 0.89197 0.51562 + 0.82848 0.90858 + 0.28595 0.69673 + 0.10383 0.53536 + 0.28595 0.71262 + 0.82817 0.49579 + 0.76179 0.45314 + 0.76695 0.47713 + 0.40649 0.45358 + 0.43088 0.99374 + 0.73812 0.99374 + 0.7712 0.62257 + 0.39735 0.62257 + 0.77088 0.60322 + 0.77687 0.64648 + 0.01805 0.49913 + 0.01779 0.4665 + 0.12942 0.49913 + 0.78276 0.90722 + 0.78338 0.86191 + 0.86209 0.59182 + 0.92145 0.85612 + 0.92025 0.64764 + 0.91209 0.59446 + 0.82854 0.99613 + 0.80224 0.97937 + 0.77953 0.95406 + 0.92457 0.81868 + 0.86239 0.99525 + 0.88495 0.9803 + 0.90112 0.10033 + 0.85911 0.08798 + 0.90112 0.02579 + 0.80599 0.50369 + 0.77137 0.81772 + 0.3974 0.81772 + 0.77202 0.65686 + 0.903 0.57136 + 0.9366 0.16418 + 0.90112 0.33593 + 0.88722 0.48738 + 0.88332 0.48982 + 0.86217 0.47415 + 0.85206 0.09165 + 0.85275 0.10652 + 0.90112 0.48127 + 0.90118 0.45237 + 0.9366 0.48224 + 0.39929 0.51603 + 0.39932 0.52796 + 0.37823 0.40303 + 0.37735 0.43767 + 0.02523 0.40303 + 0.01367 0.85359 + 0.38905 0.85359 + 0.03536 0.93375 + 0.9366 0.49656 + 0.86228 0.85264 + 0.86228 0.84811 + 0.39764 0.60322 + 0.9366 0.09644 + 0.98586 0.10449 + 0.9366 0.10093 + 0.98439 0.09967 + 0.9366 0.02579 + 0.95452 0.02579 + 0.9366 0.45068 + 0.95997 0.48822 + 0.90112 0.36126 + 0.9366 0.36379 + 0.90112 0.37384 + 0.90112 0.41784 + 0.85014 0.38348 + 0.86128 0.46244 + 0.04857 0.96652 + 0.36195 0.96652 + 0.04836 0.9975 + 0.98652 0.46759 + 0.9641 0.49022 + 0.98218 0.46833 + 0.8532 0.45399 + 0.01008 0.60157 + 0.01284 0.59118 + 0.08941 0.60157 + 0.90112 0.00775 + 0.86476 0.02579 + 0.30996 0.80005 + 0.38816 0.80005 + 0.38816 0.8498 + 0.9366 0.37451 + 0.01414 0.54959 + 0.08941 0.59118 + 0.90112 0.4953 + 0.16024 0.47159 + 0.02486 0.43767 + 0.9366 0.00356 + 0.01281 0.8498 + 0.01226 0.38281 + 0.01234 0.01945 + 0.4906 0.38293 + 0.99302 0.33269 + 0.9366 0.33451 + 0.99042 0.14964 + 0.3735 0.93375 + 0.36351 0.94167 + 0.98535 0.4201 + 0.9366 0.41912 + 0.98374 0.37738 + 0.38816 0.63721 + 0.30996 0.63721 + 0.84994 0.3648 + 0.9366 0.50656 + 0.90112 0.50484 + 0.94923 0.00903 + 0.76994 0.89392 + 0.39894 0.89392 + 0.08941 0.80005 + 0.0062 0.80005 + 0.08941 0.63721 + 0.34091 0.54131 + 0.27457 0.54131 + 0.34068 0.50669 + 0.27681 0.50669 + 0.26884 0.49913 + 0.38189 0.49913 + 0.0382 0.50669 + 0.10383 0.50669 + 0.0382 0.53536 + 0.14119 0.54959 + 0.28595 0.7361 + 0.28595 0.75116 + 0.26436 0.69673 + 0.30996 0.60157 + 0.04584 0.94167 + 0.23988 0.47159 + 0.38316 0.4665 + 0.09335 0.79559 + 0.09335 0.64264 + 0.30996 0.60554 + 0.38816 0.60554 + 0.78367 0.85183 + 0.9366 0.3611 + 0.90112 0.35916 + 0.9893 0.36156 + 0.30577 0.64264 + 0.30577 0.79559 + 0.9861 0.36453 + 0.38444 0.59118 + 0.08941 0.60554 + 0.39657 0.65665 + 0.0062 0.60554 + 0.82841 0.81741 + 0.0062 0.63721 + 0.90611 0.96501 + 0.38816 0.60157 + 0.26436 0.75116 + 0.39858 0.87311 + 0.77028 0.87311 + 0.77025 0.87483 + 0.3986 0.87512 + 0.91208 0.57718 + 0.91206 0.59324 + 0.75202 0.13042 + 0.50435 0.13042 + 0.75202 0.00601 + 0.78441 0.95705 + 0.74626 0.96038 + 0.40138 0.47713 + 0.76912 0.52796 + 0.36361 0.9975 + 0.49059 0.01942 + 0.50435 0.00601 + } + $normals { + 0.9922 -0.0476 0.1149 + 0.99 0.0281 0.1383 + 0.751 -0.1714 0.6376 + 0.99 -0.1177 0.0779 + 1 0 -0 + 0.99 -0.1383 -0.0281 + 0.7172 -0.5998 -0.3548 + 0.99 -0.0779 -0.1177 + 0.7172 -0.1733 -0.675 + 0.99 0.0281 -0.1383 + 0.7172 0.3548 -0.5998 + 0.9895 0.1335 -0.0553 + 0.7751 0.5838 -0.2418 + 0.7172 0.675 0.1733 + 0.7172 0.3548 0.5998 + 0.99 0.1177 0.0779 + 0.6535 -0.7012 0.285 + 0.3028 -0.8805 0.3647 + 0.3007 -0.9194 -0.2533 + 0.3007 -0.471 0.8293 + 0.3007 0.2533 0.9195 + 0.3007 -0.471 -0.8293 + 0.3007 0.2533 -0.9195 + 0.3028 0.8805 -0.3647 + 0.3007 0.8293 0.471 + -0.9814 -0.1916 -0.0073 + -0.992 -0.126 0.0064 + -0.986 0.1665 -0.01 + -0.9832 -0.0867 0.1604 + -0.7762 -0.0271 0.6299 + -0.9852 0.0729 0.1553 + 0.0659 -0.9978 -0.0015 + 0.9825 -0.1861 -0.0048 + 0.2068 -0.9784 0.001 + -0.9286 0.202 -0.3112 + -0.8867 0.1158 -0.4477 + -0.9598 -0.0717 -0.2714 + -0.1408 0.9752 -0.1707 + -0.1058 0.969 -0.2232 + -0.9885 0.1309 -0.0759 + -0.9873 0.1563 0.0298 + -0.9915 -0.1095 0.0704 + -0.0935 0.9621 -0.256 + 0.2316 -0.9092 -0.3459 + -0.1333 -0.9342 -0.3309 + 0.0397 -0.8174 -0.5747 + -0.9717 0.1618 0.1719 + -0.7776 0.0831 0.6232 + -0.9872 0.1535 0.0437 + -0.9447 0.0758 0.3192 + -0.9911 -0.1308 0.0265 + -0.2063 -0.9702 0.1274 + -0.9924 -0.1182 0.0335 + -0.1085 -0.9941 0.0057 + 0.9827 -0.1662 -0.0814 + 0.2434 -0.9699 -0.0083 + -0.2549 0.9542 0.1567 + -0.6477 0.7617 0.0174 + -0.9649 0.2022 0.1678 + -0.968 -0.1893 0.1646 + -0.0284 -0.7508 0.6599 + -0.1437 -0.8748 0.4627 + 0.0143 -0.7524 0.6586 + -0.039 0.9982 -0.0446 + 0.3916 0.9127 -0.1165 + 0.0044 0.9969 -0.0784 + -0.8636 -0.1385 -0.4847 + -0.0091 -0.0801 -0.9967 + -0.0791 -0.7867 -0.6123 + -0.9793 0.2013 0.0191 + -0.8189 0.5362 0.2047 + -0.0894 0.9701 0.2257 + 0.0191 0.9838 0.1782 + -0.0243 0.0673 -0.9974 + -0.0147 -0.1147 0.9933 + -0.0074 -0.4424 0.8968 + 0.0147 -0.2266 0.9739 + 0.0172 -0.0753 -0.997 + -0.1596 -0.9871 0.0109 + 0.163 -0.9866 0.0075 + -0.306 0.952 -0.0096 + -0.351 0.8921 0.2844 + -0.0582 0.6218 0.781 + 0.0748 0.9093 0.4093 + -0.3852 0.9168 -0.1054 + -0.5575 0.83 -0.015 + -0.9808 -0.1669 -0.1011 + -0.129 -0.9916 -0.0018 + -0.1338 -0.991 -0.0076 + -0.0307 0.1973 0.9799 + -0.1306 -0.9914 0.001 + 0.9579 -0.0891 -0.273 + 0.8845 -0.1154 -0.4521 + -0.0114 0.1516 -0.9884 + 0.9915 0.1296 -0.0113 + 0.9925 -0.1213 0.0167 + 0.9635 -0.1842 0.1944 + 0.0116 -0.4406 0.8976 + 0.0076 -0.9247 -0.3807 + 0.1715 -0.9845 -0.0367 + 0.964 -0.0683 0.257 + 0.9902 -0.1127 0.0826 + 0.9842 0.0726 0.1617 + 0.2625 -0.8501 0.4566 + 0.1067 -0.9862 0.1266 + 0.0115 0.1656 0.9861 + 0.0567 0.9741 -0.2189 + 0.7584 0.0612 0.649 + -0.9511 -0.1349 0.278 + -0.9756 -0.1098 0.1904 + 0.2083 -0.978 0.0088 + 0.9362 0.1859 -0.2984 + 0.1986 0.9679 -0.154 + 0.9876 0.1321 -0.0848 + 0.8499 0.153 -0.5042 + 0.1866 0.9417 -0.28 + 0.9897 0.1385 0.0351 + 0.9678 0.1667 0.1888 + 0.9692 -0.1976 0.1473 + 0.9668 0.0842 0.2411 + 0.9905 -0.1346 0.0271 + 0.9924 -0.1201 0.0283 + 0.0127 0.0691 -0.9975 + 0.0616 0.9584 0.2787 + 0.0536 0.5827 0.8109 + 0.9723 0.2301 0.0414 + -0.4991 0.619 0.6065 + -0.0055 0.8448 0.535 + -0.0171 0.9991 -0.0394 + 0.4385 0.8987 -0.0088 + 0.9889 0.1423 0.0434 + -0.0018 0.9977 -0.0682 + 0.7374 -0.0659 0.6722 + 0.0395 0.6138 0.7885 + 0.015 0.9989 0.0436 + 0.0166 0.9997 -0.0192 + -0.0074 0.9999 0.0145 + 0.4334 0.901 0.0185 + 0.9843 0.1759 0.0134 + 0.0157 0.1968 -0.9803 + 0.9816 0.1894 0.0252 + 0.5557 0.8313 -0.0153 + 0.0041 0.9999 -0.0138 + -0.0153 -0.9213 -0.3886 + 0.026 0.9992 -0.0314 + -0.0094 0.9997 0.0225 + 0.0117 0.9862 -0.1654 + -0.0041 0.9894 -0.1454 + 0.004 0.9929 -0.1186 + -0.0151 0.9922 -0.1236 + -0.0935 0.853 0.5135 + 0.3544 0.3302 -0.8749 + -0.3663 0.7788 -0.5091 + 0.1487 0.934 0.3248 + 0.042 0.9987 0.0304 + -0.016 0.7001 0.7139 + 0.8304 0.5285 0.1767 + -0.1415 0.5319 -0.8349 + 0.0042 0.9557 0.2943 + -0.0441 0.8656 0.4988 + 0.0028 0.9678 0.2518 + 0.4129 0.8941 0.1733 + 0.9775 0.1479 0.1502 + 0.9923 -0.0315 0.12 + -0.0329 0.9993 -0.0189 + 0.5087 0.6549 0.5588 + -0.0075 0.9659 0.2588 + -0.9888 0.1489 0.0066 + 0.1705 0.8152 -0.5535 + -0.1006 -0.9945 -0.0278 + -0.0003 0.9905 -0.1377 + -0.0003 0.9905 -0.1377 + -0.0003 0.9905 -0.1377 + -0.9646 0.253 0.0743 + -0.0003 0.9905 -0.1377 + } + } + } +} diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.xob b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.xob new file mode 100644 index 000000000..73b88e0d5 Binary files /dev/null and b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.xob differ diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.xob.meta b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.xob.meta new file mode 100644 index 000000000..ea90d831a --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.xob.meta @@ -0,0 +1,66 @@ +MetaFileClass { + Name "{05C1F40455DAF92F}Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.xob" + Configurations { + FBXResourceClass PC { + ExportSkinning 1 + MaterialAssigns { + MaterialAssignClass "{656F54678395D5CC}" { + SourceMaterial "Body" + AssignedMaterial "{7865F0F14130205D}Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body.emat" + } + MaterialAssignClass "{656F54678395D5EA}" { + SourceMaterial "ScreenGlass" + AssignedMaterial "{51D8F10E7CD4C941}Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenGlass.emat" + } + MaterialAssignClass "{656F54678395D5C6}" { + SourceMaterial "ScreenBacklight" + AssignedMaterial "{5F37F66781168481}Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenBacklight.emat" + } + MaterialAssignClass "{656F54678395D5C8}" { + SourceMaterial "ScreenRenderTarget" + AssignedMaterial "{64F3938CDB3114DE}Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenRenderTarget.emat" + } + } + MeshParams { + MeshParam ZappyBoy1000 { + } + } + GeometryParams { + GeometryParam UBX_Body { + LayerPreset "ItemFireView" + SurfaceProperties { + "{5EAA7FB0A83F90CF}Common/Materials/Game/plastic.gamemat" + } + Mass 0 + Margin 0 + } + GeometryParam UBX_OnButton { + LayerPreset "Interaction" + SurfaceProperties { + "{536BF67B2052B869}material/metal.gamemat" + } + Mass 0 + Margin 0 + } + GeometryParam UBX_ShockButton { + LayerPreset "Interaction" + SurfaceProperties { + "{536BF67B2052B869}material/metal.gamemat" + } + Mass 0 + Margin 0 + } + } + } + FBXResourceClass XBOX_ONE : PC { + } + FBXResourceClass XBOX_SERIES : PC { + } + FBXResourceClass PS4 : PC { + } + FBXResourceClass PS5 : PC { + } + FBXResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body.emat b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body.emat new file mode 100644 index 000000000..c4928a045 --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body.emat @@ -0,0 +1,4 @@ +MatPBRBasic { + BCRMap "{9BDAB29B5674BB57}Assets/Items/Equipement/ZappyBoy1000/Data/Casing_BCR.edds" + NMOMap "{A30209098F03E9C9}Assets/Items/Equipement/ZappyBoy1000/Data/Casing_NMO.edds" +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body.emat.meta b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body.emat.meta new file mode 100644 index 000000000..aa6190602 --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body.emat.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{7865F0F14130205D}Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body.emat" + Configurations { + EMATResourceClass PC { + } + EMATResourceClass XBOX_ONE : PC { + } + EMATResourceClass XBOX_SERIES : PC { + } + EMATResourceClass PS4 : PC { + } + EMATResourceClass PS5 : PC { + } + EMATResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_BCR.edds b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_BCR.edds new file mode 100644 index 000000000..dc86497f6 Binary files /dev/null and b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_BCR.edds differ diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_BCR.edds.meta b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_BCR.edds.meta new file mode 100644 index 000000000..1f816da37 --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_BCR.edds.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{9BDAB29B5674BB57}Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_BCR.edds" + Configurations { + PNGResourceClass PC : "{EAB5DE3219F9CBA8}Configs/System/ResourceTypes/PC/TextureColorMap.conf" { + } + PNGResourceClass XBOX_ONE : "{91D862F89991BFBE}Configs/System/ResourceTypes/XBOX_ONE/TextureColorMap.conf" { + } + PNGResourceClass XBOX_SERIES : "{5FEAED1642ECE679}Configs/System/ResourceTypes/XBOX_SERIES/TextureColorMap.conf" { + } + PNGResourceClass PS4 : "{12273E1A0928F0C4}Configs/System/ResourceTypes/PS4/TextureColorMap.conf" { + } + PNGResourceClass PS5 : "{531A0D167B1ABD97}Configs/System/ResourceTypes/PS5/TextureColorMap.conf" { + } + PNGResourceClass HEADLESS : "{BEAF5CD0C438676E}Configs/System/ResourceTypes/HEADLESS/TextureColorMap.conf" { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_BCR.png b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_BCR.png new file mode 100644 index 000000000..fe39cdb57 Binary files /dev/null and b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_BCR.png differ diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_NMO.edds b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_NMO.edds new file mode 100644 index 000000000..6eaf567cd Binary files /dev/null and b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_NMO.edds differ diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_NMO.edds.meta b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_NMO.edds.meta new file mode 100644 index 000000000..ca2cd3d4c --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_NMO.edds.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{A30209098F03E9C9}Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_NMO.edds" + Configurations { + PNGResourceClass PC : "{A968DA7F9A1E3A3E}Configs/System/ResourceTypes/PC/TextureNType.conf" { + } + PNGResourceClass XBOX_ONE : "{7F6A4D372443A88D}Configs/System/ResourceTypes/XBOX_ONE/TextureNType.conf" { + } + PNGResourceClass XBOX_SERIES : "{065D289C7FF8B20D}Configs/System/ResourceTypes/XBOX_SERIES/TextureNType.conf" { + } + PNGResourceClass PS4 : "{29DF4A6CBBABE916}Configs/System/ResourceTypes/PS4/TextureNType.conf" { + } + PNGResourceClass PS5 : "{DED3C8CA8494EA99}Configs/System/ResourceTypes/PS5/TextureNType.conf" { + } + PNGResourceClass HEADLESS : "{AFD658E4D0EB5FBC}Configs/System/ResourceTypes/HEADLESS/TextureNType.conf" { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_NMO.png b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_NMO.png new file mode 100644 index 000000000..75fedd7e1 Binary files /dev/null and b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Body_NMO.png differ diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Render_target.emat b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Render_target.emat new file mode 100644 index 000000000..72bbe3618 --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Render_target.emat @@ -0,0 +1,2 @@ +MatPBRBasic { +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Render_target.emat.meta b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Render_target.emat.meta new file mode 100644 index 000000000..ae64374f1 --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Render_target.emat.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{0ACBA7F2E93D47A9}Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/Render_target.emat" + Configurations { + EMATResourceClass PC { + } + EMATResourceClass XBOX_ONE : PC { + } + EMATResourceClass XBOX_SERIES : PC { + } + EMATResourceClass PS4 : PC { + } + EMATResourceClass PS5 : PC { + } + EMATResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenBacklight.emat b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenBacklight.emat new file mode 100644 index 000000000..dbae7a495 --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenBacklight.emat @@ -0,0 +1,4 @@ +MatPBRBasic { + Color 0.491 0.644 0.939 1 + Emissive 0.491 0.644 0.939 1 +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenBacklight.emat.meta b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenBacklight.emat.meta new file mode 100644 index 000000000..6cd1f399d --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenBacklight.emat.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{5F37F66781168481}Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenBacklight.emat" + Configurations { + EMATResourceClass PC { + } + EMATResourceClass XBOX_ONE : PC { + } + EMATResourceClass XBOX_SERIES : PC { + } + EMATResourceClass PS4 : PC { + } + EMATResourceClass PS5 : PC { + } + EMATResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenGlass.emat b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenGlass.emat new file mode 100644 index 000000000..6382f5ab2 --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenGlass.emat @@ -0,0 +1,7 @@ +MatPBRBasicGlass : "{7331730035B4315E}Assets/Vehicles/Helicopters/UH1H/Data/UH1_Glass_Green.emat" { + Color 0.086 0.206 0.539 1 + DiffuseIBL 0.235 0.334 0.539 1 + SpecularIBL 0.281 0.363 0.521 1 + Diffuse 0.086 0.206 0.539 1 + Specular 0.086 0.206 0.539 1 +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenGlass.emat.meta b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenGlass.emat.meta new file mode 100644 index 000000000..57db4021e --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenGlass.emat.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{51D8F10E7CD4C941}Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenGlass.emat" + Configurations { + EMATResourceClass PC { + } + EMATResourceClass XBOX_ONE : PC { + } + EMATResourceClass XBOX_SERIES : PC { + } + EMATResourceClass PS4 : PC { + } + EMATResourceClass PS5 : PC { + } + EMATResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenRenderTarget.emat b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenRenderTarget.emat new file mode 100644 index 000000000..14b05b03e --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenRenderTarget.emat @@ -0,0 +1,7 @@ +MatPBRBasic { + Color 0 0 0 1 + Cull none + Sort decal + BlendMode AlphaBlend + OpacityMap "$rendertarget" +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenRenderTarget.emat.meta b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenRenderTarget.emat.meta new file mode 100644 index 000000000..9d5db5bca --- /dev/null +++ b/addons/medical_defibrillation/Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenRenderTarget.emat.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{64F3938CDB3114DE}Assets/Items/Equipement/Defibrillator/ZappyBoy1000/Data/ScreenRenderTarget.emat" + Configurations { + EMATResourceClass PC { + } + EMATResourceClass XBOX_ONE : PC { + } + EMATResourceClass XBOX_SERIES : PC { + } + EMATResourceClass PS4 : PC { + } + EMATResourceClass PS5 : PC { + } + EMATResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Configs/ACE/Settings.conf b/addons/medical_defibrillation/Configs/ACE/Settings.conf new file mode 100644 index 000000000..324914f50 --- /dev/null +++ b/addons/medical_defibrillation/Configs/ACE/Settings.conf @@ -0,0 +1,6 @@ +ACE_SettingsConfig : "{A305FEB7400A2965}Configs/ACE/Settings.conf" { + m_aInitialModSettings { + ACE_Medical_Defibrillation_Defibrillation_Settings "{68440A2A7EA03E86}" { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Configs/ACE/Settings.conf.meta b/addons/medical_defibrillation/Configs/ACE/Settings.conf.meta new file mode 100644 index 000000000..094ecd2fc --- /dev/null +++ b/addons/medical_defibrillation/Configs/ACE/Settings.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{A305FEB7400A2965}Configs/ACE/Settings.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Configs/EntityCatalog/FIA/FIA_InventoryItems.conf b/addons/medical_defibrillation/Configs/EntityCatalog/FIA/FIA_InventoryItems.conf new file mode 100644 index 000000000..cc49661b9 --- /dev/null +++ b/addons/medical_defibrillation/Configs/EntityCatalog/FIA/FIA_InventoryItems.conf @@ -0,0 +1,18 @@ +SCR_EntityCatalogMultiList { + m_aMultiLists { + SCR_EntityCatalogMultiListEntry "{5C630E453BCB39DC}" { + m_aEntities { + SCR_EntityCatalogInventoryItem "{655D437F0042C2C6}" { + m_sEntityPrefab "{60DAD76C48BD7054}Prefabs/Items/Medical Defibrillation/ACE_DefibrillatorAED.et" + m_aEntityDataList { + SCR_ArsenalItem "{655D437FC0799C4C}" { + m_eItemType HEAL + m_eItemMode SUPPORT_STATION + m_iSupplyCost 0 + } + } + } + } + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Configs/EntityCatalog/FIA/FIA_InventoryItems.conf.meta b/addons/medical_defibrillation/Configs/EntityCatalog/FIA/FIA_InventoryItems.conf.meta new file mode 100644 index 000000000..11f600e6f --- /dev/null +++ b/addons/medical_defibrillation/Configs/EntityCatalog/FIA/FIA_InventoryItems.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{E908001749419691}Configs/EntityCatalog/FIA/FIA_InventoryItems.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass HEADLESS : PC { + } + CONFResourceClass PS5 : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Configs/EntityCatalog/US/US_InventoryItems.conf b/addons/medical_defibrillation/Configs/EntityCatalog/US/US_InventoryItems.conf new file mode 100644 index 000000000..d60fd454b --- /dev/null +++ b/addons/medical_defibrillation/Configs/EntityCatalog/US/US_InventoryItems.conf @@ -0,0 +1,18 @@ +SCR_EntityCatalogMultiList { + m_aMultiLists { + SCR_EntityCatalogMultiListEntry "{5C68AD59F0753ABE}" { + m_aEntities { + SCR_EntityCatalogInventoryItem "{655D437F0854D451}" { + m_sEntityPrefab "{60DAD76C48BD7054}Prefabs/Items/Medical Defibrillation/ACE_DefibrillatorAED.et" + m_aEntityDataList { + SCR_ArsenalItem "{655D437FC0799C4C}" { + m_eItemType HEAL + m_eItemMode SUPPORT_STATION + m_iSupplyCost 0 + } + } + } + } + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Configs/EntityCatalog/US/US_InventoryItems.conf.meta b/addons/medical_defibrillation/Configs/EntityCatalog/US/US_InventoryItems.conf.meta new file mode 100644 index 000000000..6f10d253a --- /dev/null +++ b/addons/medical_defibrillation/Configs/EntityCatalog/US/US_InventoryItems.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{5F7EC52FC40A03E2}Configs/EntityCatalog/US/US_InventoryItems.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass HEADLESS : PC { + } + CONFResourceClass PS5 : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Configs/EntityCatalog/USSR/USSR_InventoryItems.conf b/addons/medical_defibrillation/Configs/EntityCatalog/USSR/USSR_InventoryItems.conf new file mode 100644 index 000000000..b0f580214 --- /dev/null +++ b/addons/medical_defibrillation/Configs/EntityCatalog/USSR/USSR_InventoryItems.conf @@ -0,0 +1,18 @@ +SCR_EntityCatalogMultiList { + m_aMultiLists { + SCR_EntityCatalogMultiListEntry "{5C68AD5F7414CA4A}" { + m_aEntities { + SCR_EntityCatalogInventoryItem "{655D437FA443CE63}" { + m_sEntityPrefab "{60DAD76C48BD7054}Prefabs/Items/Medical Defibrillation/ACE_DefibrillatorAED.et" + m_aEntityDataList { + SCR_ArsenalItem "{655D437FC0799C4C}" { + m_eItemType HEAL + m_eItemMode SUPPORT_STATION + m_iSupplyCost 0 + } + } + } + } + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Configs/EntityCatalog/USSR/USSR_InventoryItems.conf.meta b/addons/medical_defibrillation/Configs/EntityCatalog/USSR/USSR_InventoryItems.conf.meta new file mode 100644 index 000000000..5c78cfc31 --- /dev/null +++ b/addons/medical_defibrillation/Configs/EntityCatalog/USSR/USSR_InventoryItems.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{C53421647C3D0D2E}Configs/EntityCatalog/USSR/USSR_InventoryItems.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass HEADLESS : PC { + } + CONFResourceClass PS5 : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Configs/Notifications/Notifications.conf b/addons/medical_defibrillation/Configs/Notifications/Notifications.conf new file mode 100644 index 000000000..59217129c --- /dev/null +++ b/addons/medical_defibrillation/Configs/Notifications/Notifications.conf @@ -0,0 +1,48 @@ +SCR_NotificationConfig { + m_aNotificationDisplayData { + SCR_NotificationDisplayData "{6856039A1C33B592}" { + m_NotificationKey ACE_MEDICAL_DEFIBRILLATION_CONNECTED + m_bPriorityNotification 1 + m_bAddFriendlyIndicator 1 + m_info SCR_UINotificationInfo "{6856039A07BA1E95}" { + Name "#ACE-MedicalDefibrillation_Notification_PatientConnected" + Icon "{E550A13811DF0258}UI/Textures/InventoryIcons/Medical/Medical-icons-100_atlas.edds" + IconSetName "Unconscious_UI" + m_cNotificationColor POSITIVE + } + } + SCR_NotificationDisplayData "{68575088086B55F9}" { + m_NotificationKey ACE_MEDICAL_DEFIBRILLATION_DISCONNECTED + m_bPriorityNotification 1 + m_bAddFriendlyIndicator 1 + m_info SCR_UINotificationInfo "{68575088086B997E}" { + Name "#ACE-MedicalDefibrillation_Notification_PatientDisconnected" + Icon "{E550A13811DF0258}UI/Textures/InventoryIcons/Medical/Medical-icons-100_atlas.edds" + IconSetName "Unconscious_UI" + m_cNotificationColor WARNING + } + } + SCR_NotificationDisplayData "{6857508A198CF214}" { + m_NotificationKey ACE_MEDICAL_DEFIBRILLATION_SHOCKDELIVERED + m_bPriorityNotification 1 + m_bAddFriendlyIndicator 1 + m_info SCR_UINotificationInfo "{6857508A198CF251}" { + Name "#ACE-MedicalDefibrillation_Notification_ShockDelivered" + Icon "{E550A13811DF0258}UI/Textures/InventoryIcons/Medical/Medical-icons-100_atlas.edds" + IconSetName "Unconscious_UI" + m_cNotificationColor NEGATIVE + } + } + SCR_NotificationDisplayData "{6857508ACA4A84D2}" { + m_NotificationKey ACE_MEDICAL_DEFIBRILLATION_UNABLETOCONNECT + m_bPriorityNotification 1 + m_bAddFriendlyIndicator 1 + m_info SCR_UINotificationInfo "{6857508ACA4A850B}" { + Name "#ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + Icon "{E550A13811DF0258}UI/Textures/InventoryIcons/Medical/Medical-icons-100_atlas.edds" + IconSetName "Unconscious_UI" + m_cNotificationColor WARNING + } + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Configs/Notifications/Notifications.conf.meta b/addons/medical_defibrillation/Configs/Notifications/Notifications.conf.meta new file mode 100644 index 000000000..204ebf460 --- /dev/null +++ b/addons/medical_defibrillation/Configs/Notifications/Notifications.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{7134157CA6B1FA8E}Configs/Notifications/Notifications.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Configs/Systems/ChimeraSystemsConfig.conf b/addons/medical_defibrillation/Configs/Systems/ChimeraSystemsConfig.conf new file mode 100644 index 000000000..d0ff9ffd1 --- /dev/null +++ b/addons/medical_defibrillation/Configs/Systems/ChimeraSystemsConfig.conf @@ -0,0 +1,11 @@ +SystemSettings : "{45C53F06BA17238D}configs/Systems/SystemsConfig.conf" { + Systems { + ACE_Medical_Defibrillation_DefibStatesSystem "{671C09EFF1C13600}" { + SystemLocation Server + SystemPoints 0x4 0x10 + m_pScheduler ACE_Medical_Defibrillation_DefibStates_JobScheduler "{671C09EFF4D8B5F9}" { + m_fObjectUpdateTimeoutMS 250 + } + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Configs/Systems/ChimeraSystemsConfig.conf.meta b/addons/medical_defibrillation/Configs/Systems/ChimeraSystemsConfig.conf.meta new file mode 100644 index 000000000..06c5eb99e --- /dev/null +++ b/addons/medical_defibrillation/Configs/Systems/ChimeraSystemsConfig.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{86E953538A28A98D}Configs/Systems/ChimeraSystemsConfig.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.cs_cz.conf b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.cs_cz.conf new file mode 100644 index 000000000..f1cb0ea66 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.cs_cz.conf @@ -0,0 +1,20 @@ +StringTableRuntime { + Ids { + "ACE-MedicalDefibrillation_Notification_PatientConnected" + "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + "ACE-MedicalDefibrillation_Notification_ShockDelivered" + "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + "ACE-MedicalDefibrillation_UserAction_DeliverShock" + "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Texts { + "Patient connected" + "Patient disconnected" + "Shock delivered" + "Unable to connect patient" + "Connect patient" + "Deliver shock" + "Disconnect patient" + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.cs_cz.conf.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.cs_cz.conf.meta new file mode 100644 index 000000000..0a773b4d3 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.cs_cz.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{2ED883009607422D}Language/ACE_Medical_Defibrillation_localization.cs_cz.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.de_de.conf b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.de_de.conf new file mode 100644 index 000000000..7773a661e --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.de_de.conf @@ -0,0 +1,20 @@ +StringTableRuntime { + Ids { + "ACE-MedicalDefibrillation_Notification_PatientConnected" + "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + "ACE-MedicalDefibrillation_Notification_ShockDelivered" + "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + "ACE-MedicalDefibrillation_UserAction_DeliverShock" + "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Texts { + "Patient connected" + "Patient disconnected" + "Shock delivered" + "Unable to connect patient" + "Verbinde Patient" + "Schock auslösen" + "Patient trennen" + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.de_de.conf.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.de_de.conf.meta new file mode 100644 index 000000000..a98104e0d --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.de_de.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{FBA6993385A4530D}Language/ACE_Medical_Defibrillation_localization.de_de.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.en_us.conf b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.en_us.conf new file mode 100644 index 000000000..f1cb0ea66 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.en_us.conf @@ -0,0 +1,20 @@ +StringTableRuntime { + Ids { + "ACE-MedicalDefibrillation_Notification_PatientConnected" + "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + "ACE-MedicalDefibrillation_Notification_ShockDelivered" + "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + "ACE-MedicalDefibrillation_UserAction_DeliverShock" + "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Texts { + "Patient connected" + "Patient disconnected" + "Shock delivered" + "Unable to connect patient" + "Connect patient" + "Deliver shock" + "Disconnect patient" + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.en_us.conf.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.en_us.conf.meta new file mode 100644 index 000000000..6b8173da1 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.en_us.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{A5561378EF57560C}Language/ACE_Medical_Defibrillation_localization.en_us.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.es_es.conf b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.es_es.conf new file mode 100644 index 000000000..f1cb0ea66 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.es_es.conf @@ -0,0 +1,20 @@ +StringTableRuntime { + Ids { + "ACE-MedicalDefibrillation_Notification_PatientConnected" + "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + "ACE-MedicalDefibrillation_Notification_ShockDelivered" + "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + "ACE-MedicalDefibrillation_UserAction_DeliverShock" + "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Texts { + "Patient connected" + "Patient disconnected" + "Shock delivered" + "Unable to connect patient" + "Connect patient" + "Deliver shock" + "Disconnect patient" + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.es_es.conf.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.es_es.conf.meta new file mode 100644 index 000000000..aeb53d1b4 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.es_es.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{601A5EF101553D13}Language/ACE_Medical_Defibrillation_localization.es_es.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.fr_fr.conf b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.fr_fr.conf new file mode 100644 index 000000000..f1cb0ea66 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.fr_fr.conf @@ -0,0 +1,20 @@ +StringTableRuntime { + Ids { + "ACE-MedicalDefibrillation_Notification_PatientConnected" + "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + "ACE-MedicalDefibrillation_Notification_ShockDelivered" + "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + "ACE-MedicalDefibrillation_UserAction_DeliverShock" + "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Texts { + "Patient connected" + "Patient disconnected" + "Shock delivered" + "Unable to connect patient" + "Connect patient" + "Deliver shock" + "Disconnect patient" + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.fr_fr.conf.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.fr_fr.conf.meta new file mode 100644 index 000000000..dbfa18c56 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.fr_fr.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{DBB2ABC6E7D6DE11}Language/ACE_Medical_Defibrillation_localization.fr_fr.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.it_it.conf b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.it_it.conf new file mode 100644 index 000000000..f1cb0ea66 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.it_it.conf @@ -0,0 +1,20 @@ +StringTableRuntime { + Ids { + "ACE-MedicalDefibrillation_Notification_PatientConnected" + "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + "ACE-MedicalDefibrillation_Notification_ShockDelivered" + "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + "ACE-MedicalDefibrillation_UserAction_DeliverShock" + "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Texts { + "Patient connected" + "Patient disconnected" + "Shock delivered" + "Unable to connect patient" + "Connect patient" + "Deliver shock" + "Disconnect patient" + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.it_it.conf.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.it_it.conf.meta new file mode 100644 index 000000000..06861be76 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.it_it.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{5BAE24F24AF45DE8}Language/ACE_Medical_Defibrillation_localization.it_it.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ja_jp.conf b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ja_jp.conf new file mode 100644 index 000000000..f1cb0ea66 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ja_jp.conf @@ -0,0 +1,20 @@ +StringTableRuntime { + Ids { + "ACE-MedicalDefibrillation_Notification_PatientConnected" + "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + "ACE-MedicalDefibrillation_Notification_ShockDelivered" + "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + "ACE-MedicalDefibrillation_UserAction_DeliverShock" + "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Texts { + "Patient connected" + "Patient disconnected" + "Shock delivered" + "Unable to connect patient" + "Connect patient" + "Deliver shock" + "Disconnect patient" + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ja_jp.conf.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ja_jp.conf.meta new file mode 100644 index 000000000..8c4ccd83f --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ja_jp.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{4BB5996074856D43}Language/ACE_Medical_Defibrillation_localization.ja_jp.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ko_kr.conf b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ko_kr.conf new file mode 100644 index 000000000..f1cb0ea66 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ko_kr.conf @@ -0,0 +1,20 @@ +StringTableRuntime { + Ids { + "ACE-MedicalDefibrillation_Notification_PatientConnected" + "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + "ACE-MedicalDefibrillation_Notification_ShockDelivered" + "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + "ACE-MedicalDefibrillation_UserAction_DeliverShock" + "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Texts { + "Patient connected" + "Patient disconnected" + "Shock delivered" + "Unable to connect patient" + "Connect patient" + "Deliver shock" + "Disconnect patient" + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ko_kr.conf.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ko_kr.conf.meta new file mode 100644 index 000000000..9d007d91d --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ko_kr.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{EB0BB1CCE7A86E7C}Language/ACE_Medical_Defibrillation_localization.ko_kr.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.pl_pl.conf b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.pl_pl.conf new file mode 100644 index 000000000..f1cb0ea66 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.pl_pl.conf @@ -0,0 +1,20 @@ +StringTableRuntime { + Ids { + "ACE-MedicalDefibrillation_Notification_PatientConnected" + "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + "ACE-MedicalDefibrillation_Notification_ShockDelivered" + "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + "ACE-MedicalDefibrillation_UserAction_DeliverShock" + "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Texts { + "Patient connected" + "Patient disconnected" + "Shock delivered" + "Unable to connect patient" + "Connect patient" + "Deliver shock" + "Disconnect patient" + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.pl_pl.conf.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.pl_pl.conf.meta new file mode 100644 index 000000000..e166323c6 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.pl_pl.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{B77A17365947F200}Language/ACE_Medical_Defibrillation_localization.pl_pl.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.pt_br.conf b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.pt_br.conf new file mode 100644 index 000000000..f1cb0ea66 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.pt_br.conf @@ -0,0 +1,20 @@ +StringTableRuntime { + Ids { + "ACE-MedicalDefibrillation_Notification_PatientConnected" + "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + "ACE-MedicalDefibrillation_Notification_ShockDelivered" + "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + "ACE-MedicalDefibrillation_UserAction_DeliverShock" + "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Texts { + "Patient connected" + "Patient disconnected" + "Shock delivered" + "Unable to connect patient" + "Connect patient" + "Deliver shock" + "Disconnect patient" + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.pt_br.conf.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.pt_br.conf.meta new file mode 100644 index 000000000..a2686c9b7 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.pt_br.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{620D8DFA62B938BA}Language/ACE_Medical_Defibrillation_localization.pt_br.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ru_ru.conf b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ru_ru.conf new file mode 100644 index 000000000..f1cb0ea66 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ru_ru.conf @@ -0,0 +1,20 @@ +StringTableRuntime { + Ids { + "ACE-MedicalDefibrillation_Notification_PatientConnected" + "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + "ACE-MedicalDefibrillation_Notification_ShockDelivered" + "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + "ACE-MedicalDefibrillation_UserAction_DeliverShock" + "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Texts { + "Patient connected" + "Patient disconnected" + "Shock delivered" + "Unable to connect patient" + "Connect patient" + "Deliver shock" + "Disconnect patient" + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ru_ru.conf.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ru_ru.conf.meta new file mode 100644 index 000000000..9e1cf96f0 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.ru_ru.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{374C9952FFC05DCC}Language/ACE_Medical_Defibrillation_localization.ru_ru.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.st b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.st new file mode 100644 index 000000000..dc617535a --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.st @@ -0,0 +1,58 @@ +StringTable { + ItemClassName "CustomStringTableItem" + Items { + CustomStringTableItem "{6857508BC1AB85AD}" { + Id "ACE-MedicalDefibrillation_Notification_PatientConnected" + Target_en_us "Patient connected" + Modified 1750561758 + Author "Hypoxic" + LastChanged "Hypoxic" + } + CustomStringTableItem "{6857508BCBFAFE72}" { + Id "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + Target_en_us "Patient disconnected" + Modified 1750561769 + Author "Hypoxic" + LastChanged "Hypoxic" + } + CustomStringTableItem "{6857508B9214D20B}" { + Id "ACE-MedicalDefibrillation_Notification_ShockDelivered" + Target_en_us "Shock delivered" + Modified 1750561843 + Author "Hypoxic" + LastChanged "Hypoxic" + } + CustomStringTableItem "{6857508BE557A595}" { + Id "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + Target_en_us "Unable to connect patient" + Modified 1750561820 + Author "Hypoxic" + LastChanged "Hypoxic" + } + CustomStringTableItem "{68440A1FE780317F}" { + Id "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + Target_en_us "Connect patient" + Target_de_de "Verbinde Patient" + Status DEVELOPMENT_PENDING + Modified 1749719023 + Author "Kexanone" + LastChanged "Kexanone" + } + CustomStringTableItem "{684A8C40BA16FF1E}" { + Id "ACE-MedicalDefibrillation_UserAction_DeliverShock" + Target_en_us "Deliver shock" + Target_de_de "Schock auslösen" + Modified 1749719135 + Author "Kexanone" + LastChanged "Kexanone" + } + CustomStringTableItem "{68440A1F845D38EF}" { + Id "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + Target_en_us "Disconnect patient" + Target_de_de "Patient trennen" + Modified 1749719041 + Author "Kexanone" + LastChanged "Kexanone" + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.st.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.st.meta new file mode 100644 index 000000000..f016026cf --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.st.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{DE82B2882F49E394}Language/ACE_Medical_Defibrillation_localization.st" + Configurations { + StringTableResourceClass PC { + } + StringTableResourceClass XBOX_ONE : PC { + } + StringTableResourceClass XBOX_SERIES : PC { + } + StringTableResourceClass PS4 : PC { + } + StringTableResourceClass PS5 : PC { + } + StringTableResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.uk_ua.conf b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.uk_ua.conf new file mode 100644 index 000000000..f1cb0ea66 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.uk_ua.conf @@ -0,0 +1,20 @@ +StringTableRuntime { + Ids { + "ACE-MedicalDefibrillation_Notification_PatientConnected" + "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + "ACE-MedicalDefibrillation_Notification_ShockDelivered" + "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + "ACE-MedicalDefibrillation_UserAction_DeliverShock" + "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Texts { + "Patient connected" + "Patient disconnected" + "Shock delivered" + "Unable to connect patient" + "Connect patient" + "Deliver shock" + "Disconnect patient" + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.uk_ua.conf.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.uk_ua.conf.meta new file mode 100644 index 000000000..315bdcef8 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.uk_ua.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{BD14CCA493EEE399}Language/ACE_Medical_Defibrillation_localization.uk_ua.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.zh_cn.conf b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.zh_cn.conf new file mode 100644 index 000000000..f1cb0ea66 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.zh_cn.conf @@ -0,0 +1,20 @@ +StringTableRuntime { + Ids { + "ACE-MedicalDefibrillation_Notification_PatientConnected" + "ACE-MedicalDefibrillation_Notification_PatientDisconnected" + "ACE-MedicalDefibrillation_Notification_ShockDelivered" + "ACE-MedicalDefibrillation_Notification_UnableToConnectPatient" + "ACE-MedicalDefibrillation_UserAction_ConnectPatient" + "ACE-MedicalDefibrillation_UserAction_DeliverShock" + "ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Texts { + "Patient connected" + "Patient disconnected" + "Shock delivered" + "Unable to connect patient" + "Connect patient" + "Deliver shock" + "Disconnect patient" + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.zh_cn.conf.meta b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.zh_cn.conf.meta new file mode 100644 index 000000000..d346717d9 --- /dev/null +++ b/addons/medical_defibrillation/Language/ACE_Medical_Defibrillation_localization.zh_cn.conf.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{67A4A299AA4E3384}Language/ACE_Medical_Defibrillation_localization.zh_cn.conf" + Configurations { + CONFResourceClass PC { + } + CONFResourceClass XBOX_ONE : PC { + } + CONFResourceClass XBOX_SERIES : PC { + } + CONFResourceClass PS4 : PC { + } + CONFResourceClass PS5 : PC { + } + CONFResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Prefabs/Characters/Core/Character_Base.et b/addons/medical_defibrillation/Prefabs/Characters/Core/Character_Base.et new file mode 100644 index 000000000..43e67b2e4 --- /dev/null +++ b/addons/medical_defibrillation/Prefabs/Characters/Core/Character_Base.et @@ -0,0 +1,23 @@ +SCR_ChimeraCharacter { + ID "520EC961A090B1EE" + components { + CharacterSoundComponent "{520EA1D2F659CF84}" { + Filenames + { + "{561CB411D5D8E866}Sounds/ACE_Medical_Defibrillation_DefibSounds.acp" + } + } + ActionsManagerComponent "{520EA1D2F659CE02}" { + additionalActions { + ACE_Medical_Defibrillation_UserActions_DefibConnect "{671C09FD5BB621C8}" { + ParentContextList { + "Chest" + } + UIInfo UIInfo "{671C09FD5D000AFC}" { + Name "#ACE-MedicalDefibrillation_UserAction_ConnectPatient" + } + Duration 1 + } + } + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Prefabs/Characters/Core/Character_Base.et.meta b/addons/medical_defibrillation/Prefabs/Characters/Core/Character_Base.et.meta new file mode 100644 index 000000000..e053c97d2 --- /dev/null +++ b/addons/medical_defibrillation/Prefabs/Characters/Core/Character_Base.et.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{37578B1666981FCE}Prefabs/Characters/Core/Character_Base.et" + Configurations { + EntityTemplateResourceClass PC { + } + EntityTemplateResourceClass XBOX_ONE : PC { + } + EntityTemplateResourceClass XBOX_SERIES : PC { + } + EntityTemplateResourceClass PS4 : PC { + } + EntityTemplateResourceClass HEADLESS : PC { + } + EntityTemplateResourceClass PS5 : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Prefabs/Items/Defibrillator/ACE_DefibrillatorBase.et b/addons/medical_defibrillation/Prefabs/Items/Defibrillator/ACE_DefibrillatorBase.et new file mode 100644 index 000000000..9ea12eefe --- /dev/null +++ b/addons/medical_defibrillation/Prefabs/Items/Defibrillator/ACE_DefibrillatorBase.et @@ -0,0 +1,72 @@ +GenericEntity : "{C95E11C60810F432}Prefabs/Items/Core/Item_Base.et" { + ID "508AB2013EEE1E00" + components { + SignalsManagerComponent "{655C16EC9DB5136B}" { + } + ACE_Medical_Defibrillation_DefibSoundComponent "{671C09EE44D37889}" { + Filenames { + "{561CB411D5D8E866}Sounds/ACE_Medical_Defibrillation_DefibSounds.acp" + } + } + SoundComponent "{655C16ECB615B046}" { + Filenames { + "{561CB411D5D8E866}Sounds/ACE_Medical_Defibrillation_DefibSounds.acp" "{0340D00A7674D634}Sounds/ACE_MedicalDefibrillation_DefibrillatorVoicePrompts.acp" + } + } + ACE_Medical_Defibrillation_DefibComponent "{671C09EFE7878C09}" { + } + InventoryItemComponent "{5222EB4D0C73006B}" { + Attributes SCR_ItemAttributeCollection "{64FB47C8A824B9EC}" { + ItemDisplayName UIInfo "{64FB47C8A9F27277}" { + Name "#ACE_MedicalDefibrillation-Defibrillator_DisplayName" + } + ItemPhysAttributes ItemPhysicalAttributes "{64FB47C8B694DDEE}" { + Weight 3.2 + } + m_Size SLOT_1x1 + m_eQuickSlotSize SLOT_1x1 + m_SlotType SLOT_GADGETS_STORAGE + m_bStackable 0 + } + } + MeshObject "{64FB47CE0046FB12}" { + Object "{DA5DDF2E4860BBF6}test/Prefabs/Items/Medical Defibrillation/ACE_DefibrillatorAED.xob" + } + RigidBody "{68483DE61388D41E}" { + Mass 3.2 + ModelGeometry 1 + } + ActionsManagerComponent "{508AB5952B584B2E}" { + additionalActions { + ACE_Medical_Defibrillation_UserAction_DefibPickup "{51EC842E3A187379}" { + Duration 1 + "Sort Priority" 10 + } + ACE_Medical_Defibrillation_UserAction_DefibDisconnect "{671C09FF5A7200A1}" { + ParentContextList { + "default" + } + UIInfo UIInfo "{671C09FF5F06B782}" { + Name "#ACE-MedicalDefibrillation_UserAction_DisconnectPatient" + } + Duration 1 + "Sort Priority" 1 + } + ACE_Medical_Defibrillation_UserActions_DefibShock "{673856DECBEEA89B}" { + ParentContextList { + "default" + } + UIInfo UIInfo "{673856DECD3BB5B7}" { + Name "#ACE-MedicalDefibrillation_UserAction_DeliverShock" + } + Duration 1 + } + } + } + GadgetAnimationComponent "{64FC042FA738F687}" { + AnimGraph "{8462461570E623A5}Assets/Weapons/Explosives/workspace/M34.agr" + AnimInstance "{67A3E465A8D20576}Assets/Weapons/Explosives/workspace/M34_weapon.asi" + } + } + coords 0 0 0 +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Prefabs/Items/Defibrillator/ACE_DefibrillatorBase.et.meta b/addons/medical_defibrillation/Prefabs/Items/Defibrillator/ACE_DefibrillatorBase.et.meta new file mode 100644 index 000000000..a923b282a --- /dev/null +++ b/addons/medical_defibrillation/Prefabs/Items/Defibrillator/ACE_DefibrillatorBase.et.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{039D069A46C6501E}Prefabs/Items/Medical Defibrillation/ACE_DefibrillatorBase.et" + Configurations { + EntityTemplateResourceClass PC { + } + EntityTemplateResourceClass XBOX_ONE : PC { + } + EntityTemplateResourceClass XBOX_SERIES : PC { + } + EntityTemplateResourceClass PS4 : PC { + } + EntityTemplateResourceClass PS5 : PC { + } + EntityTemplateResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Prefabs/Items/Defibrillator/ZappyBoy1000/ACE_DefibrillatorAED.et b/addons/medical_defibrillation/Prefabs/Items/Defibrillator/ZappyBoy1000/ACE_DefibrillatorAED.et new file mode 100644 index 000000000..a44fd3a5d --- /dev/null +++ b/addons/medical_defibrillation/Prefabs/Items/Defibrillator/ZappyBoy1000/ACE_DefibrillatorAED.et @@ -0,0 +1,27 @@ +GenericEntity : "{039D069A46C6501E}Prefabs/Items/Defibrillator/ACE_DefibrillatorBase.et" { + ID "508AB2013EEE1E00" + components { + InventoryItemComponent "{5222EB4D0C73006B}" { + Attributes SCR_ItemAttributeCollection "{64FB47C8A824B9EC}" { + ItemDisplayName UIInfo "{64FB47C8A9F27277}" { + Name "#ACE_MedicalDefibrillation-AED_DisplayName" + } + ItemPhysAttributes ItemPhysicalAttributes "{64FB47C8B694DDEE}" { + SizeSetupStrategy Manual + ItemDimensions 15 15 15 + ItemVolume 3000 + } + CustomAttributes { + PreviewRenderAttributes "{656F72413B0C40FA}" { + CameraPreset Top + CameraOrbitAngles -30 15 155 + CameraDistanceToItem 0.3 + } + } + } + } + MeshObject "{64FB47CE0046FB12}" { + Object "{05C1F40455DAF92F}Assets/Items/Equipement/Defibrillator/ZappyBoy1000/ACE_Medical_ZappyBoy1000.xob" + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Prefabs/Items/Defibrillator/ZappyBoy1000/ACE_DefibrillatorAED.et.meta b/addons/medical_defibrillation/Prefabs/Items/Defibrillator/ZappyBoy1000/ACE_DefibrillatorAED.et.meta new file mode 100644 index 000000000..6c072b630 --- /dev/null +++ b/addons/medical_defibrillation/Prefabs/Items/Defibrillator/ZappyBoy1000/ACE_DefibrillatorAED.et.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{60DAD76C48BD7054}Prefabs/Items/Defibrillator/ZappyBoy1000/ACE_DefibrillatorAED.et" + Configurations { + EntityTemplateResourceClass PC { + } + EntityTemplateResourceClass XBOX_ONE : PC { + } + EntityTemplateResourceClass XBOX_SERIES : PC { + } + EntityTemplateResourceClass PS4 : PC { + } + EntityTemplateResourceClass PS5 : PC { + } + EntityTemplateResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_DefibSounds.acp b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_DefibSounds.acp new file mode 100644 index 000000000..acfb3c462 --- /dev/null +++ b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_DefibSounds.acp @@ -0,0 +1,1214 @@ +AudioClass { + sounds { + SoundClass "3081" { + id 3081 + name "ACE_Medical_Defibrillation_SoundCharging" + version 5 + tl 197.823 -290.924 + ins { + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "5138:65" { + id 5138 + port 65 + } + } + } + } + volume_dB 3 + } + SoundClass "14345" { + id 14345 + name "ACE_Medical_Defibrillation_SoundThump" + version 5 + tl 209.57 530.426 + ins { + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "16402:65" { + id 16402 + port 65 + } + } + } + } + } + SoundClass "25609" { + id 25609 + name "ACE_Medical_Defibrillation_SoundShockAdvised" + version 5 + tl 1282.127 -287.407 + ins { + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "21522:65" { + id 21522 + port 65 + } + } + } + } + volume_dB -9 + } + SoundClass "30729" { + id 30729 + name "ACE_Medical_Defibrillation_SoundNoShockAdvised" + version 5 + tl 1294.471 109.343 + ins { + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "31762:65" { + id 31762 + port 65 + } + } + } + } + volume_dB -9 + } + SoundClass "37897" { + id 37897 + name "ACE_Medical_Defibrillation_SoundConnected" + version 5 + tl 1282.659 500.987 + ins { + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "34834:65" { + id 34834 + port 65 + } + } + } + } + volume_dB -9 + } + SoundClass "39945" { + id 39945 + name "ACE_Medical_Defibrillation_SoundDisconnected" + version 5 + tl 1297.715 890.331 + ins { + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "44050:65" { + id 44050 + port 65 + } + } + } + } + volume_dB -9 + } + SoundClass "48137" { + id 48137 + name "ACE_Medical_Defibrillation_SoundAnalysing" + version 5 + tl 1298.278 1275.64 + ins { + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "50194:65" { + id 50194 + port 65 + } + } + } + } + volume_dB -9 + } + SoundClass "56329" { + id 56329 + name "ACE_Medical_Defibrillation_SoundCPRBeep" + version 5 + tl 1314.584 1675.377 + ins { + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "55314:65" { + id 55314 + port 65 + } + } + } + } + } + SoundClass "60425" { + id 60425 + name "ACE_Medical_Defibrillation_SoundCPRReminder" + version 5 + tl 228.406 940.008 + ins { + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "57362:65" { + id 57362 + port 65 + } + } + } + } + volume_dB -9 + } + SoundClass "63497" { + id 63497 + name "ACE_Medical_Defibrillation_SoundDoNotTouchPatient" + version 5 + tl 256.325 1415.549 + ins { + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "68626:65" { + id 68626 + port 65 + } + } + } + } + volume_dB -9 + } + SoundClass "70665" { + id 70665 + name "ACE_Medical_Defibrillation_SoundChargedBeepLow" + version 5 + tl 487.455 2097.844 + ins { + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "71698:65" { + id 71698 + port 65 + } + } + } + } + } + SoundClass "76809" { + id 76809 + name "ACE_Medical_Defibrillation_SoundChargedBeepHigh" + version 5 + tl 1316.418 2131.288 + ins { + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "80914:65" { + id 80914 + port 65 + } + } + } + } + } + } + generators { + GeneratorClass "51205" { + id 51205 + name "Generator 50" + version 6 + tl 727.523 1677.177 + volume 0.251 + volume_dB -12 + time 100 + } + GeneratorClass "69637" { + id 69637 + name "Generator 50" + version 6 + tl -99.235 2098.865 + function Square + volume 0.089 + volume_dB -21 + time 250 + } + GeneratorClass "79877" { + id 79877 + name "Generator 50" + version 6 + tl 730.878 2132.309 + function Square + volume 0.089 + volume_dB -21 + time 200 + frequency 880 + } + } + shaders { + ShaderClass "5138" { + id 5138 + name "Shader 2" + version 5 + tl -27.063 -292.459 + ins { + ConnectionsClass "con:0" { + id 0 + links { + ConnectionClass "6172:65" { + id 6172 + port 65 + } + } + } + ConnectionsClass "con:1" { + id 1 + links { + ConnectionClass "2067:65" { + id 2067 + port 65 + } + } + } + ConnectionsClass "con:2" { + id 2 + links { + ConnectionClass "4117:65" { + id 4117 + port 65 + } + } + } + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "1028:65" { + id 1028 + port 65 + } + } + } + } + pi { + 7 0 + } + } + ShaderClass "16402" { + id 16402 + name "Shader 2" + version 5 + tl -24.316 529.57 + ins { + ConnectionsClass "con:0" { + id 0 + links { + ConnectionClass "15388:65" { + id 15388 + port 65 + } + } + } + ConnectionsClass "con:1" { + id 1 + links { + ConnectionClass "18451:65" { + id 18451 + port 65 + } + } + } + ConnectionsClass "con:2" { + id 2 + links { + ConnectionClass "13333:65" { + id 13333 + port 65 + } + } + } + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "17412:65" { + id 17412 + port 65 + } + } + } + } + pi { + 7 0 + } + } + ShaderClass "21522" { + id 21522 + name "Shader 2" + version 5 + tl 1036.142 -292.697 + ins { + ConnectionsClass "con:0" { + id 0 + links { + ConnectionClass "24604:65" { + id 24604 + port 65 + } + } + } + ConnectionsClass "con:1" { + id 1 + links { + ConnectionClass "22547:65" { + id 22547 + port 65 + } + } + } + ConnectionsClass "con:2" { + id 2 + links { + ConnectionClass "23573:65" { + id 23573 + port 65 + } + } + } + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "20484:65" { + id 20484 + port 65 + } + } + } + } + pi { + 7 0 + } + } + ShaderClass "31762" { + id 31762 + name "Shader 2" + version 5 + tl 1048.486 104.053 + ins { + ConnectionsClass "con:0" { + id 0 + links { + ConnectionClass "28700:65" { + id 28700 + port 65 + } + } + } + ConnectionsClass "con:1" { + id 1 + links { + ConnectionClass "26643:65" { + id 26643 + port 65 + } + } + } + ConnectionsClass "con:2" { + id 2 + links { + ConnectionClass "29717:65" { + id 29717 + port 65 + } + } + } + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "27652:65" { + id 27652 + port 65 + } + } + } + } + pi { + 7 0 + } + } + ShaderClass "34834" { + id 34834 + name "Shader 2" + version 5 + tl 1036.674 495.697 + ins { + ConnectionsClass "con:0" { + id 0 + links { + ConnectionClass "36892:65" { + id 36892 + port 65 + } + } + } + ConnectionsClass "con:1" { + id 1 + links { + ConnectionClass "35859:65" { + id 35859 + port 65 + } + } + } + ConnectionsClass "con:2" { + id 2 + links { + ConnectionClass "33813:65" { + id 33813 + port 65 + } + } + } + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "32772:65" { + id 32772 + port 65 + } + } + } + } + pi { + 7 0 + } + } + ShaderClass "44050" { + id 44050 + name "Shader 2" + version 5 + tl 1050.209 885.041 + ins { + ConnectionsClass "con:0" { + id 0 + links { + ConnectionClass "38940:65" { + id 38940 + port 65 + } + } + } + ConnectionsClass "con:1" { + id 1 + links { + ConnectionClass "42003:65" { + id 42003 + port 65 + } + } + } + ConnectionsClass "con:2" { + id 2 + links { + ConnectionClass "40981:65" { + id 40981 + port 65 + } + } + } + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "43012:65" { + id 43012 + port 65 + } + } + } + } + pi { + 7 0 + } + } + ShaderClass "50194" { + id 50194 + name "Shader 2" + version 5 + tl 1052.293 1270.35 + ins { + ConnectionsClass "con:0" { + id 0 + links { + ConnectionClass "45084:65" { + id 45084 + port 65 + } + } + } + ConnectionsClass "con:1" { + id 1 + links { + ConnectionClass "49171:65" { + id 49171 + port 65 + } + } + } + ConnectionsClass "con:2" { + id 2 + links { + ConnectionClass "46101:65" { + id 46101 + port 65 + } + } + } + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "47108:65" { + id 47108 + port 65 + } + } + } + } + pi { + 7 0 + } + } + ShaderClass "55314" { + id 55314 + name "Shader 2" + version 5 + tl 1028.753 1678.393 + ins { + ConnectionsClass "con:0" { + id 0 + links { + ConnectionClass "53276:65" { + id 53276 + port 65 + } + } + } + ConnectionsClass "con:1" { + id 1 + links { + ConnectionClass "52243:65" { + id 52243 + port 65 + } + } + } + ConnectionsClass "con:2" { + id 2 + links { + ConnectionClass "54293:65" { + id 54293 + port 65 + } + } + } + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "51205:65" { + id 51205 + port 65 + } + } + } + } + pi { + 7 0 + } + } + ShaderClass "57362" { + id 57362 + name "Shader 2" + version 5 + tl -5.48 939.152 + ins { + ConnectionsClass "con:0" { + id 0 + links { + ConnectionClass "58396:65" { + id 58396 + port 65 + } + } + } + ConnectionsClass "con:1" { + id 1 + links { + ConnectionClass "61459:65" { + id 61459 + port 65 + } + } + } + ConnectionsClass "con:2" { + id 2 + links { + ConnectionClass "59413:65" { + id 59413 + port 65 + } + } + } + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "62468:65" { + id 62468 + port 65 + } + } + } + } + pi { + 7 0 + } + } + ShaderClass "68626" { + id 68626 + name "Shader 2" + version 5 + tl 23.589 1414.693 + ins { + ConnectionsClass "con:0" { + id 0 + links { + ConnectionClass "66588:65" { + id 66588 + port 65 + } + } + } + ConnectionsClass "con:1" { + id 1 + links { + ConnectionClass "64531:65" { + id 64531 + port 65 + } + } + } + ConnectionsClass "con:2" { + id 2 + links { + ConnectionClass "65557:65" { + id 65557 + port 65 + } + } + } + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "67588:65" { + id 67588 + port 65 + } + } + } + } + pi { + 7 0 + } + } + ShaderClass "71698" { + id 71698 + name "Shader 2" + version 5 + tl 201.995 2100.081 + ins { + ConnectionsClass "con:0" { + id 0 + links { + ConnectionClass "73756:65" { + id 73756 + port 65 + } + } + } + ConnectionsClass "con:1" { + id 1 + links { + ConnectionClass "72723:65" { + id 72723 + port 65 + } + } + } + ConnectionsClass "con:2" { + id 2 + links { + ConnectionClass "74773:65" { + id 74773 + port 65 + } + } + } + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "69637:65" { + id 69637 + port 65 + } + } + } + } + pi { + 7 0 + } + } + ShaderClass "80914" { + id 80914 + name "Shader 2" + version 5 + tl 1032.108 2133.525 + ins { + ConnectionsClass "con:0" { + id 0 + links { + ConnectionClass "77852:65" { + id 77852 + port 65 + } + } + } + ConnectionsClass "con:1" { + id 1 + links { + ConnectionClass "75795:65" { + id 75795 + port 65 + } + } + } + ConnectionsClass "con:2" { + id 2 + links { + ConnectionClass "78869:65" { + id 78869 + port 65 + } + } + } + ConnectionsClass "con:64" { + id 64 + links { + ConnectionClass "79877:65" { + id 79877 + port 65 + } + } + } + } + pi { + 7 0 + } + } + } + amplitudes { + AmplitudeClass "2067" { + id 2067 + name "Amplitude 4" + version 5 + tl -260.911 -115.214 + curve "1/r" + outerRange 50 + } + AmplitudeClass "18451" { + id 18451 + name "Amplitude 4" + version 5 + tl -258.163 706.813 + curve "1/r" + outerRange 50 + } + AmplitudeClass "22547" { + id 22547 + name "Amplitude 4" + version 5 + tl 724.771 -123.145 + curve "1/r" + outerRange 50 + } + AmplitudeClass "26643" { + id 26643 + name "Amplitude 4" + version 5 + tl 737.114 273.605 + curve "1/r" + outerRange 50 + } + AmplitudeClass "35859" { + id 35859 + name "Amplitude 4" + version 5 + tl 725.302 665.249 + curve "1/r" + outerRange 50 + } + AmplitudeClass "42003" { + id 42003 + name "Amplitude 4" + version 5 + tl 738.838 1054.593 + curve "1/r" + outerRange 50 + } + AmplitudeClass "49171" { + id 49171 + name "Amplitude 4" + version 5 + tl 740.922 1439.902 + curve "1/r" + outerRange 50 + } + AmplitudeClass "52243" { + id 52243 + name "Amplitude 4" + version 5 + tl 719.095 1859.004 + curve "1/r" + outerRange 50 + } + AmplitudeClass "61459" { + id 61459 + name "Amplitude 4" + version 5 + tl -239.327 1116.395 + curve "1/r" + outerRange 50 + } + AmplitudeClass "64531" { + id 64531 + name "Amplitude 4" + version 5 + tl -210.258 1591.936 + curve "1/r" + outerRange 50 + } + AmplitudeClass "72723" { + id 72723 + name "Amplitude 4" + version 5 + tl -107.663 2280.692 + curve "1/r" + outerRange 50 + } + AmplitudeClass "75795" { + id 75795 + name "Amplitude 4" + version 5 + tl 722.45 2314.136 + curve "1/r" + outerRange 50 + } + } + frequency { + FrequencyClass "4117" { + id 4117 + name "Frequency 5" + version 5 + tl -259.195 -35.742 + enableDistanceAtt 1 + } + FrequencyClass "13333" { + id 13333 + name "Frequency 5" + version 5 + tl -256.448 786.287 + enableDistanceAtt 1 + } + FrequencyClass "23573" { + id 23573 + name "Frequency 5" + version 5 + tl 726.487 -43.673 + enableDistanceAtt 1 + } + FrequencyClass "29717" { + id 29717 + name "Frequency 5" + version 5 + tl 738.83 353.077 + enableDistanceAtt 1 + } + FrequencyClass "33813" { + id 33813 + name "Frequency 5" + version 5 + tl 727.018 744.721 + enableDistanceAtt 1 + } + FrequencyClass "40981" { + id 40981 + name "Frequency 5" + version 5 + tl 740.554 1134.065 + enableDistanceAtt 1 + } + FrequencyClass "46101" { + id 46101 + name "Frequency 5" + version 5 + tl 742.638 1519.374 + enableDistanceAtt 1 + } + FrequencyClass "54293" { + id 54293 + name "Frequency 5" + version 5 + tl 722.324 1938.476 + enableDistanceAtt 1 + } + FrequencyClass "59413" { + id 59413 + name "Frequency 5" + version 5 + tl -237.612 1195.869 + enableDistanceAtt 1 + } + FrequencyClass "65557" { + id 65557 + name "Frequency 5" + version 5 + tl -208.543 1671.41 + enableDistanceAtt 1 + } + FrequencyClass "74773" { + id 74773 + name "Frequency 5" + version 5 + tl -104.434 2360.164 + enableDistanceAtt 1 + } + FrequencyClass "78869" { + id 78869 + name "Frequency 5" + version 5 + tl 725.679 2393.608 + enableDistanceAtt 1 + } + } + banks_local { + BankLocalClass "1028" { + id 1028 + name "Charging" + version 7 + tl -258.969 -295.401 + Samples { + AudioBankSampleClass "ACE_Medical_Defibrillation_SoundCharging.wav" { + Filename "{D0B7ABE445409970}Sounds/ACE_Medical_Defibrillation_SoundCharging.wav" + Probability 100 + Index 0 + SampleMetadata "" + } + } + } + BankLocalClass "17412" { + id 17412 + name "Shock Thump" + version 7 + tl -256.481 528.998 + Samples { + AudioBankSampleClass "ACE_Medical_Defibrillation_SoundShockThump.wav" { + Filename "{A9F7DB0FF2EE8CC5}Sounds/ACE_Medical_Defibrillation_SoundShockThump.wav" + Probability 100 + Index 0 + SampleMetadata "" + } + } + } + BankLocalClass "20484" { + id 20484 + name "Shock Advised" + version 7 + tl 731.967 -297.987 + Samples { + AudioBankSampleClass "ACE_Medical_Defibrillation_SoundShockAdvised.wav" { + Filename "{B947101D98B22D7C}Sounds/ACE_Medical_Defibrillation_SoundShockAdvised.wav" + Probability 100 + Index 0 + SampleMetadata "" + } + } + } + BankLocalClass "27652" { + id 27652 + name "No Shock Advised" + version 7 + tl 745.633 97.441 + Samples { + AudioBankSampleClass "ACE_Medical_Defibrillation_SoundNoShockAdvised.wav" { + Filename "{1FA0148AF1CCD1DD}Sounds/ACE_Medical_Defibrillation_SoundNoShockAdvised.wav" + Probability 100 + Index 0 + SampleMetadata "" + } + } + } + BankLocalClass "32772" { + id 32772 + name "Connected" + version 7 + tl 733.821 489.085 + Samples { + AudioBankSampleClass "ACE_Medical_Defibrillation_SoundConnected.wav" { + Filename "{B5C11AB72AC005FA}Sounds/ACE_Medical_Defibrillation_SoundConnected.wav" + Probability 100 + Index 0 + SampleMetadata "" + } + } + } + BankLocalClass "43012" { + id 43012 + name "Disconnected" + version 7 + tl 747.357 878.429 + Samples { + AudioBankSampleClass "ACE_Medical_Defibrillation_SoundDisconnected.wav" { + Filename "{738508CCEC10793E}Sounds/ACE_Medical_Defibrillation_SoundDisconnected.wav" + Probability 100 + Index 0 + SampleMetadata "" + } + } + } + BankLocalClass "47108" { + id 47108 + name "Analysing" + version 7 + tl 749.441 1263.738 + Samples { + AudioBankSampleClass "ACE_Medical_Defibrillation_SoundAnalysing.wav" { + Filename "{8E2A822D6B05EBBE}Sounds/ACE_Medical_Defibrillation_SoundAnalysing.wav" + Probability 100 + Index 0 + SampleMetadata "" + } + } + } + BankLocalClass "62468" { + id 62468 + name "Continue CPR" + version 7 + tl -237.645 938.58 + Samples { + AudioBankSampleClass "ACE_Medical_Defibrillation_SoundCPRReminder.wav" { + Filename "{701D6A628A906F72}Sounds/ACE_Medical_Defibrillation_SoundCPRReminder.wav" + Probability 100 + Index 0 + SampleMetadata "" + } + } + } + BankLocalClass "67588" { + id 67588 + name "Do Not Touch Patient" + version 7 + tl -208.576 1414.121 + Samples { + AudioBankSampleClass "ACE_Medical_Defibrillation_SoundDoNotTouchPatient.wav" { + Filename "{246C8E311FB8F7EF}Sounds/ACE_Medical_Defibrillation_SoundDoNotTouchPatient.wav" + Probability 100 + Index 0 + SampleMetadata "" + } + } + } + } + spatialities { + SpatialityClass "6172" { + id 6172 + name "Spatiality 3" + version 5 + tl -256.907 -203.437 + spatialFactor 1 + } + SpatialityClass "15388" { + id 15388 + name "Spatiality 3" + version 5 + tl -254.161 619.907 + spatialFactor 1 + } + SpatialityClass "24604" { + id 24604 + name "Spatiality 3" + version 5 + tl 728.775 -211.368 + spatialFactor 1 + } + SpatialityClass "28700" { + id 28700 + name "Spatiality 3" + version 5 + tl 741.118 185.382 + spatialFactor 1 + } + SpatialityClass "36892" { + id 36892 + name "Spatiality 3" + version 5 + tl 729.306 577.026 + spatialFactor 1 + } + SpatialityClass "38940" { + id 38940 + name "Spatiality 3" + version 5 + tl 742.842 966.37 + spatialFactor 1 + } + SpatialityClass "45084" { + id 45084 + name "Spatiality 3" + version 5 + tl 744.926 1351.679 + spatialFactor 1 + } + SpatialityClass "53276" { + id 53276 + name "Spatiality 3" + version 5 + tl 723.099 1770.781 + spatialFactor 1 + } + SpatialityClass "58396" { + id 58396 + name "Spatiality 3" + version 5 + tl -235.325 1029.489 + spatialFactor 1 + } + SpatialityClass "66588" { + id 66588 + name "Spatiality 3" + version 5 + tl -206.256 1505.03 + spatialFactor 1 + } + SpatialityClass "73756" { + id 73756 + name "Spatiality 3" + version 5 + tl -103.659 2192.469 + spatialFactor 1 + } + SpatialityClass "77852" { + id 77852 + name "Spatiality 3" + version 5 + tl 726.454 2225.913 + spatialFactor 1 + } + } + version 1 + listenerWindowModel "{DA5DDF2E4860BBF6}Prefabs/Items/Medical Defibrillation/ACE_DefibrillatorAED.xob" +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_DefibSounds.acp.meta b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_DefibSounds.acp.meta new file mode 100644 index 000000000..41566d86b --- /dev/null +++ b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_DefibSounds.acp.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{561CB411D5D8E866}Sounds/ACE_Medical_DefibrillatorSounds.acp" + Configurations { + AudioProjectResourceClass PC { + } + AudioProjectResourceClass XBOX_ONE : PC { + } + AudioProjectResourceClass XBOX_SERIES : PC { + } + AudioProjectResourceClass PS4 : PC { + } + AudioProjectResourceClass PS5 : PC { + } + AudioProjectResourceClass HEADLESS : PC { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundAnalysing.wav b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundAnalysing.wav new file mode 100644 index 000000000..1f03c5505 Binary files /dev/null and b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundAnalysing.wav differ diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundAnalysing.wav.meta b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundAnalysing.wav.meta new file mode 100644 index 000000000..7b6c4cd5c --- /dev/null +++ b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundAnalysing.wav.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{8E2A822D6B05EBBE}Sounds/AEDAnalysing.wav" + Configurations { + WAVResourceClass PC : "{F72B05D02F3F135E}Configs/System/ResourceTypes/PC/Sound.conf" { + } + WAVResourceClass XBOX_ONE : "{A0776163143143AC}Configs/System/ResourceTypes/XBOX_ONE/Sound.conf" { + } + WAVResourceClass XBOX_SERIES : "{382981CA1FC1C8DB}Configs/System/ResourceTypes/XBOX_SERIES/Sound.conf" { + } + WAVResourceClass PS4 : "{89EB939911B4C093}Configs/System/ResourceTypes/PS4/Sound.conf" { + } + WAVResourceClass PS5 : "{A584A3B556D4A981}configs/ResourceTypes/PS5/Sound.conf" { + } + WAVResourceClass HEADLESS : "{D63592CA950AF3A8}Configs/System/ResourceTypes/HEADLESS/Sound.conf" { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundCPRReminder.wav b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundCPRReminder.wav new file mode 100644 index 000000000..08a696101 Binary files /dev/null and b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundCPRReminder.wav differ diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundCPRReminder.wav.meta b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundCPRReminder.wav.meta new file mode 100644 index 000000000..49280cd5e --- /dev/null +++ b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundCPRReminder.wav.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{701D6A628A906F72}Sounds/ACE_Medical_Defibrillation_SoundCPRReminder.wav" + Configurations { + WAVResourceClass PC : "{F72B05D02F3F135E}Configs/System/ResourceTypes/PC/Sound.conf" { + } + WAVResourceClass XBOX_ONE : "{A0776163143143AC}Configs/System/ResourceTypes/XBOX_ONE/Sound.conf" { + } + WAVResourceClass XBOX_SERIES : "{382981CA1FC1C8DB}Configs/System/ResourceTypes/XBOX_SERIES/Sound.conf" { + } + WAVResourceClass PS4 : "{89EB939911B4C093}Configs/System/ResourceTypes/PS4/Sound.conf" { + } + WAVResourceClass PS5 : "{A584A3B556D4A981}Configs/System/ResourceTypes/PS5/Sound.conf" { + } + WAVResourceClass HEADLESS : "{D63592CA950AF3A8}Configs/System/ResourceTypes/HEADLESS/Sound.conf" { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundCharging.wav b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundCharging.wav new file mode 100644 index 000000000..64b6cde59 Binary files /dev/null and b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundCharging.wav differ diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundCharging.wav.meta b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundCharging.wav.meta new file mode 100644 index 000000000..48b0534cf --- /dev/null +++ b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundCharging.wav.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{D0B7ABE445409970}Sounds/DefibCharge.wav" + Configurations { + WAVResourceClass PC : "{F72B05D02F3F135E}Configs/System/ResourceTypes/PC/Sound.conf" { + } + WAVResourceClass XBOX_ONE : "{A0776163143143AC}Configs/System/ResourceTypes/XBOX_ONE/Sound.conf" { + } + WAVResourceClass XBOX_SERIES : "{382981CA1FC1C8DB}Configs/System/ResourceTypes/XBOX_SERIES/Sound.conf" { + } + WAVResourceClass PS4 : "{89EB939911B4C093}Configs/System/ResourceTypes/PS4/Sound.conf" { + } + WAVResourceClass PS5 : "{A584A3B556D4A981}configs/ResourceTypes/PS5/Sound.conf" { + } + WAVResourceClass HEADLESS : "{D63592CA950AF3A8}Configs/System/ResourceTypes/HEADLESS/Sound.conf" { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundConnected.wav b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundConnected.wav new file mode 100644 index 000000000..f318d0561 Binary files /dev/null and b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundConnected.wav differ diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundConnected.wav.meta b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundConnected.wav.meta new file mode 100644 index 000000000..23bb6b1ae --- /dev/null +++ b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundConnected.wav.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{B5C11AB72AC005FA}Sounds/AEDConnected.wav" + Configurations { + WAVResourceClass PC : "{F72B05D02F3F135E}Configs/System/ResourceTypes/PC/Sound.conf" { + } + WAVResourceClass XBOX_ONE : "{A0776163143143AC}Configs/System/ResourceTypes/XBOX_ONE/Sound.conf" { + } + WAVResourceClass XBOX_SERIES : "{382981CA1FC1C8DB}Configs/System/ResourceTypes/XBOX_SERIES/Sound.conf" { + } + WAVResourceClass PS4 : "{89EB939911B4C093}Configs/System/ResourceTypes/PS4/Sound.conf" { + } + WAVResourceClass PS5 : "{A584A3B556D4A981}configs/ResourceTypes/PS5/Sound.conf" { + } + WAVResourceClass HEADLESS : "{D63592CA950AF3A8}Configs/System/ResourceTypes/HEADLESS/Sound.conf" { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundDisconnected.wav b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundDisconnected.wav new file mode 100644 index 000000000..35753ed23 Binary files /dev/null and b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundDisconnected.wav differ diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundDisconnected.wav.meta b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundDisconnected.wav.meta new file mode 100644 index 000000000..fc1b79e58 --- /dev/null +++ b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundDisconnected.wav.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{738508CCEC10793E}Sounds/AEDDisconnected.wav" + Configurations { + WAVResourceClass PC : "{F72B05D02F3F135E}Configs/System/ResourceTypes/PC/Sound.conf" { + } + WAVResourceClass XBOX_ONE : "{A0776163143143AC}Configs/System/ResourceTypes/XBOX_ONE/Sound.conf" { + } + WAVResourceClass XBOX_SERIES : "{382981CA1FC1C8DB}Configs/System/ResourceTypes/XBOX_SERIES/Sound.conf" { + } + WAVResourceClass PS4 : "{89EB939911B4C093}Configs/System/ResourceTypes/PS4/Sound.conf" { + } + WAVResourceClass PS5 : "{A584A3B556D4A981}configs/ResourceTypes/PS5/Sound.conf" { + } + WAVResourceClass HEADLESS : "{D63592CA950AF3A8}Configs/System/ResourceTypes/HEADLESS/Sound.conf" { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundDoNotTouchPatient.wav b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundDoNotTouchPatient.wav new file mode 100644 index 000000000..d2ce6a2cb Binary files /dev/null and b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundDoNotTouchPatient.wav differ diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundDoNotTouchPatient.wav.meta b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundDoNotTouchPatient.wav.meta new file mode 100644 index 000000000..867b6cd60 --- /dev/null +++ b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundDoNotTouchPatient.wav.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{246C8E311FB8F7EF}Sounds/ACE_Medical_Defibrillation_SoundDoNotTouchPatient.wav" + Configurations { + WAVResourceClass PC : "{F72B05D02F3F135E}Configs/System/ResourceTypes/PC/Sound.conf" { + } + WAVResourceClass XBOX_ONE : "{A0776163143143AC}Configs/System/ResourceTypes/XBOX_ONE/Sound.conf" { + } + WAVResourceClass XBOX_SERIES : "{382981CA1FC1C8DB}Configs/System/ResourceTypes/XBOX_SERIES/Sound.conf" { + } + WAVResourceClass PS4 : "{89EB939911B4C093}Configs/System/ResourceTypes/PS4/Sound.conf" { + } + WAVResourceClass PS5 : "{A584A3B556D4A981}Configs/System/ResourceTypes/PS5/Sound.conf" { + } + WAVResourceClass HEADLESS : "{D63592CA950AF3A8}Configs/System/ResourceTypes/HEADLESS/Sound.conf" { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundNoShockAdvised.wav b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundNoShockAdvised.wav new file mode 100644 index 000000000..d8a065c4c Binary files /dev/null and b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundNoShockAdvised.wav differ diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundNoShockAdvised.wav.meta b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundNoShockAdvised.wav.meta new file mode 100644 index 000000000..6b727cf13 --- /dev/null +++ b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundNoShockAdvised.wav.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{1FA0148AF1CCD1DD}Sounds/AEDNoShockAdvised.wav" + Configurations { + WAVResourceClass PC : "{F72B05D02F3F135E}Configs/System/ResourceTypes/PC/Sound.conf" { + } + WAVResourceClass XBOX_ONE : "{A0776163143143AC}Configs/System/ResourceTypes/XBOX_ONE/Sound.conf" { + } + WAVResourceClass XBOX_SERIES : "{382981CA1FC1C8DB}Configs/System/ResourceTypes/XBOX_SERIES/Sound.conf" { + } + WAVResourceClass PS4 : "{89EB939911B4C093}Configs/System/ResourceTypes/PS4/Sound.conf" { + } + WAVResourceClass PS5 : "{A584A3B556D4A981}configs/ResourceTypes/PS5/Sound.conf" { + } + WAVResourceClass HEADLESS : "{D63592CA950AF3A8}Configs/System/ResourceTypes/HEADLESS/Sound.conf" { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundShockAdvised.wav b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundShockAdvised.wav new file mode 100644 index 000000000..c7a33fbd6 Binary files /dev/null and b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundShockAdvised.wav differ diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundShockAdvised.wav.meta b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundShockAdvised.wav.meta new file mode 100644 index 000000000..6243a965e --- /dev/null +++ b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundShockAdvised.wav.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{B947101D98B22D7C}Sounds/AEDShockAdvised.wav" + Configurations { + WAVResourceClass PC : "{F72B05D02F3F135E}Configs/System/ResourceTypes/PC/Sound.conf" { + } + WAVResourceClass XBOX_ONE : "{A0776163143143AC}Configs/System/ResourceTypes/XBOX_ONE/Sound.conf" { + } + WAVResourceClass XBOX_SERIES : "{382981CA1FC1C8DB}Configs/System/ResourceTypes/XBOX_SERIES/Sound.conf" { + } + WAVResourceClass PS4 : "{89EB939911B4C093}Configs/System/ResourceTypes/PS4/Sound.conf" { + } + WAVResourceClass PS5 : "{A584A3B556D4A981}configs/ResourceTypes/PS5/Sound.conf" { + } + WAVResourceClass HEADLESS : "{D63592CA950AF3A8}Configs/System/ResourceTypes/HEADLESS/Sound.conf" { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundShockThump.wav b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundShockThump.wav new file mode 100644 index 000000000..dc42b88d4 Binary files /dev/null and b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundShockThump.wav differ diff --git a/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundShockThump.wav.meta b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundShockThump.wav.meta new file mode 100644 index 000000000..61e524617 --- /dev/null +++ b/addons/medical_defibrillation/Sounds/ACE_Medical_Defibrillation_SoundShockThump.wav.meta @@ -0,0 +1,17 @@ +MetaFileClass { + Name "{A9F7DB0FF2EE8CC5}Sounds/AEDShockThump.wav" + Configurations { + WAVResourceClass PC : "{F72B05D02F3F135E}Configs/System/ResourceTypes/PC/Sound.conf" { + } + WAVResourceClass XBOX_ONE : "{A0776163143143AC}Configs/System/ResourceTypes/XBOX_ONE/Sound.conf" { + } + WAVResourceClass XBOX_SERIES : "{382981CA1FC1C8DB}Configs/System/ResourceTypes/XBOX_SERIES/Sound.conf" { + } + WAVResourceClass PS4 : "{89EB939911B4C093}Configs/System/ResourceTypes/PS4/Sound.conf" { + } + WAVResourceClass PS5 : "{A584A3B556D4A981}configs/ResourceTypes/PS5/Sound.conf" { + } + WAVResourceClass HEADLESS : "{D63592CA950AF3A8}Configs/System/ResourceTypes/HEADLESS/Sound.conf" { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/UserMaps.desc b/addons/medical_defibrillation/UserMaps.desc new file mode 100644 index 000000000..cb684558d --- /dev/null +++ b/addons/medical_defibrillation/UserMaps.desc @@ -0,0 +1,2 @@ +UserMapDescClass { +} \ No newline at end of file diff --git a/addons/medical_defibrillation/addon.gproj b/addons/medical_defibrillation/addon.gproj new file mode 100644 index 000000000..0a06ccb73 --- /dev/null +++ b/addons/medical_defibrillation/addon.gproj @@ -0,0 +1,86 @@ +GameProject { + ID "ACE_Medical_Defibrillation" + GUID "64FF097BE776612B" + TITLE "ACE Medical Defibrillation" + Dependencies { + "58D0FB3206B6F859" "6214CEA5DA92BFF3" + } + Configurations { + GameProjectConfig PC { + SystemModuleSettings SystemModuleSettings "{5F10A1570304557B}" { + DefaultConfig "{86E953538A28A98D}Configs/Systems/ChimeraSystemsConfig.conf" + } + WidgetManagerSettings WidgetManagerSettings "{AC4BE58770485E02}" { + StringTables { + StringTableDefinition "{68489263AFAE183F}" { + StringTableSource "{DE82B2882F49E394}Language/ACE_Medical_Defibrillation_localization.st" + Languages { + LanguageDefinition "{68489263AC1B9ACC}" { + Code "cs_cz" + StringTableRuntime "{2ED883009607422D}Language/ACE_Medical_Defibrillation_localization.cs_cz.conf" + } + LanguageDefinition "{68489263AC1B9A71}" { + Code "de_de" + StringTableRuntime "{FBA6993385A4530D}Language/ACE_Medical_Defibrillation_localization.de_de.conf" + } + LanguageDefinition "{68489263AC1B9A6E}" { + Code "en_us" + StringTableRuntime "{A5561378EF57560C}Language/ACE_Medical_Defibrillation_localization.en_us.conf" + } + LanguageDefinition "{68489263AC1B9A42}" { + Code "es_es" + StringTableRuntime "{601A5EF101553D13}Language/ACE_Medical_Defibrillation_localization.es_es.conf" + } + LanguageDefinition "{68489263AC1B99B9}" { + Code "fr_fr" + StringTableRuntime "{DBB2ABC6E7D6DE11}Language/ACE_Medical_Defibrillation_localization.fr_fr.conf" + } + LanguageDefinition "{68489263AC1B9997}" { + Code "it_it" + StringTableRuntime "{5BAE24F24AF45DE8}Language/ACE_Medical_Defibrillation_localization.it_it.conf" + } + LanguageDefinition "{68489263AC1B9988}" { + Code "ja_jp" + StringTableRuntime "{4BB5996074856D43}Language/ACE_Medical_Defibrillation_localization.ja_jp.conf" + } + LanguageDefinition "{68489263AC1B99FC}" { + Code "ko_kr" + StringTableRuntime "{EB0BB1CCE7A86E7C}Language/ACE_Medical_Defibrillation_localization.ko_kr.conf" + } + LanguageDefinition "{68489263AC1B99D8}" { + Code "pl_pl" + StringTableRuntime "{B77A17365947F200}Language/ACE_Medical_Defibrillation_localization.pl_pl.conf" + } + LanguageDefinition "{68489263AC1B98FC}" { + Code "pt_br" + StringTableRuntime "{620D8DFA62B938BA}Language/ACE_Medical_Defibrillation_localization.pt_br.conf" + } + LanguageDefinition "{68489263AC1B98DC}" { + Code "ru_ru" + StringTableRuntime "{374C9952FFC05DCC}Language/ACE_Medical_Defibrillation_localization.ru_ru.conf" + } + LanguageDefinition "{68489263AC1B9823}" { + Code "uk_ua" + StringTableRuntime "{BD14CCA493EEE399}Language/ACE_Medical_Defibrillation_localization.uk_ua.conf" + } + LanguageDefinition "{68489263AC1B9819}" { + Code "zh_cn" + StringTableRuntime "{67A4A299AA4E3384}Language/ACE_Medical_Defibrillation_localization.zh_cn.conf" + } + } + } + } + } + } + GameProjectConfig XBOX_ONE { + } + GameProjectConfig XBOX_SERIES { + } + GameProjectConfig PS4 { + } + GameProjectConfig PS5 { + } + GameProjectConfig HEADLESS { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/dev.gproj b/addons/medical_defibrillation/dev.gproj new file mode 100644 index 000000000..2a01b3900 --- /dev/null +++ b/addons/medical_defibrillation/dev.gproj @@ -0,0 +1,86 @@ +GameProject { + ID "ACE_Medical_Defibrillation_Dev" + GUID "684892630C2DFCA1" + TITLE "ACE Medical Defibrillation Dev" + Dependencies { + "58D0FB3206B6F859" "65AD7D4F994EA327" + } + Configurations { + GameProjectConfig PC { + SystemModuleSettings SystemModuleSettings "{5F10A1570304557B}" { + DefaultConfig "{86E953538A28A98D}Configs/Systems/ChimeraSystemsConfig.conf" + } + WidgetManagerSettings WidgetManagerSettings "{AC4BE58770485E02}" { + StringTables { + StringTableDefinition "{68489263AFAE183F}" { + StringTableSource "{DE82B2882F49E394}Language/ACE_Medical_Defibrillation_localization.st" + Languages { + LanguageDefinition "{68489263AC1B9ACC}" { + Code "cs_cz" + StringTableRuntime "{2ED883009607422D}Language/ACE_Medical_Defibrillation_localization.cs_cz.conf" + } + LanguageDefinition "{68489263AC1B9A71}" { + Code "de_de" + StringTableRuntime "{FBA6993385A4530D}Language/ACE_Medical_Defibrillation_localization.de_de.conf" + } + LanguageDefinition "{68489263AC1B9A6E}" { + Code "en_us" + StringTableRuntime "{A5561378EF57560C}Language/ACE_Medical_Defibrillation_localization.en_us.conf" + } + LanguageDefinition "{68489263AC1B9A42}" { + Code "es_es" + StringTableRuntime "{601A5EF101553D13}Language/ACE_Medical_Defibrillation_localization.es_es.conf" + } + LanguageDefinition "{68489263AC1B99B9}" { + Code "fr_fr" + StringTableRuntime "{DBB2ABC6E7D6DE11}Language/ACE_Medical_Defibrillation_localization.fr_fr.conf" + } + LanguageDefinition "{68489263AC1B9997}" { + Code "it_it" + StringTableRuntime "{5BAE24F24AF45DE8}Language/ACE_Medical_Defibrillation_localization.it_it.conf" + } + LanguageDefinition "{68489263AC1B9988}" { + Code "ja_jp" + StringTableRuntime "{4BB5996074856D43}Language/ACE_Medical_Defibrillation_localization.ja_jp.conf" + } + LanguageDefinition "{68489263AC1B99FC}" { + Code "ko_kr" + StringTableRuntime "{EB0BB1CCE7A86E7C}Language/ACE_Medical_Defibrillation_localization.ko_kr.conf" + } + LanguageDefinition "{68489263AC1B99D8}" { + Code "pl_pl" + StringTableRuntime "{B77A17365947F200}Language/ACE_Medical_Defibrillation_localization.pl_pl.conf" + } + LanguageDefinition "{68489263AC1B98FC}" { + Code "pt_br" + StringTableRuntime "{620D8DFA62B938BA}Language/ACE_Medical_Defibrillation_localization.pt_br.conf" + } + LanguageDefinition "{68489263AC1B98DC}" { + Code "ru_ru" + StringTableRuntime "{374C9952FFC05DCC}Language/ACE_Medical_Defibrillation_localization.ru_ru.conf" + } + LanguageDefinition "{68489263AC1B9823}" { + Code "uk_ua" + StringTableRuntime "{BD14CCA493EEE399}Language/ACE_Medical_Defibrillation_localization.uk_ua.conf" + } + LanguageDefinition "{68489263AC1B9819}" { + Code "zh_cn" + StringTableRuntime "{67A4A299AA4E3384}Language/ACE_Medical_Defibrillation_localization.zh_cn.conf" + } + } + } + } + } + } + GameProjectConfig XBOX_ONE { + } + GameProjectConfig XBOX_SERIES { + } + GameProjectConfig PS4 { + } + GameProjectConfig PS5 { + } + GameProjectConfig HEADLESS { + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/license.txt b/addons/medical_defibrillation/license.txt new file mode 100644 index 000000000..6ebf24cf1 --- /dev/null +++ b/addons/medical_defibrillation/license.txt @@ -0,0 +1,18 @@ +ACE Anvil - An experimental realism mod for Arma Reforger +Copyright (C) 2024 acemod + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +When publishing a derivative of this product you may not use a name that +might create the impression that your version is an official release. + +A full copy of this license can be found at the following address: +https://github.com/acemod/ACE-Anvil/blob/master/LICENSE. diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_DefibComponent.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_DefibComponent.c new file mode 100644 index 000000000..398aa934e --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_DefibComponent.c @@ -0,0 +1,237 @@ +class ACE_Medical_Defibrillation_DefibComponentClass : ScriptComponentClass +{ +} + +class ACE_Medical_Defibrillation_DefibComponent : ScriptComponent +{ + [Attribute("1", UIWidgets.ComboBox, "Defibrillator Emulation Type", "", ParamEnumArray.FromEnum(ACE_Medical_Defibrillation_EDefibEmulation))] + protected ACE_Medical_Defibrillation_EDefibEmulation m_eDefibrillatorEmulation; + + protected float m_fAnalysisDuration = 3; + protected float m_fChargeDuration = 5.5; + + [Attribute(defvalue: "120", params: "0 inf 1", desc: "Time (s) between analysis events where players should perform CPR.")] + protected float m_fCPRCooldownDuration; + + [Attribute(defvalue: "10", params: "0 inf 0.1", desc: "Stun duration (s) for a character that touches the patient while a shock is delivered.")] + protected float m_fContactShockStunDuration; + + [RplProp(onRplName: "OnPatientReplicated")] + protected int m_iPatientRplId; + protected IEntity m_pPatient; + + [RplProp(onRplName: "OnDefibStateChanged")] + protected ACE_Medical_Defibrillation_EDefibStateID m_eDefibrillatorStateID; + + [RplProp(onRplName: "OnDefibProgressChanged"), RplRpc(RplChannel.Unreliable, RplRcver.Broadcast)] + protected ref ACE_Medical_Defibrillation_DefibProgressData m_pProgressData; + + ref ACE_Medical_Defibrillation_DefibSounds m_pSounds; + + //------------------------------------------------------------------------------------------------ + override protected void OnPostInit(IEntity owner) + { + super.EOnInit(owner); + + PrintFormat("%1::OnPostInit | Starting defibrillator init...", this.ClassName()); + + ACE_Medical_Defibrillation_Defibrillation_Settings settings = ACE_SettingsHelperT.GetModSettings(); + + // Convert to milliseconds and make data + m_pProgressData = new ACE_Medical_Defibrillation_DefibProgressData(this, + m_fAnalysisDuration * 1000, + m_fChargeDuration * 1000, + m_fCPRCooldownDuration * 1000); + + // Create sound data + m_pSounds = new ACE_Medical_Defibrillation_DefibSounds(); + + // Subscribe to the InventoryItemComponent OnParentSlotChanged + // Determines if defib is already on the ground to add it to the system + InventoryItemComponent invComp = InventoryItemComponent.Cast(owner.FindComponent(InventoryItemComponent)); + if (invComp) + { + invComp.m_OnParentSlotChangedInvoker.Insert(OnParentSlotChanged); + if (!invComp.GetParentSlot()) + { + ACE_Medical_Defibrillation_DefibStatesSystem system = GetDefibStatesSystem(); + if (system) + system.Register(owner); + } + } + + // Subscribe to data change events for replication + m_pProgressData.m_OnDataChanged.Insert(OnDefibProgressChanged); + } + + //------------------------------------------------------------------------------------------------ + ACE_Medical_Defibrillation_DefibSoundComponent GetSoundComponent() + { + ACE_Medical_Defibrillation_DefibSoundComponent component = ACE_Medical_Defibrillation_DefibSoundComponent.Cast(GetOwner().FindComponent(ACE_Medical_Defibrillation_DefibSoundComponent)); + if (!component) + return null; + + return component; + } + + //------------------------------------------------------------------------------------------------ + ACE_Medical_Defibrillation_DefibStatesSystem GetDefibStatesSystem() + { + ChimeraWorld world = GetGame().GetWorld(); + if (!world) + return null; + + ACE_Medical_Defibrillation_DefibStatesSystem system = ACE_Medical_Defibrillation_DefibStatesSystem.Cast(world.FindSystem(ACE_Medical_Defibrillation_DefibStatesSystem)); + if (!system) + return null; + + return system; + } + + //------------------------------------------------------------------------------------------------ + void Reset() + { + SetPatient(null); + + // Convert to milliseconds and make data + m_pProgressData = new ACE_Medical_Defibrillation_DefibProgressData(this, + m_fAnalysisDuration * 1000, + m_fChargeDuration * 1000, + m_fCPRCooldownDuration * 1000); + + // Create sound data + m_pSounds = new ACE_Medical_Defibrillation_DefibSounds(); + m_eDefibrillatorStateID = ACE_Medical_Defibrillation_EDefibStateID.DISCONNECTED; + } + + //------------------------------------------------------------------------------------------------ + ACE_Medical_Defibrillation_EDefibEmulation GetDefibrillatorEmulation() + { + return m_eDefibrillatorEmulation; + } + + //------------------------------------------------------------------------------------------------ + ACE_Medical_Defibrillation_EDefibStateID GetDefibStateID() + { + return m_eDefibrillatorStateID; + } + + //------------------------------------------------------------------------------------------------ + void SetDefibStateID(ACE_Medical_Defibrillation_EDefibStateID state) + { + m_eDefibrillatorStateID = state; + } + + //------------------------------------------------------------------------------------------------ + ACE_Medical_Defibrillation_DefibProgressData GetDefibProgressData() + { + return m_pProgressData; + } + + //------------------------------------------------------------------------------------------------ + bool SetPatient(IEntity patient) + { + if (!patient) + { + m_iPatientRplId = ACE_Medical_Defibrillation_ReplicationHelper.GetRplIdByEntity(null); + m_pPatient = null; + Replication.BumpMe(); + return false; + } + + ACE_Medical_VitalsComponent component = ACE_Medical_VitalsComponent.Cast(patient.FindComponent(ACE_Medical_VitalsComponent)); + if (!component) + return false; + + m_iPatientRplId = ACE_Medical_Defibrillation_ReplicationHelper.GetRplIdByEntity(patient); + m_pPatient = patient; + Replication.BumpMe(); + return true; + } + + //------------------------------------------------------------------------------------------------ + void ResetPatient() + { + m_iPatientRplId = -1; + m_pPatient = null; + Replication.BumpMe(); + } + + //------------------------------------------------------------------------------------------------ + IEntity GetPatient() + { + return m_pPatient; + } + + //------------------------------------------------------------------------------------------------ + bool IsShockableRhythm() + { + ACE_Medical_VitalsComponent vitals = ACE_Medical_VitalsComponent.Cast(m_pPatient.FindComponent(ACE_Medical_VitalsComponent)); + if (!vitals) + return false; + + array shockableRhythms = { ACE_Medical_Defibrillation_ECardiacRhythm.VF }; + if (shockableRhythms.Contains(vitals.GetCardiacRhythm())) + return true; + + return false; + } + + //------------------------------------------------------------------------------------------------ + bool ShockPatient() + { + if (!m_pPatient) + return false; + + ACE_Medical_VitalsComponent vitals = ACE_Medical_VitalsComponent.Cast(m_pPatient.FindComponent(ACE_Medical_VitalsComponent)); + if (!vitals) + return false; + + vitals.ModifyShocksDelivered(1); + GetSoundComponent().PlaySoundOnPatient(ACE_Medical_Defibrillation_DefibSounds.SOUNDSHOCKTHUMP); + + SetDefibStateID(ACE_Medical_Defibrillation_EDefibStateID.CONNECTED); + + float cprCooldown = m_pProgressData.GetDuration(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown); + m_pProgressData.SetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown, cprCooldown); + + return true; + } + + //------------------------------------------------------------------------------------------------ + private void OnDefibProgressChanged() + { + // PrintFormat("%1::OnDefibProgressChanged | Fired", this.ClassName()); + Replication.BumpMe(); + } + + + //------------------------------------------------------------------------------------------------ + private void OnParentSlotChanged(InventoryStorageSlot oldSlot, InventoryStorageSlot newSlot) + { + ACE_Medical_Defibrillation_DefibStatesSystem system = GetDefibStatesSystem(); + if (!system) + return; + + if (!newSlot) + { + system.Register(GetOwner()); + } + else + { + system.Unregister(GetOwner()); + Reset(); + } + } + + //------------------------------------------------------------------------------------------------ + private void OnDefibStateChanged() + { + } + + //------------------------------------------------------------------------------------------------ + protected void OnPatientReplicated() + { + m_pPatient = ACE_Medical_Defibrillation_ReplicationHelper.GetEntityByRplId(m_iPatientRplId); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_DefibProgressData.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_DefibProgressData.c new file mode 100644 index 000000000..fa18cd075 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_DefibProgressData.c @@ -0,0 +1,280 @@ +enum ACE_Medical_Defibrillation_EDefibProgressCategory +{ + StateTimeElapsed, + Analysis, + Charge, + CPRCooldown +} + +class ACE_Medical_Defibrillation_DefibProgressData : Managed +{ + ACE_Medical_Defibrillation_DefibComponent m_pDefibComponent; + + protected ref map m_mDurations; + protected ref map m_mTimers; + + ref ScriptInvoker m_OnDataChanged = new ScriptInvoker(); + + protected float m_fAnalysisDuration; + protected float m_fChargeDuration; + protected float m_fCPRCooldownDuration; + + void ACE_Medical_Defibrillation_DefibProgressData(ACE_Medical_Defibrillation_DefibComponent defibComponent, float analysisDuration, float chargeDuration, float cprCooldownDuration) + { + PrintFormat("%1::Constructor | Building new defib progress data...", this.ClassName()); + + m_pDefibComponent = defibComponent; + + m_mDurations = new map(); + m_mTimers = new map(); + + SetDuration(ACE_Medical_Defibrillation_EDefibProgressCategory.Analysis, analysisDuration); + SetDuration(ACE_Medical_Defibrillation_EDefibProgressCategory.Charge, chargeDuration); + SetDuration(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown, cprCooldownDuration); + + SetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Analysis, 0); + SetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Charge, 0); + SetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown, 0); + } + + //------------------------------------------------------------------------------------------------ + float GetDuration(ACE_Medical_Defibrillation_EDefibProgressCategory durationName) + { + if (m_mDurations.Contains(durationName)) + return m_mDurations[durationName]; + return -1; + } + + //------------------------------------------------------------------------------------------------ + void SetDuration(ACE_Medical_Defibrillation_EDefibProgressCategory durationName, float value, bool replicate = true) + { + m_mDurations[durationName] = value; + if (replicate) + m_OnDataChanged.Invoke(); + } + + //------------------------------------------------------------------------------------------------ + float GetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory timerName) + { + if (m_mTimers.Contains(timerName)) + return m_mTimers[timerName]; + return -1; + } + + //------------------------------------------------------------------------------------------------ + void SetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory timerName, float value, bool replicate = true) + { + m_mTimers[timerName] = value; + if (replicate) + m_OnDataChanged.Invoke(); + } + + //------------------------------------------------------------------------------------------------ + void ModifyTimer(ACE_Medical_Defibrillation_EDefibProgressCategory timerName, float value, bool replicate = true) + { + if (m_mTimers.Contains(timerName)) + { + m_mTimers[timerName] = Math.Max(m_mTimers[timerName] + value, 0); + if (replicate) + m_OnDataChanged.Invoke(); + } + } + + //------------------------------------------------------------------------------------------------ + void ResetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory timerName, bool replicate = true) + { + m_mTimers[timerName] = 0; + if (replicate) + m_OnDataChanged.Invoke(); + } + + //------------------------------------------------------------------------------------------------ + void ResetAll(bool replicate = true) + { + ResetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Charge); + ResetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Analysis); + ResetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown); + ResetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.StateTimeElapsed); + if (replicate) + m_OnDataChanged.Invoke(); + } + + //------------------------------------------------------------------------------------------------ + float GetPercentComplete(ACE_Medical_Defibrillation_EDefibProgressCategory timerName) + { + if (!m_mDurations.Contains(timerName) || !m_mTimers.Contains(timerName)) + return -1; + + return Math.Min(m_mTimers[timerName] / m_mDurations[timerName], 1); + } +} + +//------------------------------------------------------------------------------------------------ +//! Replication System +modded class ACE_Medical_Defibrillation_DefibProgressData +{ + const static float REPLICATION_TIMER_THRESHOLD = 0.05; // 50ms + + //------------------------------------------------------------------------------------------------ + static bool Extract(ACE_Medical_Defibrillation_DefibProgressData instance, ScriptCtx ctx, SSnapSerializerBase snapshot) + { + float analysisTimer = instance.GetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Analysis); + float chargeTimer = instance.GetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Charge); + float cprCooldownTimer = instance.GetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown); + + snapshot.SerializeFloat(analysisTimer); + snapshot.SerializeFloat(chargeTimer); + snapshot.SerializeFloat(cprCooldownTimer); + + return true; + } + + //------------------------------------------------------------------------------------------------ + static bool Inject(SSnapSerializerBase snapshot, ScriptCtx ctx, ACE_Medical_Defibrillation_DefibProgressData instance) + { + float analysisTimer, chargeTimer, cprCooldownTimer; + + snapshot.SerializeFloat(analysisTimer); + snapshot.SerializeFloat(chargeTimer); + snapshot.SerializeFloat(cprCooldownTimer); + + instance.SetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Analysis, analysisTimer); + instance.SetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Charge, chargeTimer); + instance.SetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown, cprCooldownTimer); + + return true; + } + + //------------------------------------------------------------------------------------------------ + static void Encode(SSnapSerializerBase snapshot, ScriptCtx ctx, ScriptBitSerializer packet) + { + // Read values from snapshot and encode them efficiently + float analysisTimer, chargeTimer, cprCooldownTimer; + + snapshot.SerializeFloat(analysisTimer); + snapshot.SerializeFloat(chargeTimer); + snapshot.SerializeFloat(cprCooldownTimer); + + // Encode timers - using full 32-bit precision since medical timing is critical + packet.Serialize(analysisTimer, 32); + packet.Serialize(chargeTimer, 32); + packet.Serialize(cprCooldownTimer, 32); + } + + //------------------------------------------------------------------------------------------------ + static bool Decode(ScriptBitSerializer packet, ScriptCtx ctx, SSnapSerializerBase snapshot) + { + float analysisTimer, chargeTimer, cprTimer; + + // Decode values from packet + packet.Serialize(analysisTimer, 32); + packet.Serialize(chargeTimer, 32); + packet.Serialize(cprTimer, 32); + + // Write decoded values to snapshot + snapshot.SerializeFloat(analysisTimer); + snapshot.SerializeFloat(chargeTimer); + snapshot.SerializeFloat(cprTimer); + + return true; + } + + //------------------------------------------------------------------------------------------------ + static bool SnapCompare(SSnapSerializerBase lhs, SSnapSerializerBase rhs, ScriptCtx ctx) + { + // Compare all 6 float values + return lhs.CompareSnapshots(rhs, 3 * 4); // 3 floats * 4 bytes each + } + + //------------------------------------------------------------------------------------------------ + static bool PropCompare(ACE_Medical_Defibrillation_DefibProgressData instance, SSnapSerializerBase snapshot, ScriptCtx ctx) + { + // Read values from snapshot + float snapshotAnalysisTimer, snapshotChargeTimer, snapshotCprTimer; + + snapshot.SerializeFloat(snapshotAnalysisTimer); + snapshot.SerializeFloat(snapshotChargeTimer); + snapshot.SerializeFloat(snapshotCprTimer); + + // Compare with instance values using thresholds for timers + return Math.AbsFloat(instance.GetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Analysis) - snapshotAnalysisTimer) < REPLICATION_TIMER_THRESHOLD + && Math.AbsFloat(instance.GetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Charge) - snapshotChargeTimer) < REPLICATION_TIMER_THRESHOLD + && Math.AbsFloat(instance.GetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown) - snapshotCprTimer) < REPLICATION_TIMER_THRESHOLD; + } + + static void EncodeDelta(SSnapSerializerBase oldSnapshot, SSnapSerializerBase newSnapshot, ScriptCtx ctx, ScriptBitSerializer packet) + { + // Read values from both snapshots + float oldAnalysisTimer, oldChargeTimer, oldCprTimer; + float newAnalysisTimer, newChargeTimer, newCprTimer; + + oldSnapshot.SerializeFloat(oldAnalysisTimer); + oldSnapshot.SerializeFloat(oldChargeTimer); + oldSnapshot.SerializeFloat(oldCprTimer); + + newSnapshot.SerializeFloat(newAnalysisTimer); + newSnapshot.SerializeFloat(newChargeTimer); + newSnapshot.SerializeFloat(newCprTimer); + + // Encode which values changed + bool analysisTimerChanged = Math.AbsFloat(newAnalysisTimer - oldAnalysisTimer) >= REPLICATION_TIMER_THRESHOLD; + bool chargeTimerChanged = Math.AbsFloat(newChargeTimer - oldChargeTimer) >= REPLICATION_TIMER_THRESHOLD; + bool cprTimerChanged = Math.AbsFloat(newCprTimer - oldCprTimer) >= REPLICATION_TIMER_THRESHOLD; + + // Encode change flags (6 bits) + packet.Serialize(analysisTimerChanged, 1); + packet.Serialize(chargeTimerChanged, 1); + packet.Serialize(cprTimerChanged, 1); + + // Encode changed values + if (analysisTimerChanged) + packet.Serialize(newAnalysisTimer, 32); + if (chargeTimerChanged) + packet.Serialize(newChargeTimer, 32); + if (cprTimerChanged) + packet.Serialize(newCprTimer, 32); + } + + static void DecodeDelta(ScriptBitSerializer packet, ScriptCtx ctx, SSnapSerializerBase oldSnapshot, SSnapSerializerBase newSnapshot) + { + // Read old values + float oldAnalysisTimer, oldChargeTimer, oldCprTimer; + + oldSnapshot.SerializeFloat(oldAnalysisTimer); + oldSnapshot.SerializeFloat(oldChargeTimer); + oldSnapshot.SerializeFloat(oldCprTimer); + + // Read change flags + bool analysisTimerChanged, chargeTimerChanged, cprTimerChanged; + + packet.Serialize(analysisTimerChanged, 1); + packet.Serialize(chargeTimerChanged, 1); + packet.Serialize(cprTimerChanged, 1); + + // Initialize new values with old values + float newAnalysisTimer = oldAnalysisTimer; + float newChargeTimer = oldChargeTimer; + float newCprTimer = oldCprTimer; + + // Override with new values if they changed + if (analysisTimerChanged) + { + packet.Serialize(newAnalysisTimer, 32); + } + + if (chargeTimerChanged) + { + packet.Serialize(newChargeTimer, 32); + } + + if (cprTimerChanged) + { + packet.Serialize(newCprTimer, 32); + } + + // Write to new snapshot + newSnapshot.SerializeFloat(newAnalysisTimer); + newSnapshot.SerializeFloat(newChargeTimer); + newSnapshot.SerializeFloat(newCprTimer); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_DefibSoundComponent.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_DefibSoundComponent.c new file mode 100644 index 000000000..80fe6cc55 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_DefibSoundComponent.c @@ -0,0 +1,88 @@ +class ACE_Medical_Defibrillation_DefibSoundComponentClass : SoundComponentClass +{ +} + +class ACE_Medical_Defibrillation_DefibSoundComponent : SoundComponent +{ + AudioHandle m_pCurrentSound; + + //------------------------------------------------------------------------------------------------ + AudioHandle GetCurrentSound() + { + return m_pCurrentSound; + } + + //------------------------------------------------------------------------------------------------ + void PlaySound(string soundName, bool terminatePrevious = false, bool isLoop = false) + { + if (!Replication.IsServer()) + return; + + RPC_PlaySound(soundName, terminatePrevious, isLoop); + Rpc(RPC_PlaySound, soundName, terminatePrevious, isLoop); + } + + //------------------------------------------------------------------------------------------------ + void TerminateSound(bool terminateAll = false) + { + if (!Replication.IsServer()) + return; + + RPC_TerminateSound(terminateAll); + Rpc(TerminateSound, terminateAll); + } + + //------------------------------------------------------------------------------------------------ + [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)] + void RPC_PlaySound(string soundName, bool terminatePrevious, bool isLoop) + { + if (isLoop && m_pCurrentSound) + return; + + if (terminatePrevious) + TerminateSound(); + + m_pCurrentSound = SoundEvent(soundName); + } + + //------------------------------------------------------------------------------------------------ + [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)] + void RPC_TerminateSound(bool terminateAll) + { + if (terminateAll) + TerminateAll(); + else + Terminate(m_pCurrentSound); + + m_pCurrentSound = null; + } + + //------------------------------------------------------------------------------------------------ + void PlaySoundOnPatient(string soundName) + { + if (!Replication.IsServer()) + return; + + RPC_PlaySoundOnPatient(ACE_Medical_Defibrillation_DefibSounds.SOUNDSHOCKTHUMP); + Rpc(RPC_PlaySoundOnPatient, ACE_Medical_Defibrillation_DefibSounds.SOUNDSHOCKTHUMP); + } + + //------------------------------------------------------------------------------------------------ + [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)] + void RPC_PlaySoundOnPatient(string soundName) + { + ACE_Medical_Defibrillation_DefibComponent defibComponent = ACE_Medical_Defibrillation_DefibComponent.Cast(GetOwner().FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + if (!defibComponent) + return; + + IEntity patient = defibComponent.GetPatient(); + if (!patient) + return; + + CharacterSoundComponent sndComponent = CharacterSoundComponent.Cast(patient.FindComponent(CharacterSoundComponent)); + if (!sndComponent) + return; + + sndComponent.SoundEvent(soundName); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_DefibSounds.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_DefibSounds.c new file mode 100644 index 000000000..c066c3322 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_DefibSounds.c @@ -0,0 +1,26 @@ +class ACE_Medical_Defibrillation_DefibSounds +{ + const static string SOUNDANALYSING = "ACE_Medical_Defibrillation_SoundAnalysing"; + const static string SOUNDCHARGED = "ACE_Medical_Defibrillation_SoundCharged"; + const static string SOUNDCHARGING = "ACE_Medical_Defibrillation_SoundCharging"; + const static string SOUNDCONNECTED = "ACE_Medical_Defibrillation_SoundConnected"; + const static string SOUNDDISCONNECTED = "ACE_Medical_Defibrillation_SoundDisconnected"; + const static string SOUNDNOSHOCKADVISED = "ACE_Medical_Defibrillation_SoundNoShockAdvised"; + const static string SOUNDSHOCKADVISED = "ACE_Medical_Defibrillation_SoundShockAdvised"; + const static string SOUNDSHOCKTHUMP = "ACE_Medical_Defibrillation_SoundThump"; + const static string SOUNDCPRBEEP = "ACE_Medical_Defibrillation_SoundCPRBeep"; + const static string SOUNDCHARGEDBEEPLOW = "ACE_Medical_Defibrillation_SoundChargedBeepLow"; + const static string SOUNDCHARGEDBEEPHIGH = "ACE_Medical_Defibrillation_SoundChargedBeepHigh"; + const static string SOUNDCPRREMINDER = "ACE_Medical_Defibrillation_SoundCPRReminder"; + const static string SOUNDDONOTTOUCHPATIENT = "ACE_Medical_Defibrillation_SoundDoNotTouchPatient"; + + float m_fLastCPRPaceTimer; + float m_fContinueCPRTimer; + float m_fPatientTouchTimer; + float m_fChargedBeepTimer; + float m_iChargedBeepPhase; + + void ACE_Medical_Defibrillation_DefibSounds() + { + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_ECardiacRhythm.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_ECardiacRhythm.c new file mode 100644 index 000000000..7d5638e3f --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_ECardiacRhythm.c @@ -0,0 +1,9 @@ +enum ACE_Medical_Defibrillation_ECardiacRhythm +{ + Unknown, + PEA, + VF, + Bradycardia, + Sinus, + Tachycardia +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_EDefibrillatorEmulation.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_EDefibrillatorEmulation.c new file mode 100644 index 000000000..0bdc8d6db --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Components/ACE_Medical_Defibrillation_EDefibrillatorEmulation.c @@ -0,0 +1,5 @@ +enum ACE_Medical_Defibrillation_EDefibEmulation +{ + Manual_NotImplimented, + Automated +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Diag/ArmaReforgerScripted.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Diag/ArmaReforgerScripted.c new file mode 100644 index 000000000..e72807cdb --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Diag/ArmaReforgerScripted.c @@ -0,0 +1,21 @@ +#ifdef ENABLE_DIAG +//------------------------------------------------------------------------------------------------ +modded class ArmaReforgerScripted : ChimeraGame +{ + //------------------------------------------------------------------------------------------------ + override bool OnGameStart() + { + DiagMenu.RegisterBool(SCR_DebugMenuID.ACE_MEDICAL_DEBUGUI_MENU_DEFIBRILLATOR_DEBUG, "", "Debug defibrillators", "ACE Medical"); + return super.OnGameStart(); + } + + //------------------------------------------------------------------------------------------------ + override void OnUpdate(BaseWorld world, float timeslice) + { + super.OnUpdate(world, timeslice); + + if (DiagMenu.GetBool(SCR_DebugMenuID.ACE_MEDICAL_DEBUGUI_MENU_DEFIBRILLATOR_DEBUG)) + ACE_Medical_Defibrillation_DefibStatesSystem.GetInstance(world).OnDiag(timeslice); + } +} +#endif diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Diag/SCR_DebugMenuID.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Diag/SCR_DebugMenuID.c new file mode 100644 index 000000000..76b2e701b --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Diag/SCR_DebugMenuID.c @@ -0,0 +1,5 @@ +//------------------------------------------------------------------------------------------------ +modded enum SCR_DebugMenuID +{ + ACE_MEDICAL_DEBUGUI_MENU_DEFIBRILLATOR_DEBUG +} diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/ACE_Medical_Defibrillation_DefibStateMachine.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/ACE_Medical_Defibrillation_DefibStateMachine.c new file mode 100644 index 000000000..4fda63ab4 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/ACE_Medical_Defibrillation_DefibStateMachine.c @@ -0,0 +1,33 @@ +//------------------------------------------------------------------------------------------------ +class ACE_Medical_Defibrillation_DefibStateMachine : ACE_FSM_Machine +{ + protected ACE_Medical_Defibrillation_EDefibStateID m_eCurrentStateID; + + //------------------------------------------------------------------------------------------------ + //! Check for forced transitions on the component + override void OnUpdate(float timeSlice) + { + ACE_Medical_Defibrillation_EDefibStateID stateID = m_pContext.m_pDefibrillator.GetDefibStateID(); + if (m_iCurrentStateIdx >= 0 && stateID != m_eCurrentStateID) + ChangeState(stateID); + + super.OnUpdate(timeSlice); + } + + //------------------------------------------------------------------------------------------------ + //! Update state ID on the component + override protected void ChangeStateByIdx(int newStateIdx) + { + if (newStateIdx >= 0) + { + m_eCurrentStateID = m_aStates[newStateIdx].GetID(); + m_pContext.m_pDefibrillator.SetDefibStateID(m_eCurrentStateID); + } + else + { + m_eCurrentStateID = ACE_Medical_Defibrillation_EDefibStateID.STOP; + } + + super.ChangeStateByIdx(newStateIdx); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/ACE_Medical_Defibrillation_DefibrillatorContext.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/ACE_Medical_Defibrillation_DefibrillatorContext.c new file mode 100644 index 000000000..c40a7445f --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/ACE_Medical_Defibrillation_DefibrillatorContext.c @@ -0,0 +1,16 @@ +//------------------------------------------------------------------------------------------------ +class ACE_Medical_Defibrillation_DefibContext : ACE_FrameJobScheduler_IObjectContext +{ + ACE_Medical_Defibrillation_DefibComponent m_pDefibrillator; + + void ACE_Medical_Defibrillation_DefibContext(IEntity object) + { + m_pDefibrillator = ACE_Medical_Defibrillation_DefibComponent.Cast(object.FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + } + + //------------------------------------------------------------------------------------------------ + override bool IsValid() + { + return (super.IsValid() && !m_pObject.IsDeleted()); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/ACE_Medical_Defibrillation_EDefibStateID.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/ACE_Medical_Defibrillation_EDefibStateID.c new file mode 100644 index 000000000..1e05bc557 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/ACE_Medical_Defibrillation_EDefibStateID.c @@ -0,0 +1,11 @@ +//------------------------------------------------------------------------------------------------ +enum ACE_Medical_Defibrillation_EDefibStateID : ACE_FSM_EStateID +{ + DISCONNECTED = 1 << 0, + CONNECTED = 1 << 1, + ANALYSING = 1 << 2, + ANALYSED = 1 << 3, + CHARGING = 1 << 4, + CHARGED = 1 << 5, + COOLDOWN = 1 << 6 +} diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_AnalysedState.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_AnalysedState.c new file mode 100644 index 000000000..f610bf856 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_AnalysedState.c @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------------------------ +class ACE_Medical_Defibrillation_AnalysedState : ACE_Medical_Defibrillation_IDefibState +{ + //------------------------------------------------------------------------------------------------ + override void OnEnter(ACE_Medical_Defibrillation_DefibContext context) + { + super.OnEnter(context); + + Print("ACE_Medical_Defibrillation_AnalysedState::OnEnter | State entered: analysed"); + + // Play shock advised/not advised sound and move to charging + if (context.m_pDefibrillator.IsShockableRhythm()) + { + context.m_pDefibrillator.GetSoundComponent().PlaySound(ACE_Medical_Defibrillation_DefibSounds.SOUNDSHOCKADVISED) + // Will transition to charging after 2.0 seconds in this state automatically. See: ACE_Medical_Defibrillation_ChargingStateTransition + } + else + { + // Not shockable, place on cooldowna and go back to connected (no transition) + context.m_pDefibrillator.GetSoundComponent().PlaySound(ACE_Medical_Defibrillation_DefibSounds.SOUNDNOSHOCKADVISED); + + float cprTimerDuration = context.m_pDefibrillator.GetDefibProgressData().GetDuration(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown); + context.m_pDefibrillator.GetDefibProgressData().SetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown, cprTimerDuration); + + context.m_pDefibrillator.SetDefibStateID(ACE_Medical_Defibrillation_EDefibStateID.CONNECTED); + } + } + + //------------------------------------------------------------------------------------------------ + override void OnUpdate(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + super.OnUpdate(context, timeSlice); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_AnalysingState.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_AnalysingState.c new file mode 100644 index 000000000..6a6e3a7f5 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_AnalysingState.c @@ -0,0 +1,24 @@ +class ACE_Medical_Defibrillation_AnalysingState : ACE_Medical_Defibrillation_IDefibState +{ + //------------------------------------------------------------------------------------------------ + override void OnEnter(ACE_Medical_Defibrillation_DefibContext context) + { + super.OnEnter(context); + + context.m_pDefibrillator.GetDefibProgressData().ResetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Analysis); + + // Play analysing sound + context.m_pDefibrillator.GetSoundComponent().PlaySound(ACE_Medical_Defibrillation_DefibSounds.SOUNDANALYSING); + + Print("ACE_Medical_Defibrillation_AnalysingState::OnEnter | State entered: analysing"); + } + + //------------------------------------------------------------------------------------------------ + override void OnUpdate(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + super.OnUpdate(context, timeSlice); + + // Update analysis timer + context.m_pDefibrillator.GetDefibProgressData().ModifyTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Analysis, timeSlice); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_ChargedState.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_ChargedState.c new file mode 100644 index 000000000..6e4641611 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_ChargedState.c @@ -0,0 +1,38 @@ +class ACE_Medical_Defibrillation_ChargedState : ACE_Medical_Defibrillation_IDefibState +{ + //------------------------------------------------------------------------------------------------ + override void OnEnter(ACE_Medical_Defibrillation_DefibContext context) + { + super.OnEnter(context); + + context.m_pDefibrillator.m_pSounds.m_fChargedBeepTimer = 0; + context.m_pDefibrillator.m_pSounds.m_iChargedBeepPhase = 0; + + Print("ACE_Medical_Defibrillation_ChargedState::OnEnter | State entered: charged"); + } + + //------------------------------------------------------------------------------------------------ + override void OnUpdate(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + super.OnUpdate(context, timeSlice); + + const float BEEP_INTERVAL = 250; + + if (context.m_pDefibrillator.m_pSounds.m_fChargedBeepTimer >= BEEP_INTERVAL) + { + if (Math.Mod(context.m_pDefibrillator.m_pSounds.m_iChargedBeepPhase, 2) == 0) + { + context.m_pDefibrillator.GetSoundComponent().PlaySound(ACE_Medical_Defibrillation_DefibSounds.SOUNDCHARGEDBEEPLOW); + } + else + { + context.m_pDefibrillator.GetSoundComponent().PlaySound(ACE_Medical_Defibrillation_DefibSounds.SOUNDCHARGEDBEEPHIGH); + } + + // Advance to next phase and reset timer + context.m_pDefibrillator.m_pSounds.m_iChargedBeepPhase++; + context.m_pDefibrillator.m_pSounds.m_fChargedBeepTimer = 0; + } + context.m_pDefibrillator.m_pSounds.m_fChargedBeepTimer += timeSlice; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_ChargingState.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_ChargingState.c new file mode 100644 index 000000000..05fc5d8b0 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_ChargingState.c @@ -0,0 +1,24 @@ +class ACE_Medical_Defibrillation_ChargingState : ACE_Medical_Defibrillation_IDefibState +{ + //------------------------------------------------------------------------------------------------ + override void OnEnter(ACE_Medical_Defibrillation_DefibContext context) + { + super.OnEnter(context); + + context.m_pDefibrillator.GetDefibProgressData().ResetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Charge); + + // Play analysing sound effect + context.m_pDefibrillator.GetSoundComponent().PlaySound(ACE_Medical_Defibrillation_DefibSounds.SOUNDCHARGING); + + Print("ACE_Medical_Defibrillation_ChargingState::OnEnter | State entered: charging"); + } + + //------------------------------------------------------------------------------------------------ + override void OnUpdate(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + super.OnUpdate(context, timeSlice); + + // Update charge timer + context.m_pDefibrillator.GetDefibProgressData().ModifyTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.Charge, timeSlice); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_ConnectedState.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_ConnectedState.c new file mode 100644 index 000000000..f78cc4168 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_ConnectedState.c @@ -0,0 +1,42 @@ +class ACE_Medical_Defibrillation_ConnectedState : ACE_Medical_Defibrillation_IDefibState +{ + //------------------------------------------------------------------------------------------------ + override void OnEnter(ACE_Medical_Defibrillation_DefibContext context) + { + super.OnEnter(context); + + context.m_pDefibrillator.m_pSounds.m_fContinueCPRTimer = 10000 - 2000; + context.m_pDefibrillator.m_pSounds.m_fLastCPRPaceTimer = -2000; // Have a delay on the first one so that previous sound can end + + Print("ACE_Medical_Defibrillation_ConnectedState::OnEnter | State entered: connected"); + } + + //------------------------------------------------------------------------------------------------ + override void OnUpdate(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + super.OnUpdate(context, timeSlice); + + // Reduce CPR cooldown + context.m_pDefibrillator.GetDefibProgressData().ModifyTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown, -timeSlice); + + if (context.m_pDefibrillator.GetDefibProgressData().GetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown) > 0) + { + // Remind players to do CPR + if (context.m_pDefibrillator.m_pSounds.m_fContinueCPRTimer >= 10000) + { + context.m_pDefibrillator.GetSoundComponent().PlaySound(ACE_Medical_Defibrillation_DefibSounds.SOUNDCPRREMINDER); + context.m_pDefibrillator.m_pSounds.m_fContinueCPRTimer = 0; + } + + // Play CPR pacing beats + if (context.m_pDefibrillator.m_pSounds.m_fLastCPRPaceTimer >= 500) + { + context.m_pDefibrillator.GetSoundComponent().PlaySound(ACE_Medical_Defibrillation_DefibSounds.SOUNDCPRBEEP); + context.m_pDefibrillator.m_pSounds.m_fLastCPRPaceTimer = 0; + } + } + + context.m_pDefibrillator.m_pSounds.m_fContinueCPRTimer += timeSlice; + context.m_pDefibrillator.m_pSounds.m_fLastCPRPaceTimer += timeSlice; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_CooldownState.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_CooldownState.c new file mode 100644 index 000000000..2d2a8741b --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_CooldownState.c @@ -0,0 +1,18 @@ +class ACE_Medical_Defibrillation_CooldownState : ACE_Medical_Defibrillation_IDefibState +{ + float m_fLastCPRReminder = 0; + + //------------------------------------------------------------------------------------------------ + override void OnEnter(ACE_Medical_Defibrillation_DefibContext context) + { + super.OnEnter(context); + + Print("ACE_Medical_Defibrillation_CooldownState::OnEnter | State entered: cooldown"); + } + + //------------------------------------------------------------------------------------------------ + override void OnUpdate(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + super.OnUpdate(context, timeSlice); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_DisconnectedState.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_DisconnectedState.c new file mode 100644 index 000000000..0d3c18f1c --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_DisconnectedState.c @@ -0,0 +1,19 @@ +class ACE_Medical_Defibrillation_DisconnectedState : ACE_Medical_Defibrillation_IDefibState +{ + //------------------------------------------------------------------------------------------------ + override void OnEnter(ACE_Medical_Defibrillation_DefibContext context) + { + super.OnEnter(context); + + // Play disconnected sound effect + Print("ACE_Medical_Defibrillation_DisconnectedState::OnEnter | State entered: disconnected"); + context.m_pDefibrillator.SetPatient(null); + context.m_pDefibrillator.GetDefibProgressData().ResetAll(); + } + + //------------------------------------------------------------------------------------------------ + override void OnUpdate(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + super.OnUpdate(context, timeSlice); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_IDefibState.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_IDefibState.c new file mode 100644 index 000000000..f15c2caa9 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/States/ACE_Medical_Defibrillation_IDefibState.c @@ -0,0 +1,29 @@ +class ACE_Medical_Defibrillation_IDefibState : ACE_FSM_IState +{ + protected static ACE_Medical_Defibrillation_Defibrillation_Settings s_pDefibrillationSettings; + protected ACE_Medical_CharacterContext m_pPatient; + + //------------------------------------------------------------------------------------------------ + void ACE_Medical_Defibrillation_IDefibState(ACE_FSM_EStateID id) + { + if (!s_pDefibrillationSettings) + s_pDefibrillationSettings = ACE_SettingsHelperT.GetModSettings(); + } + + //------------------------------------------------------------------------------------------------ + override void OnEnter(ACE_Medical_Defibrillation_DefibContext context) + { + super.OnEnter(context); + + context.m_pDefibrillator.GetDefibProgressData().ResetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.StateTimeElapsed); + } + + //------------------------------------------------------------------------------------------------ + override void OnUpdate(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + super.OnUpdate(context, timeSlice); + + // Update total time in state + context.m_pDefibrillator.GetDefibProgressData().ModifyTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.StateTimeElapsed, timeSlice, replicate : false); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_AnalysedStateTransition.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_AnalysedStateTransition.c new file mode 100644 index 000000000..a1f9302d0 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_AnalysedStateTransition.c @@ -0,0 +1,51 @@ +/* + Previous State: Analysing + Next State: Analysed + + Conditions: + - Must have a patient connected + + - Defibrillator Emulation Notes + - Manual: Cannot use this state +*/ + +class ACE_Medical_Defibrillation_AnalysedStateTransition : ACE_FSM_ITransition +{ + protected static ACE_Medical_Defibrillation_Defibrillation_Settings s_pDefibrillatorSettings; + + //------------------------------------------------------------------------------------------------ + void ACE_Medical_Defibrillation_IDefibState(ACE_FSM_EStateID fromStateIDs, ACE_FSM_EStateID toStateID) + { + if (!s_pDefibrillatorSettings) + s_pDefibrillatorSettings = ACE_SettingsHelperT.GetModSettings(); + } + + //------------------------------------------------------------------------------------------------ + override void OnPerform(ACE_Medical_Defibrillation_DefibContext context) + { + if (context.m_pDefibrillator.GetDefibrillatorEmulation() == ACE_Medical_Defibrillation_EDefibEmulation.Manual_NotImplimented) + return; + + Print("ACE_Medical_Defibrillation_AnalysedStateTransition::OnPerform | Entering state: Analysed"); + } + + //------------------------------------------------------------------------------------------------ + override bool ShouldBePerformed(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + if (context.m_pDefibrillator.GetDefibrillatorEmulation() == ACE_Medical_Defibrillation_EDefibEmulation.Manual_NotImplimented) + return false; + + if (!context.m_pDefibrillator.GetPatient()) + return false; + + float percentComplete = context.m_pDefibrillator.GetDefibProgressData().GetPercentComplete(ACE_Medical_Defibrillation_EDefibProgressCategory.Analysis); + if (percentComplete >= 1.0) + { + // Wait for no sound to be playing + if (!context.m_pDefibrillator.GetSoundComponent().IsPlaying()) + return true; + } + + return false; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_AnalysingStateTransition.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_AnalysingStateTransition.c new file mode 100644 index 000000000..98228dd45 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_AnalysingStateTransition.c @@ -0,0 +1,72 @@ +/* + Previous State: Connected + Next State: Analysed + + Conditions: + - Must have a patient connected + - Must not have a shock cooldown + - Must not be performing CPR + - Be in connected state for at least 2 seconds + + - Defibrillator Emulation Notes + - Manual: Cannot use this state +*/ + +class ACE_Medical_Defibrillation_AnalysingStateTransition : ACE_FSM_ITransition +{ + protected static ACE_Medical_Defibrillation_Defibrillation_Settings s_pDefibrillatorSettings; + + //------------------------------------------------------------------------------------------------ + void ACE_Medical_Defibrillation_IDefibState(ACE_FSM_EStateID fromStateIDs, ACE_FSM_EStateID toStateID) + { + if (!s_pDefibrillatorSettings) + s_pDefibrillatorSettings = ACE_SettingsHelperT.GetModSettings(); + } + + //------------------------------------------------------------------------------------------------ + override void OnPerform(ACE_Medical_Defibrillation_DefibContext context) + { + Print("ACE_Medical_Defibrillation_AnalysingStateTransition::OnPerform | Entering state: Analysing"); + } + + //------------------------------------------------------------------------------------------------ + override bool ShouldBePerformed(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + // Manual defib can't use this state + if (context.m_pDefibrillator.GetDefibrillatorEmulation() == ACE_Medical_Defibrillation_EDefibEmulation.Manual_NotImplimented) + return false; + + // Patient connected && no CPR is performed + IEntity patient = context.m_pDefibrillator.GetPatient(); + if (!patient) + return false; + ACE_Medical_VitalsComponent vitals = ACE_Medical_VitalsComponent.Cast(patient.FindComponent(ACE_Medical_VitalsComponent)); + if (vitals.IsCPRPerformed()) + { + if (context.m_pDefibrillator.m_pSounds.m_fPatientTouchTimer >= 3500 && + context.m_pDefibrillator.GetDefibProgressData().GetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown) == 0) + { + context.m_pDefibrillator.GetSoundComponent().PlaySound(ACE_Medical_Defibrillation_DefibSounds.SOUNDDONOTTOUCHPATIENT); + context.m_pDefibrillator.m_pSounds.m_fPatientTouchTimer = 0; + } + context.m_pDefibrillator.m_pSounds.m_fPatientTouchTimer += timeSlice; + return false; + } + else + { + context.m_pDefibrillator.m_pSounds.m_fPatientTouchTimer = 3500; + } + + // Defib in Connected state for at least 2 seconds + ACE_Medical_Defibrillation_DefibProgressData defibProgress = context.m_pDefibrillator.GetDefibProgressData(); + float cprCooldown = defibProgress.GetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.CPRCooldown); + if (cprCooldown > 0) + return false; + + float timeInState = defibProgress.GetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.StateTimeElapsed); + if (timeInState < 2000) + return false; + + return true; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_ChargedStateTransition.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_ChargedStateTransition.c new file mode 100644 index 000000000..bd6021cbd --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_ChargedStateTransition.c @@ -0,0 +1,42 @@ +/* + Previous State: Charging + Next State: Charged + + Conditions: + - Must have a patient connected + - Must have charge percentage >= 1 +*/ + +class ACE_Medical_Defibrillation_ChargedStateTransition : ACE_FSM_ITransition +{ + protected static ACE_Medical_Defibrillation_Defibrillation_Settings s_pDefibrillatorSettings; + + //------------------------------------------------------------------------------------------------ + void ACE_Medical_Defibrillation_IDefibState(ACE_FSM_EStateID fromStateIDs, ACE_FSM_EStateID toStateID) + { + if (!s_pDefibrillatorSettings) + s_pDefibrillatorSettings = ACE_SettingsHelperT.GetModSettings(); + } + + //------------------------------------------------------------------------------------------------ + override void OnPerform(ACE_Medical_Defibrillation_DefibContext context) + { + Print("ACE_Medical_Defibrillation_ChargedStateTransition::OnPerform | Entering state: Charged"); + } + + //------------------------------------------------------------------------------------------------ + override bool ShouldBePerformed(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + if (context.m_pDefibrillator.GetDefibrillatorEmulation() == ACE_Medical_Defibrillation_EDefibEmulation.Manual_NotImplimented) + return false; + + IEntity patient = context.m_pDefibrillator.GetPatient(); + if (!patient) + return false; + + if (context.m_pDefibrillator.GetDefibProgressData().GetPercentComplete(ACE_Medical_Defibrillation_EDefibProgressCategory.Charge) >= 1.0) + return true; + + return false; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_ChargingStateTransition.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_ChargingStateTransition.c new file mode 100644 index 000000000..454ea474b --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_ChargingStateTransition.c @@ -0,0 +1,45 @@ +/* + Previous State: Analysed + Next State: Charging + + Conditions: + - Must have a patient connected + - Must be in analysed state for at least 2 seconds (automated) + + - Defibrillator Emulation Notes + - Manual: Manually enters this state via action +*/ + +class ACE_Medical_Defibrillation_ChargingStateTransition : ACE_FSM_ITransition +{ + protected static ACE_Medical_Defibrillation_Defibrillation_Settings s_pDefibrillatorSettings; + + //------------------------------------------------------------------------------------------------ + void ACE_Medical_Defibrillation_IDefibState(ACE_FSM_EStateID fromStateIDs, ACE_FSM_EStateID toStateID) + { + if (!s_pDefibrillatorSettings) + s_pDefibrillatorSettings = ACE_SettingsHelperT.GetModSettings(); + } + + //------------------------------------------------------------------------------------------------ + override void OnPerform(ACE_Medical_Defibrillation_DefibContext context) + { + Print("ACE_Medical_Defibrillation_ChargingStateTransition::OnPerform | Entering state: Charging"); + } + + //------------------------------------------------------------------------------------------------ + override bool ShouldBePerformed(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + if (context.m_pDefibrillator.GetDefibrillatorEmulation() == ACE_Medical_Defibrillation_EDefibEmulation.Manual_NotImplimented) + return false; + + IEntity patient = context.m_pDefibrillator.GetPatient(); + if (!patient) + return false; + + if (context.m_pDefibrillator.GetDefibProgressData().GetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.StateTimeElapsed) >= 2.0) + return true; + + return false; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_ConnectedStateTransition.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_ConnectedStateTransition.c new file mode 100644 index 000000000..5b759a1a2 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_ConnectedStateTransition.c @@ -0,0 +1,40 @@ +/* + Previous State: Charged + Next State: Cooldown + + Conditions: + - Must have a patient connected + + - Defibrillator Emulation Notes + - Automated: Manually triggered via shock action +*/ + +class ACE_Medical_Defibrillation_ConnectedStateTransition : ACE_FSM_ITransition +{ + protected static ACE_Medical_Defibrillation_Defibrillation_Settings s_pDefibrillatorSettings; + + //------------------------------------------------------------------------------------------------ + void ACE_Medical_Defibrillation_IDefibState(ACE_FSM_EStateID fromStateIDs, ACE_FSM_EStateID toStateID) + { + if (!s_pDefibrillatorSettings) + s_pDefibrillatorSettings = ACE_SettingsHelperT.GetModSettings(); + } + + //------------------------------------------------------------------------------------------------ + override void OnPerform(ACE_Medical_Defibrillation_DefibContext context) + { + Print("ACE_Medical_Defibrillation_ConnectedStateTransition::OnPerform | Entering state: Connected"); + + context.m_pDefibrillator.GetSoundComponent().PlaySound(ACE_Medical_Defibrillation_DefibSounds.SOUNDCONNECTED); + } + + //------------------------------------------------------------------------------------------------ + override bool ShouldBePerformed(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + IEntity patient = context.m_pDefibrillator.GetPatient(); + if (!patient) + return false; + + return true; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_DisconnectedStateTransition.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_DisconnectedStateTransition.c new file mode 100644 index 000000000..fc290ecca --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/FSM/Transitions/ACE_Medical_Defibrillation_DisconnectedStateTransition.c @@ -0,0 +1,20 @@ +class ACE_Medical_Defibrillation_DisconnectedStateTransition : ACE_FSM_ITransition +{ + //------------------------------------------------------------------------------------------------ + override void OnPerform(ACE_Medical_Defibrillation_DefibContext context) + { + Print("ACE_Medical_Defibrillation_ConnectedStateTransition::OnPerform | Entering state: Connected"); + + context.m_pDefibrillator.GetSoundComponent().PlaySound(ACE_Medical_Defibrillation_DefibSounds.SOUNDDISCONNECTED); + } + + //------------------------------------------------------------------------------------------------ + override bool ShouldBePerformed(ACE_Medical_Defibrillation_DefibContext context, float timeSlice) + { + IEntity patient = context.m_pDefibrillator.GetPatient(); + if (!patient) + return true; + + return false; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_DiagTools.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_DiagTools.c new file mode 100644 index 000000000..0c7ee5243 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_DiagTools.c @@ -0,0 +1,73 @@ +#ifdef ENABLE_DIAG +class ACE_Medical_Defibrillation_DiagTools +{ + //------------------------------------------------------------------------------------------------ + static bool GetDiagTargetDefib(out IEntity target, out ACE_Medical_Defibrillation_DefibComponent defibComponent) + { + CameraManager cameraManager = GetGame().GetCameraManager(); + if (!cameraManager) + return false; + + CameraBase camera = cameraManager.CurrentCamera(); + if (!camera) + return false; + + target = IEntity.Cast(camera.GetCursorTarget()); + if (!target) + return false; + + defibComponent = ACE_Medical_Defibrillation_DefibComponent.Cast(target.FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + if (!defibComponent) + return false; + + return true; + } + + //------------------------------------------------------------------------------------------------ + static bool GetDiagNearestDefib(out IEntity target, out ACE_Medical_Defibrillation_DefibComponent defibComponent, float distance = 3) + { + IEntity player = GetGame().GetPlayerController().GetControlledEntity(); + if (!player) + return false; + + vector playerPos = player.GetOrigin(); + + ACE_Medical_Defibrillation_QueryNearestDefib query = new ACE_Medical_Defibrillation_QueryNearestDefib(distance); + target = query.GetEntity(playerPos); + if (!target) + return false; + + defibComponent = ACE_Medical_Defibrillation_DefibComponent.Cast(target.FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + if (!defibComponent) + return false; + + return true; + } + + //------------------------------------------------------------------------------------------------ + static float GetReviveChanceShockBonus(IEntity target) + { + SCR_ChimeraCharacter char = SCR_ChimeraCharacter.Cast(target); + if (!char) + return -1; + + ACE_Medical_CharacterContext context = new ACE_Medical_CharacterContext(char); + ACE_Medical_ReviveTransition transition = new ACE_Medical_ReviveTransition(ACE_Medical_EVitalStateID.ANY, ACE_Medical_EVitalStateID.ANY); + + return transition.ComputeReviveChanceShockBonus(context); + } + + //------------------------------------------------------------------------------------------------ + static float GetReviveChance(IEntity target) + { + SCR_ChimeraCharacter char = SCR_ChimeraCharacter.Cast(target); + if (!char) + return -1; + + ACE_Medical_CharacterContext context = new ACE_Medical_CharacterContext(char); + ACE_Medical_ReviveTransition transition = new ACE_Medical_ReviveTransition(ACE_Medical_EVitalStateID.ANY, ACE_Medical_EVitalStateID.ANY); + + return transition.ComputeReviveChance(context); + } +} +#endif \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_GlobalHelpers.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_GlobalHelpers.c new file mode 100644 index 000000000..350a83fa4 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_GlobalHelpers.c @@ -0,0 +1,23 @@ +class ACE_Medical_Defibrillation_GlobalHelpers +{ + static ACE_Medical_NetworkComponent GetMedicalNetworkComponent(notnull SCR_ChimeraCharacter char) + { + PlayerManager playerMgr = GetGame().GetPlayerManager(); + if (!playerMgr) + return null; + + int charId = playerMgr.GetPlayerIdFromControlledEntity(char); + if (charId == 0) + return null; + + SCR_PlayerController controller = SCR_PlayerController.Cast(playerMgr.GetPlayerController(charId)); + if (!controller) + return null; + + ACE_Medical_NetworkComponent networkComponent = ACE_Medical_NetworkComponent.Cast(controller.FindComponent(ACE_Medical_NetworkComponent)); + if (!networkComponent) + return null; + + return networkComponent; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_QueryNearestDefib.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_QueryNearestDefib.c new file mode 100644 index 000000000..677f462ab --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_QueryNearestDefib.c @@ -0,0 +1,52 @@ +class ACE_Medical_Defibrillation_QueryNearestDefib : ACE_QueryNearestEntity +{ + //------------------------------------------------------------------------------------------------ + //! Pass search radius in ctor + void ACE_Medical_Defibrillation_QueryNearestDefib(float searchDistance = 50) + { + m_fSearchDistanceM = searchDistance; + } + + //------------------------------------------------------------------------------------------------ + //! Store entity if it is the closest + override protected bool QueryCallback(IEntity entity) + { + if (!entity) + return true; + ACE_Medical_Defibrillation_DefibComponent defibrillatorComponent = ACE_Medical_Defibrillation_DefibComponent.Cast(entity.FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + if (!defibrillatorComponent) + return true; + + float distance = vector.Distance(m_vSearchPos, entity.GetOrigin()); + + if (m_fShortestDistanceM > distance) + { + m_fShortestDistanceM = distance; + m_pNearestEntity = entity; + } + + // Continue querying if distance didn't drop to zero + return (m_fShortestDistanceM != 0); + } + + //------------------------------------------------------------------------------------------------ + //! Return nearest entity + override IEntity GetEntity(vector pos) + { + m_vSearchPos = pos; + m_fShortestDistanceM = m_fSearchDistanceM; + m_pNearestEntity = null; + GetGame().GetWorld().QueryEntitiesBySphere(m_vSearchPos, m_fSearchDistanceM, QueryCallback); + + if (!m_pNearestEntity) + return null; + ACE_Medical_Defibrillation_DefibComponent defibrillatorComponent = ACE_Medical_Defibrillation_DefibComponent.Cast(m_pNearestEntity.FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + if (!defibrillatorComponent) + return null; + + EntityPrefabData prefabData = m_pNearestEntity.GetPrefabData(); + ResourceName prefabName = prefabData.GetPrefabName(); + PrintFormat("%1::QueryCallback | Defib found! %2", this.ClassName(), prefabName); + return m_pNearestEntity; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_QueryNearestPatient.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_QueryNearestPatient.c new file mode 100644 index 000000000..b16835aef --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_QueryNearestPatient.c @@ -0,0 +1,28 @@ +class ACE_Medical_Defibrillation_QueryNearestPatient : ACE_QueryNearestEntity +{ + //------------------------------------------------------------------------------------------------ + //! Store entity if it is the closest + override protected bool QueryCallback(IEntity entity) + { + super.QueryCallback(entity); + + ACE_Medical_VitalsComponent vitalsComponent = ACE_Medical_VitalsComponent.Cast(m_pNearestEntity.FindComponent(ACE_Medical_VitalsComponent)); + if (!vitalsComponent) + return false; + + return true; + } + + //------------------------------------------------------------------------------------------------ + //! Return nearest entity + override IEntity GetEntity(vector pos) + { + super.GetEntity(pos); + + ACE_Medical_VitalsComponent vitalsComponent = ACE_Medical_VitalsComponent.Cast(m_pNearestEntity.FindComponent(ACE_Medical_VitalsComponent)); + if (!vitalsComponent) + return null; + + return m_pNearestEntity; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_ReplicationHelper.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_ReplicationHelper.c new file mode 100644 index 000000000..f46fa6a29 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Helpers/ACE_Medical_Defibrillation_ReplicationHelper.c @@ -0,0 +1,30 @@ +class ACE_Medical_Defibrillation_ReplicationHelper +{ + static IEntity GetEntityByRplId(RplId id) + { + if (!id.IsValid()) + return null; + + Managed instance = Replication.FindItem(id); + if (!instance) + return null; + + RplComponent rplComponent = RplComponent.Cast(instance); + if (rplComponent) + return rplComponent.GetEntity(); + + return IEntity.Cast(instance); + } + + static RplId GetRplIdByEntity(IEntity entity) + { + if (!entity) + return RplId.Invalid(); + + RplComponent rplComponent = RplComponent.Cast(entity.FindComponent(RplComponent)); + if (!rplComponent) + return RplId.Invalid(); + + return rplComponent.Id(); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Mission/ACE_MissionHeaderSettings.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Mission/ACE_MissionHeaderSettings.c new file mode 100644 index 000000000..7debc8a57 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Mission/ACE_MissionHeaderSettings.c @@ -0,0 +1,18 @@ +//------------------------------------------------------------------------------------------------ +//! Add mod settings to mission header +[BaseContainerProps()] +modded class ACE_MissionHeaderSettings +{ + [Attribute()] + protected ref ACE_Medical_Defibrillation_Defibrillation_Settings m_ACE_Medical_Defibrillation; + + //------------------------------------------------------------------------------------------------ + //! Applies settings from mission header to config + override void ApplyToSettingsConfig(notnull ACE_SettingsConfig config) + { + super.ApplyToSettingsConfig(config); + + if (m_ACE_Medical_Defibrillation) + config.SetModSettings(m_ACE_Medical_Defibrillation); + } +} diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_CardiacArrestState.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_CardiacArrestState.c new file mode 100644 index 000000000..f72542735 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_CardiacArrestState.c @@ -0,0 +1,24 @@ +modded class ACE_Medical_CardiacArrestState +{ + //------------------------------------------------------------------------------------------------ + override protected ACE_Medical_Defibrillation_ECardiacRhythm ComputeCardiacRhythm(ACE_Medical_CharacterContext context, float timeSlice) + { + float hemIV = context.m_pBloodHitZone.GetDamageStateThreshold(ACE_Medical_EBloodState.CLASS_4_HEMORRHAGE); + float hemII = context.m_pBloodHitZone.GetDamageStateThreshold(ACE_Medical_EBloodState.CLASS_2_HEMORRHAGE); + float currentHealthScaled = context.m_pBloodHitZone.GetHealthScaled(); + + if (context.m_pVitals.IsCPRPerformed()) + return ACE_Medical_Defibrillation_ECardiacRhythm.Unknown; + + if (currentHealthScaled <= hemIV) + { + return ACE_Medical_Defibrillation_ECardiacRhythm.PEA; + } + else + { + return ACE_Medical_Defibrillation_ECardiacRhythm.VF; + } + + return ACE_Medical_Defibrillation_ECardiacRhythm.Unknown; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_IVitalState.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_IVitalState.c new file mode 100644 index 000000000..ae4dd7d08 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_IVitalState.c @@ -0,0 +1,29 @@ +modded class ACE_Medical_IVitalState +{ + //------------------------------------------------------------------------------------------------ + override void OnUpdate(ACE_Medical_CharacterContext context, float timeSlice) + { + super.OnUpdate(context, timeSlice); + context.m_pVitals.SetCardiacRhythm(ComputeCardiacRhythm(context, timeSlice)); + } + + //------------------------------------------------------------------------------------------------ + protected ACE_Medical_Defibrillation_ECardiacRhythm ComputeCardiacRhythm(ACE_Medical_CharacterContext context, float timeSlice) + { + float hr = context.m_pVitals.GetHeartRate(); + + if (context.m_pVitals.IsCPRPerformed()) + return ACE_Medical_Defibrillation_ECardiacRhythm.Unknown; + + if (hr >= 0 && hr < 60) + return ACE_Medical_Defibrillation_ECardiacRhythm.Bradycardia; + + if (hr >= 60 && hr <= 100) + return ACE_Medical_Defibrillation_ECardiacRhythm.Sinus; + + if (hr > 100) + return ACE_Medical_Defibrillation_ECardiacRhythm.Tachycardia; + + return ACE_Medical_Defibrillation_ECardiacRhythm.Unknown; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_NetworkComponent.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_NetworkComponent.c new file mode 100644 index 000000000..a8be48636 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_NetworkComponent.c @@ -0,0 +1,46 @@ +modded class ACE_Medical_NetworkComponent +{ + //------------------------------------------------------------------------------------------------ + void RequestDefibNotification(ENotification type, SCR_ChimeraCharacter patient = null) + { + Rpc(RpcAsk_GetDefibNotification, + type, + ACE_Medical_Defibrillation_ReplicationHelper.GetRplIdByEntity(patient) + ); + } + + //------------------------------------------------------------------------------------------------ + [RplRpc(RplChannel.Reliable, RplRcver.Server)] + protected void RpcAsk_GetDefibNotification(ENotification type, RplId patientId) + { + SCR_PlayerController ownerPlayerController = SCR_PlayerController.Cast(GetOwner()); + + // TODO: In future, add patient data to message + switch (type) + { + case ENotification.ACE_MEDICAL_DEFIBRILLATION_UNABLETOCONNECT: + { + SCR_NotificationsComponent.SendToPlayer(ownerPlayerController.GetPlayerId(), type); + break; + } + + case ENotification.ACE_MEDICAL_DEFIBRILLATION_CONNECTED: + { + SCR_NotificationsComponent.SendToPlayer(ownerPlayerController.GetPlayerId(), type); + break; + } + + case ENotification.ACE_MEDICAL_DEFIBRILLATION_DISCONNECTED: + { + SCR_NotificationsComponent.SendToPlayer(ownerPlayerController.GetPlayerId(), type); + break; + } + + case ENotification.ACE_MEDICAL_DEFIBRILLATION_SHOCKDELIVERED: + { + SCR_NotificationsComponent.SendToPlayer(ownerPlayerController.GetPlayerId(), type); + break; + } + } + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_ResuscitationState.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_ResuscitationState.c new file mode 100644 index 000000000..fe508d585 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_ResuscitationState.c @@ -0,0 +1,8 @@ +modded class ACE_Medical_ResuscitationState +{ + //------------------------------------------------------------------------------------------------ + override protected ACE_Medical_Defibrillation_ECardiacRhythm ComputeCardiacRhythm(ACE_Medical_CharacterContext context, float timeSlice) + { + return ACE_Medical_Defibrillation_ECardiacRhythm.Unknown; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_ReviveTransition.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_ReviveTransition.c new file mode 100644 index 000000000..cf7ca8ff1 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_ReviveTransition.c @@ -0,0 +1,50 @@ +modded class ACE_Medical_ReviveTransition +{ + protected static ACE_Medical_Defibrillation_Defibrillation_Settings s_pDefibSettings; + + //------------------------------------------------------------------------------------------------ + void ACE_Medical_ReviveTransition(ACE_FSM_EStateID fromStateIDs, ACE_FSM_EStateID toStateID) + { + if (!s_pDefibSettings) + s_pDefibSettings = ACE_SettingsHelperT.GetModSettings(); + } + + //------------------------------------------------------------------------------------------------ + float ComputeReviveChanceShockBonus(ACE_Medical_CharacterContext context) + { + float maxBonus = 0.3; + ACE_Medical_Defibrillation_Defibrillation_Settings defibSettings = ACE_SettingsHelperT.GetModSettings(); + if (defibSettings) + { + maxBonus = defibSettings.m_fMaxReviveChanceBonus; + } + + int shocks = context.m_pVitals.GetShocksDelivered(); + + float bonusMultiplier = 1.0 - Math.Pow(0.5, shocks); + float bonus = maxBonus * bonusMultiplier; + + return bonus; + } + + //------------------------------------------------------------------------------------------------ + override float ComputeReviveChance(ACE_Medical_CharacterContext context) + { + ACE_Medical_Defibrillation_Defibrillation_Settings defibSettings = ACE_SettingsHelperT.GetModSettings(); + + float result = super.ComputeReviveChance(context); + + bool isDefibMandatory = s_pDefibSettings.m_bDefibIsMandatory; + int shocks = context.m_pVitals.GetShocksDelivered(); + + if (isDefibMandatory && shocks == 0) + result = 0; + else + { + result += ComputeReviveChanceShockBonus(context); + result = Math.Min(result, 1.0); + } + + return result; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_VitalStatesSystem.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_VitalStatesSystem.c new file mode 100644 index 000000000..21305aa15 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_VitalStatesSystem.c @@ -0,0 +1,37 @@ +modded class ACE_Medical_VitalStatesSystem +{ +#ifdef ENABLE_DIAG + //------------------------------------------------------------------------------------------------ + //! Show vitals for target entity + override void OnDiag(float timeSlice) + { + super.OnDiag(timeSlice); + + IEntity target; + string targetType; + if (!ACE_DiagTools.GetDiagTargetCharacter(target, targetType)) + return; + + ACE_Medical_VitalsComponent component = ACE_Medical_VitalsComponent.Cast(target.FindComponent(ACE_Medical_VitalsComponent)); + if (!component) + return; + + SCR_CharacterDamageManagerComponent damageManager = SCR_CharacterDamageManagerComponent.Cast(target.FindComponent(SCR_CharacterDamageManagerComponent)); + if (!damageManager) + return; + + DbgUI.Begin(string.Format("ACE Defibrillation: (%1)", targetType), 0, 500); + DbgUI.Text(string.Format("Cardiac Rhythm: %1", SCR_Enum.GetEnumName(ACE_Medical_Defibrillation_ECardiacRhythm, component.GetCardiacRhythm()))); + DbgUI.Text(string.Format("Shocks Delivered: %1", component.GetShocksDelivered())); + DbgUI.Text(string.Format("Revive Chance Bonus: %1", ACE_Medical_Defibrillation_DiagTools.GetReviveChanceShockBonus(target))); + + DbgUI.Spacer(10); + + float reviveChance = ACE_Medical_Defibrillation_DiagTools.GetReviveChance(target); + DbgUI.Text(string.Format("Revive Chance: %1", reviveChance)); + DbgUI.PlotLiveClamped("Revive Chance", 500, 200, reviveChance, 0, 1, 100, 1000); + + DbgUI.End(); + } +#endif +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_VitalsComponent.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_VitalsComponent.c new file mode 100644 index 000000000..488259ccb --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ACE_Medical_VitalsComponent.c @@ -0,0 +1,42 @@ +modded class ACE_Medical_VitalsComponent +{ + protected ACE_Medical_Defibrillation_ECardiacRhythm m_eCardiacRhythm = ACE_Medical_Defibrillation_ECardiacRhythm.Unknown; + protected int m_iShocksDelivered = 0; + + //------------------------------------------------------------------------------------------------ + void SetCardiacRhythm(ACE_Medical_Defibrillation_ECardiacRhythm rhythm) + { + m_eCardiacRhythm = rhythm; + } + + //------------------------------------------------------------------------------------------------ + ACE_Medical_Defibrillation_ECardiacRhythm GetCardiacRhythm() + { + return m_eCardiacRhythm; + } + + //------------------------------------------------------------------------------------------------ + void SetShocksDelivered(int value) + { + m_iShocksDelivered = value; + } + + //------------------------------------------------------------------------------------------------ + void ModifyShocksDelivered(int value) + { + m_iShocksDelivered += value; + } + + //------------------------------------------------------------------------------------------------ + int GetShocksDelivered() + { + return m_iShocksDelivered; + } + + //------------------------------------------------------------------------------------------------ + override void OnRevived() + { + super.OnRevived(); + m_iShocksDelivered = 0; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ENotification.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ENotification.c new file mode 100644 index 000000000..7886ceb2e --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Modded/ENotification.c @@ -0,0 +1,7 @@ +modded enum ENotification +{ + ACE_MEDICAL_DEFIBRILLATION_CONNECTED, + ACE_MEDICAL_DEFIBRILLATION_DISCONNECTED, + ACE_MEDICAL_DEFIBRILLATION_SHOCKDELIVERED, + ACE_MEDICAL_DEFIBRILLATION_UNABLETOCONNECT +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Settings/ACE_Medical_Defibrillation_Settings.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Settings/ACE_Medical_Defibrillation_Settings.c new file mode 100644 index 000000000..214e06e00 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Settings/ACE_Medical_Defibrillation_Settings.c @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------------------------ +[BaseContainerProps()] +class ACE_Medical_Defibrillation_Defibrillation_Settings : ACE_ModSettings +{ + [Attribute(defvalue: "true", desc: "Enables the defibrillation system.")] + bool m_bEnabled; + + [Attribute(defvalue: "false", desc: "Defibrillation is mandatory for revive.")] + bool m_bDefibIsMandatory; + + [Attribute(defvalue: "0.3", desc: "Max bonus to revive chance per successful shock.")] + float m_fMaxReviveChanceBonus; + + [Attribute(defvalue: "10.0", desc: "Time (s) spent stunned when touching patient during shock.", params: "0 inf")] + float m_fContactShockStunDuration; + + //------------------------------------------------------------------------------------------------ + override void Init() + { + m_fContactShockStunDuration = m_fContactShockStunDuration * 1000; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Systems/ACE_Medical_Defibrillation_DefibStatesSystem.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Systems/ACE_Medical_Defibrillation_DefibStatesSystem.c new file mode 100644 index 000000000..b46fd1250 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/Systems/ACE_Medical_Defibrillation_DefibStatesSystem.c @@ -0,0 +1,140 @@ +//------------------------------------------------------------------------------------------------ +class ACE_Medical_Defibrillation_DefibStatesSystem : GameSystem +{ + [Attribute()] + protected ref ACE_Medical_Defibrillation_DefibStates_JobScheduler m_pScheduler; + + protected ACE_Medical_Defibrillation_Defibrillation_Settings m_pSettings; + + //------------------------------------------------------------------------------------------------ + static ACE_Medical_Defibrillation_DefibStatesSystem GetInstance(ChimeraWorld world) + { + return ACE_Medical_Defibrillation_DefibStatesSystem.Cast(world.FindSystem(ACE_Medical_Defibrillation_DefibStatesSystem)); + } + + //------------------------------------------------------------------------------------------------ + override static void InitInfo(WorldSystemInfo outInfo) + { + super.InitInfo(outInfo); + outInfo.SetAbstract(false) + .SetUnique(true) + .SetLocation(WorldSystemLocation.Server) + .AddPoint(WorldSystemPoint.Frame); + } + + //------------------------------------------------------------------------------------------------ + override protected void OnInit() + { + m_pSettings = ACE_SettingsHelperT.GetModSettings(); + m_pScheduler.OnInit(CreateTemplateJob()); + + ACE_FrameJobSystem jobManager = ACE_FrameJobSystem.GetInstance(); + if (jobManager) + jobManager.Register(m_pScheduler, ESystemPoint.Frame); + } + + //------------------------------------------------------------------------------------------------ + protected ACE_Medical_Defibrillation_DefibStateMachine CreateTemplateJob() + { + ACE_Medical_Defibrillation_DefibStateMachine machine = new ACE_Medical_Defibrillation_DefibStateMachine(); + + machine.AddState(new ACE_Medical_Defibrillation_DisconnectedState(ACE_Medical_Defibrillation_EDefibStateID.DISCONNECTED)); + machine.AddState(new ACE_Medical_Defibrillation_ConnectedState(ACE_Medical_Defibrillation_EDefibStateID.CONNECTED)); + machine.AddState(new ACE_Medical_Defibrillation_AnalysingState(ACE_Medical_Defibrillation_EDefibStateID.ANALYSING)); + machine.AddState(new ACE_Medical_Defibrillation_AnalysedState(ACE_Medical_Defibrillation_EDefibStateID.ANALYSED)); + machine.AddState(new ACE_Medical_Defibrillation_ChargingState(ACE_Medical_Defibrillation_EDefibStateID.CHARGING)); + machine.AddState(new ACE_Medical_Defibrillation_ChargedState(ACE_Medical_Defibrillation_EDefibStateID.CHARGED)); + + machine.AddTransition(new ACE_Medical_Defibrillation_AnalysedStateTransition( + fromStateIDs: ACE_Medical_Defibrillation_EDefibStateID.ANALYSING, + toStateID: ACE_Medical_Defibrillation_EDefibStateID.ANALYSED + )); + machine.AddTransition(new ACE_Medical_Defibrillation_AnalysingStateTransition( + fromStateIDs: ACE_Medical_Defibrillation_EDefibStateID.CONNECTED, + toStateID: ACE_Medical_Defibrillation_EDefibStateID.ANALYSING + )); + machine.AddTransition(new ACE_Medical_Defibrillation_ChargedStateTransition( + fromStateIDs: ACE_Medical_Defibrillation_EDefibStateID.CHARGING, + toStateID: ACE_Medical_Defibrillation_EDefibStateID.CHARGED + )); + machine.AddTransition(new ACE_Medical_Defibrillation_ChargingStateTransition( + fromStateIDs: ACE_Medical_Defibrillation_EDefibStateID.ANALYSED, + toStateID: ACE_Medical_Defibrillation_EDefibStateID.CHARGING + )); + machine.AddTransition(new ACE_Medical_Defibrillation_ConnectedStateTransition( + fromStateIDs: ACE_Medical_Defibrillation_EDefibStateID.DISCONNECTED, + toStateID: ACE_Medical_Defibrillation_EDefibStateID.CONNECTED + )); + + machine.AddTransition(new ACE_Medical_Defibrillation_DisconnectedStateTransition( + fromStateIDs: ACE_Medical_Defibrillation_EDefibStateID.CONNECTED, + toStateID: ACE_Medical_Defibrillation_EDefibStateID.DISCONNECTED + )); + machine.AddTransition(new ACE_Medical_Defibrillation_DisconnectedStateTransition( + fromStateIDs: ACE_Medical_Defibrillation_EDefibStateID.ANALYSING, + toStateID: ACE_Medical_Defibrillation_EDefibStateID.DISCONNECTED + )); + machine.AddTransition(new ACE_Medical_Defibrillation_DisconnectedStateTransition( + fromStateIDs: ACE_Medical_Defibrillation_EDefibStateID.ANALYSED, + toStateID: ACE_Medical_Defibrillation_EDefibStateID.DISCONNECTED + )); + machine.AddTransition(new ACE_Medical_Defibrillation_DisconnectedStateTransition( + fromStateIDs: ACE_Medical_Defibrillation_EDefibStateID.CHARGING, + toStateID: ACE_Medical_Defibrillation_EDefibStateID.DISCONNECTED + )); + machine.AddTransition(new ACE_Medical_Defibrillation_DisconnectedStateTransition( + fromStateIDs: ACE_Medical_Defibrillation_EDefibStateID.CHARGED, + toStateID: ACE_Medical_Defibrillation_EDefibStateID.DISCONNECTED + )); + + machine.UpdateTransitionTable(); + return machine; + } + + //------------------------------------------------------------------------------------------------ + void Register(notnull IEntity defib) + { + m_pScheduler.Register(defib); + } + + //------------------------------------------------------------------------------------------------ + void Unregister(IEntity defib) + { + m_pScheduler.Unregister(defib); + } + +#ifdef ENABLE_DIAG + // TODO: Add DIAG + //------------------------------------------------------------------------------------------------ + override void OnDiag(float timeSlice) + { + super.OnDiag(timeSlice); + + DbgUI.Begin(string.Format("ACE_Medical_Defibrillation_DefibStatesSystem")); + DbgUI.Text("Total Active Defibrillators: " + m_pScheduler.GetJobs().Count()); + + IEntity target; + ACE_Medical_Defibrillation_DefibComponent defibComponent; + string targetType = "Camera Target"; + + if (!ACE_Medical_Defibrillation_DiagTools.GetDiagTargetDefib(target, defibComponent)) + { + float distance = 3; + ACE_Medical_Defibrillation_DiagTools.GetDiagNearestDefib(target, defibComponent, distance); + targetType = string.Format("Nearest Defib (%1m)", distance); + } + + if (!defibComponent) + return; + + DbgUI.Spacer(10); + DbgUI.Text(string.Format("Target Type: %1", targetType)); + DbgUI.Text(string.Format("Connected Patient: %1", defibComponent.GetPatient())); + DbgUI.Text(string.Format("Current State: %1", SCR_Enum.GetEnumName(ACE_Medical_Defibrillation_EDefibStateID, defibComponent.GetDefibStateID()))); + DbgUI.Text(string.Format("Time In State: %1", defibComponent.GetDefibProgressData().GetTimer(ACE_Medical_Defibrillation_EDefibProgressCategory.StateTimeElapsed) / 1000)); + DbgUI.Text(string.Format("Analysis Percent: %1", defibComponent.GetDefibProgressData().GetPercentComplete(ACE_Medical_Defibrillation_EDefibProgressCategory.Analysis))); + DbgUI.Text(string.Format("Charge Percent: %1", defibComponent.GetDefibProgressData().GetPercentComplete(ACE_Medical_Defibrillation_EDefibProgressCategory.Charge))); + DbgUI.End(); + } +#endif +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/UserActions/ACE_Medical_Defibrillation_UserAction_DefibConnect.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/UserActions/ACE_Medical_Defibrillation_UserAction_DefibConnect.c new file mode 100644 index 000000000..f88a2e1fa --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/UserActions/ACE_Medical_Defibrillation_UserAction_DefibConnect.c @@ -0,0 +1,114 @@ +class ACE_Medical_Defibrillation_UserActions_DefibConnect : ScriptedUserAction +{ + protected float m_fLastUpdateTime; + + protected const float UPDATERATE = 500; + + protected IEntity m_pNearestDefib; + + //------------------------------------------------------------------------------------------------ + //! Make the action server only + //------------------------------------------------------------------------------------------------ + override bool CanBroadcastScript() { return false; } + override bool HasLocalEffectOnlyScript() { return false; } + + //------------------------------------------------------------------------------------------------ + override void Init(IEntity pOwnerEntity, GenericComponent pManagerComponent) + { + super.Init(pOwnerEntity, pManagerComponent); + + World world = GetGame().GetWorld(); + if (!world) + return; + + m_fLastUpdateTime = world.GetWorldTime(); + } + + //------------------------------------------------------------------------------------------------ + override bool CanBeShownScript(IEntity user) + { + super.CanBeShownScript(user); + + if (!CanExecuteThisTick()) + return (m_pNearestDefib && !PriorDefibFound()); + + ACE_Medical_Defibrillation_QueryNearestDefib query = new ACE_Medical_Defibrillation_QueryNearestDefib(3); + m_pNearestDefib = null; + m_pNearestDefib = query.GetEntity(GetOwner().GetOrigin()); + if (!m_pNearestDefib) + { + return false; + } + + ACE_Medical_Defibrillation_DefibComponent defibComponent = ACE_Medical_Defibrillation_DefibComponent.Cast(m_pNearestDefib.FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + if (!defibComponent) + return false; + + IEntity patient = defibComponent.GetPatient(); + if (patient) + { + return false; + } + + return true; + } + + //------------------------------------------------------------------------------------------------ + override void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity) + { + if (!Replication.IsServer()) + return; + + ACE_Medical_Defibrillation_QueryNearestDefib query = new ACE_Medical_Defibrillation_QueryNearestDefib(3); + m_pNearestDefib = null; + m_pNearestDefib = query.GetEntity(GetOwner().GetOrigin()); + if (!m_pNearestDefib) + return; + + ACE_Medical_Defibrillation_DefibComponent defibComponent = ACE_Medical_Defibrillation_DefibComponent.Cast(m_pNearestDefib.FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + if (!defibComponent) + return; + + ACE_Medical_NetworkComponent networkComponent = ACE_Medical_Defibrillation_GlobalHelpers.GetMedicalNetworkComponent(SCR_ChimeraCharacter.Cast(pUserEntity)); + if (!networkComponent) + return; + + if (defibComponent.SetPatient(pOwnerEntity)) + { + networkComponent.RequestDefibNotification(ENotification.ACE_MEDICAL_DEFIBRILLATION_CONNECTED, SCR_ChimeraCharacter.Cast(pOwnerEntity)); + } + else + { + networkComponent.RequestDefibNotification(ENotification.ACE_MEDICAL_DEFIBRILLATION_UNABLETOCONNECT, SCR_ChimeraCharacter.Cast(pOwnerEntity)); + } + } + + //------------------------------------------------------------------------------------------------ + protected bool CanExecuteThisTick() + { + float currentTime = GetGame().GetWorld().GetWorldTime(); + + if (m_fLastUpdateTime + UPDATERATE > currentTime) + return false; + + m_fLastUpdateTime = currentTime; + return true; + } + + //------------------------------------------------------------------------------------------------ + protected bool PriorDefibFound() + { + if (!m_pNearestDefib) + return false; + + ACE_Medical_Defibrillation_DefibComponent defibComponent = ACE_Medical_Defibrillation_DefibComponent.Cast(m_pNearestDefib.FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + if (!defibComponent) + return false; + + IEntity patient = defibComponent.GetPatient(); + if (!patient) + return false; + + return true; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/UserActions/ACE_Medical_Defibrillation_UserAction_DefibDisconnect.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/UserActions/ACE_Medical_Defibrillation_UserAction_DefibDisconnect.c new file mode 100644 index 000000000..651a2cc93 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/UserActions/ACE_Medical_Defibrillation_UserAction_DefibDisconnect.c @@ -0,0 +1,49 @@ +class ACE_Medical_Defibrillation_UserAction_DefibDisconnect : ScriptedUserAction +{ + //------------------------------------------------------------------------------------------------ + override void Init(IEntity pOwnerEntity, GenericComponent pManagerComponent) + { + super.Init(pOwnerEntity, pManagerComponent); + + World world = GetGame().GetWorld(); + if (!world) + return; + } + + //------------------------------------------------------------------------------------------------ + override bool CanBeShownScript(IEntity user) + { + super.CanBeShownScript(user); + + ACE_Medical_Defibrillation_DefibComponent defibComponent = ACE_Medical_Defibrillation_DefibComponent.Cast(GetOwner().FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + if (!defibComponent) + return false; + + IEntity patient = defibComponent.GetPatient(); + if (!patient) + { + return false; + } + + return true; + } + + //------------------------------------------------------------------------------------------------ + override void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity) + { + if (!Replication.IsServer()) + return; + + ACE_Medical_Defibrillation_DefibComponent defibComponent = ACE_Medical_Defibrillation_DefibComponent.Cast(GetOwner().FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + if (!defibComponent) + return; + + defibComponent.ResetPatient(); + + ACE_Medical_NetworkComponent networkComponent = ACE_Medical_Defibrillation_GlobalHelpers.GetMedicalNetworkComponent(SCR_ChimeraCharacter.Cast(pUserEntity)); + if (!networkComponent) + return; + + networkComponent.RequestDefibNotification(ENotification.ACE_MEDICAL_DEFIBRILLATION_DISCONNECTED, SCR_ChimeraCharacter.Cast(pOwnerEntity)); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/UserActions/ACE_Medical_Defibrillation_UserAction_DefibPickup.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/UserActions/ACE_Medical_Defibrillation_UserAction_DefibPickup.c new file mode 100644 index 000000000..5d980a13b --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/UserActions/ACE_Medical_Defibrillation_UserAction_DefibPickup.c @@ -0,0 +1,19 @@ +class ACE_Medical_Defibrillation_UserAction_DefibPickup : SCR_PickUpItemAction +{ + //------------------------------------------------------------------------------------------------ + override void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity) + { + if (Replication.IsServer()) + { + ACE_Medical_Defibrillation_DefibComponent defibComponent = ACE_Medical_Defibrillation_DefibComponent.Cast(GetOwner().FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + if (!defibComponent) + return; + + defibComponent.ResetPatient(); + // Unsubscribe from system + defibComponent.GetDefibStatesSystem().Unregister(pOwnerEntity); + } + + super.PerformAction(pOwnerEntity, pUserEntity); + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/UserActions/ACE_Medical_Defibrillation_UserAction_DefibShock.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/UserActions/ACE_Medical_Defibrillation_UserAction_DefibShock.c new file mode 100644 index 000000000..111d52b17 --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/UserActions/ACE_Medical_Defibrillation_UserAction_DefibShock.c @@ -0,0 +1,42 @@ +class ACE_Medical_Defibrillation_UserActions_DefibShock : ScriptedUserAction +{ + //------------------------------------------------------------------------------------------------ + override bool CanBeShownScript(IEntity user) + { + super.CanBeShownScript(user); + + ACE_Medical_Defibrillation_DefibComponent defibComponent = ACE_Medical_Defibrillation_DefibComponent.Cast(GetOwner().FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + if (!defibComponent) + return false; + + if (!defibComponent.GetPatient()) + return false; + + if (defibComponent.GetDefibStateID() != ACE_Medical_Defibrillation_EDefibStateID.CHARGED) + return false; + + return true; + } + + //------------------------------------------------------------------------------------------------ + override void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity) + { + if (!Replication.IsServer()) + return; + + ACE_Medical_Defibrillation_DefibComponent defibComponent = ACE_Medical_Defibrillation_DefibComponent.Cast(GetOwner().FindComponent(ACE_Medical_Defibrillation_DefibComponent)); + if (!defibComponent) + return; + + if (defibComponent.ShockPatient()) + { + ACE_Medical_NetworkComponent networkComponent = ACE_Medical_Defibrillation_GlobalHelpers.GetMedicalNetworkComponent(SCR_ChimeraCharacter.Cast(pUserEntity)); + if (!networkComponent) + return; + + networkComponent.RequestDefibNotification(ENotification.ACE_MEDICAL_DEFIBRILLATION_SHOCKDELIVERED, SCR_ChimeraCharacter.Cast(pOwnerEntity)); + } + + return; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/tmp/ACE_Medical_Defibrillation_DefibStates_JobScheduler.c b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/tmp/ACE_Medical_Defibrillation_DefibStates_JobScheduler.c new file mode 100644 index 000000000..9515a478c --- /dev/null +++ b/addons/medical_defibrillation/scripts/Game/ACE_Medical_Defibrillation/tmp/ACE_Medical_Defibrillation_DefibStates_JobScheduler.c @@ -0,0 +1,169 @@ +//------------------------------------------------------------------------------------------------ +//! Manual template initialized copy of +//! ACE_TemplateFrameJobScheduler +//! as workaround for: +//! - https://feedback.bistudio.com/T193122 +//! - https://feedback.bistudio.com/ +[BaseContainerProps()] +class ACE_Medical_Defibrillation_DefibStates_JobScheduler : ACE_IFrameJob +{ + [Attribute(defvalue: "100", desc: "Approximate update timeout for a particular object [ms]", params: "0, 100")] + protected int m_fObjectUpdateTimeoutMS; + + [Attribute(defvalue: "10", desc: "Maximum number of entities to be updated per frame")] + protected int m_iMaxIterationsPerFrame; + + protected ref ACE_Medical_Defibrillation_DefibStateMachine m_pTemplateJob; + protected ref array m_aJobs = {}; + protected ref array m_aInitialObjectsToRegister = {}; + protected ACE_FrameJobScheduler_EState m_eState = ACE_FrameJobScheduler_EState.UPDATE_QUEUE; + protected float m_fNextUpdateStartTime = 0; + protected int m_iCurrentJobIdx = 0; + protected int m_iNumMachines = 0; + + //------------------------------------------------------------------------------------------------ + //! Template is passed here rather than in ctor for usage of ACE_TemplateFrameJobScheduler in attributes + void OnInit(ACE_Medical_Defibrillation_DefibStateMachine templateJob) + { + m_pTemplateJob = templateJob; + + foreach (IEntity object : m_aInitialObjectsToRegister) + { + Register(object); + } + + m_aInitialObjectsToRegister.Clear(); + } + + //------------------------------------------------------------------------------------------------ + array GetJobs() + { + return m_aJobs; + } + + //------------------------------------------------------------------------------------------------ + override void OnUpdate(float timeSlice) + { + super.OnUpdate(timeSlice); + float currentTime = GetGame().GetWorld().GetWorldTime(); + + switch (m_eState) + { + case ACE_FrameJobScheduler_EState.UPDATE_QUEUE: return UpdateQueueStep(currentTime); + case ACE_FrameJobScheduler_EState.UPDATE_OBJECTS: return UpdateObjectsStep(currentTime); + case ACE_FrameJobScheduler_EState.TIMEOUT: return TimeoutStep(currentTime); + } + } + + //------------------------------------------------------------------------------------------------ + protected void UpdateQueueStep(float currentTime) + { + m_iNumMachines = m_aJobs.Count(); + + for (int i = m_iNumMachines - 1; i >= 0; --i) + { + ACE_Medical_Defibrillation_DefibStateMachine job = m_aJobs[i]; + if (job.ShouldBeStopped()) + UnregisterNow(i); + } + + m_iCurrentJobIdx = 0; + m_iNumMachines = m_aJobs.Count(); + + if (m_iNumMachines == 0) + return ToggleUpdate(false); + + m_fNextUpdateStartTime = currentTime + m_fObjectUpdateTimeoutMS; + ChangeState(ACE_FrameJobScheduler_EState.UPDATE_OBJECTS); + } + + //------------------------------------------------------------------------------------------------ + protected void UpdateObjectsStep(float currentTime) + { + for (int i = 0; i < m_iMaxIterationsPerFrame; ++i) + { + ACE_Medical_Defibrillation_DefibStateMachine job = m_aJobs[m_iCurrentJobIdx]; + ACE_Medical_Defibrillation_DefibContext context = job.GetContext(); + + if (context.IsValid()) + job.OnUpdate((currentTime - context.m_fLastUpdateTime)); + else + job.Stop(); + + context.m_fLastUpdateTime = currentTime; + ++m_iCurrentJobIdx; + + if (m_iCurrentJobIdx >= m_iNumMachines) + return ChangeState(ACE_FrameJobScheduler_EState.TIMEOUT); + } + } + + //------------------------------------------------------------------------------------------------ + protected void TimeoutStep(float currentTime) + { + if (currentTime >= m_fNextUpdateStartTime) + ChangeState(ACE_FrameJobScheduler_EState.UPDATE_QUEUE); + } + + //------------------------------------------------------------------------------------------------ + protected void ChangeState(ACE_FrameJobScheduler_EState newState) + { + m_eState = newState; + } + + //------------------------------------------------------------------------------------------------ + void Register(IEntity object) + { + if (!m_pTemplateJob) + { + m_aInitialObjectsToRegister.Insert(object); + return; + } + + ACE_Medical_Defibrillation_DefibContext context = new ACE_Medical_Defibrillation_DefibContext(object); + if (!context.IsValid()) + return; + + ACE_Medical_Defibrillation_DefibStateMachine job = CreateJob(); + job.SetContext(context); + job.OnStart(); + m_aJobs.Insert(job); + + if (!ShouldBeUpdated()) + ToggleUpdate(true); + } + + //------------------------------------------------------------------------------------------------ + void Unregister(IEntity object) + { + foreach (int i, ACE_Medical_Defibrillation_DefibStateMachine job : m_aJobs) + { + if (job.GetContext().m_pObject == object) + { + // Delay unregistration, unless the queue isn't touched (e.g. during timeout) + if (m_eState == ACE_FrameJobScheduler_EState.TIMEOUT) + UnregisterNow(i); + else + job.Stop(); + + return; + } + } + } + + //------------------------------------------------------------------------------------------------ + protected void UnregisterNow(int machineIdx) + { + ACE_Medical_Defibrillation_DefibStateMachine job = m_aJobs[machineIdx]; + m_aJobs.Remove(machineIdx); + job.OnStop(); + } + + //------------------------------------------------------------------------------------------------ + protected ACE_Medical_Defibrillation_DefibStateMachine CreateJob() + { + ACE_Medical_Defibrillation_DefibStateMachine instance = new ACE_Medical_Defibrillation_DefibStateMachine(); + instance.CopyFrom(m_pTemplateJob); + return instance; + } +} \ No newline at end of file diff --git a/addons/medical_defibrillation/thumbnail.png b/addons/medical_defibrillation/thumbnail.png new file mode 100644 index 000000000..3d4283142 Binary files /dev/null and b/addons/medical_defibrillation/thumbnail.png differ