├── .gitignore ├── ARFaceGeometry.obj ├── ARKitFaceExample.xcodeproj ├── .xcodesamplecode.plist ├── project.pbxproj └── project.xcworkspace │ └── xcshareddata │ └── WorkspaceSettings.xcsettings ├── ARKitFaceExample ├── AppDelegate.swift ├── Base.lproj │ └── Main.storyboard ├── Face Overlay Content │ ├── BlendShapeCharacter.swift │ ├── FaceOcclusionOverlay.swift │ ├── ProjectMesh.swift │ ├── TexturedFace.swift │ ├── TransformVisualization.swift │ ├── VideoTexturedFace.swift │ └── VirtualContent.swift ├── Resources │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-40.png │ │ │ ├── Icon-40@2x.png │ │ │ ├── Icon-40@3x.png │ │ │ ├── Icon-60@2x.png │ │ │ ├── Icon-60@3x.png │ │ │ ├── Icon-72.png │ │ │ ├── Icon-72@2x.png │ │ │ ├── Icon-76.png │ │ │ ├── Icon-76@2x.png │ │ │ ├── Icon-83.5@2x.png │ │ │ ├── Icon-Small-50.png │ │ │ ├── Icon-Small-50@2x.png │ │ │ ├── Icon-Small.png │ │ │ ├── Icon-Small@2x.png │ │ │ ├── Icon-Small@3x.png │ │ │ ├── Icon.png │ │ │ ├── Icon@2x.png │ │ │ ├── NotificationIcon@2x.png │ │ │ ├── NotificationIcon@3x.png │ │ │ ├── NotificationIcon~ipad.png │ │ │ ├── NotificationIcon~ipad@2x.png │ │ │ └── ios-marketing.png │ │ ├── Contents.json │ │ ├── blendShapes.imageset │ │ │ ├── Contents.json │ │ │ ├── blendShapes-1.png │ │ │ └── blendShapes.png │ │ ├── geometry.imageset │ │ │ ├── Contents.json │ │ │ ├── geometry-1.png │ │ │ └── geometry.png │ │ ├── restart.imageset │ │ │ ├── Contents.json │ │ │ ├── refresh@2x.png │ │ │ └── refresh@3x.png │ │ ├── restartPressed.imageset │ │ │ ├── Contents.json │ │ │ ├── refreshPressed@2x.png │ │ │ └── refreshPressed@3x.png │ │ ├── texture.imageset │ │ │ ├── Contents.json │ │ │ ├── texture-1.png │ │ │ └── texture.png │ │ ├── transforms.imageset │ │ │ ├── Contents.json │ │ │ ├── transforms-1.png │ │ │ └── transforms.png │ │ ├── videoTexture.imageset │ │ │ ├── Contents.json │ │ │ ├── videoTexture-1.png │ │ │ └── videoTexture.png │ │ └── wireframeTexture.imageset │ │ │ ├── Contents.json │ │ │ └── wireframeTexture.png │ ├── Info.plist │ ├── LaunchScreen.storyboard │ ├── Models.scnassets │ │ ├── coordinateOrigin.scn │ │ ├── overlayModel.scn │ │ └── robotHead.scn │ └── VideoTexturedFace.shader ├── Utilities.swift └── ViewController.swift ├── Configuration └── SampleCode.xcconfig ├── Documentation └── FaceExampleModes.png ├── IMG_7407.jpg ├── LICENSE └── LICENSE.txt └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # See LICENSE folder for this sample’s licensing information. 2 | # 3 | # Apple sample code gitignore configuration. 4 | 5 | # Finder 6 | .DS_Store 7 | 8 | # Xcode - User files 9 | xcuserdata/ 10 | 11 | **/*.xcodeproj/project.xcworkspace/* 12 | !**/*.xcodeproj/project.xcworkspace/xcshareddata 13 | 14 | **/*.xcodeproj/project.xcworkspace/xcshareddata/* 15 | !**/*.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings 16 | 17 | **/*.playground/playground.xcworkspace/* 18 | !**/*.playground/playground.xcworkspace/xcshareddata 19 | 20 | **/*.playground/playground.xcworkspace/xcshareddata/* 21 | !**/*.playground/playground.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings 22 | -------------------------------------------------------------------------------- /ARFaceGeometry.obj: -------------------------------------------------------------------------------- 1 | v 0 -27.4361 61.2729 2 | v 0 -30.7336 62.0126 3 | v 0 -23.9011 61.6938 4 | v 0 -20.9142 62.5778 5 | v 0 -18.6303 63.9887 6 | v 0 -16.5494 68.4657 7 | v 0 -13.7898 74.8141 8 | v 0 -9.80007 77.8864 9 | v 0 -4.11558 78.3582 10 | v 0 0.958829 75.5694 11 | v 0 5.13743 72.3692 12 | v 0 9.21539 69.3697 13 | v 0 13.2164 66.3772 14 | v 0 17.3487 63.4679 15 | v 0 21.291 60.2776 16 | v 0 29.76 55.4371 17 | v 0 34.4777 55.2549 18 | v 0 42.769 56.4813 19 | v 0 51.8881 56.3474 20 | v 0 60.9924 54.4195 21 | v 0 93.4177 41.8162 22 | v 0 -33.4758 63.3017 23 | v 0 -36.9372 62.6461 24 | v 0 -39.3174 59.9225 25 | v 0 -40.1535 56.1783 26 | v 0 -40.7402 57.4095 27 | v 0 -42.5019 59.0451 28 | v 0 -45.2646 60.4253 29 | v 0 -48.7257 60.5173 30 | v 0 -51.6198 58.2561 31 | v 0 -54.1912 56.0263 32 | v 0 -57.3412 54.3393 33 | v 0 -61.1499 54.3347 34 | v 0 -64.8101 55.5369 35 | v 0 -69.6948 56.2174 36 | v 0 -76.1297 55.1867 37 | v 0 25.2001 57.3157 38 | v 0 -15.7288 71.4422 39 | v 0 -17.3819 66.0153 40 | v -72.0919 37.7549 -18.694 41 | v -27.5504 16.1632 39.9092 42 | v -31.3847 15.8623 39.9631 43 | v -35.0941 15.9552 39.1893 44 | v -43.6127 16.8584 33.3952 45 | v -41.5263 16.4339 35.2313 46 | v -38.5255 16.2518 37.4982 47 | v -47.8763 21.3181 29.9144 48 | v -23.8368 16.736 39.3254 49 | v -20.5714 17.7043 38.7756 50 | v -14.505 13.0012 47.8089 51 | v -34.9062 30.849 40.7162 52 | v -30.8249 31.3486 41.1547 53 | v -26.4426 30.9499 40.3223 54 | v -42.4965 28.3606 37.6594 55 | v -38.8121 29.945 39.6285 56 | v -44.9679 26.8928 35.4567 57 | v -46.7818 25.1286 32.6002 58 | v -71.6188 13.0347 -27.1589 59 | v -35.5013 -52.867 39.2394 60 | v -39.0858 -54.1175 35.2024 61 | v -43.672 -55.9629 28.2989 62 | v -55.5068 -45.8369 13.6645 63 | v -25.2084 -32.2141 50.9437 64 | v -28.0773 -29.5326 49.0909 65 | v -31.5647 -26.7785 47.0528 66 | v -28.2473 -22.0008 48.035 67 | v -10.5382 -14.7036 59.4985 68 | v -11.9283 -13.1127 61.5684 69 | v -10.9567 -13.7093 59.9439 70 | v -11.1226 -10.9251 59.835 71 | v -8.57562 -27.1957 60.6096 72 | v -8.01913 -11.8073 68.915 73 | v -5.9001 -9.24356 67.1066 74 | v -4.25506 -12.3923 65.8181 75 | v -4.20376 -10.9073 64.3756 76 | v -3.86551 -14.0703 66.9339 77 | v -4.76444 -16.6327 62.3931 78 | v -6.22828 -14.433 61.7774 79 | v -6.49122 -12.6525 60.6437 80 | v -10.504 -10.72 63.0401 81 | v -11.6203 -12.5326 64.2708 82 | v -9.8525 -11.9751 66.2623 83 | v -12.8278 -10.4315 66.8293 84 | v -4.26055 -27.1762 61.8245 85 | v -20.6078 -32.0727 54.079 86 | v -16.9423 -29.449 56.0347 87 | v -12.1699 -23.8706 57.3053 88 | v -10.1453 -16.3748 58.2781 89 | v -7.98517 -23.3738 60.1855 90 | v -12.8207 -28.1131 58.3596 91 | v -4.48389 -30.0364 62.1977 92 | v -8.95713 -30.5906 61.2265 93 | v -4.59072 -32.6245 62.9433 94 | v -4.07423 -39.2859 59.1188 95 | v -8.9847 -33.682 61.5972 96 | v -7.73099 -39.3102 57.6852 97 | v -12.897 -35.2221 59.5407 98 | v -11.0128 -39.5052 55.9005 99 | v -12.9781 -31.7976 59.2255 100 | v -16.6336 -33.4731 57.0887 101 | v -19.5765 -35.4967 54.7654 102 | v -23.1197 -34.9765 52.0751 103 | v -21.7085 -37.4597 52.3946 104 | v -18.7426 -40.7799 49.0716 105 | v -20.3929 -39.5636 51.838 106 | v -14.0079 -40.019 53.7162 107 | v -16.5578 -40.4844 51.3453 108 | v -18.5222 -38.4492 54.3816 109 | v -15.9862 -37.0867 57.0313 110 | v -31.9676 -51.5041 41.9807 111 | v -26.635 -48.7849 45.4057 112 | v -29.244 -50.3747 43.7938 113 | v -31.8568 -57.5231 40.2085 114 | v -34.7093 -60.2241 36.7412 115 | v -30.1291 -65.1489 39.4043 116 | v -24.6276 -51.3114 46.7179 117 | v -20.3877 -50.644 50.1323 118 | v -21.2 -43.3928 48.8591 119 | v -24.4459 -47.057 46.8655 120 | v -22.7924 -49.0631 48.3138 121 | v -19.9661 -44.313 50.5351 122 | v -16.3416 -40.9619 51.3033 123 | v -18.2494 -45.0067 52.3308 124 | v -19.2205 -47.6412 51.7296 125 | v -2.49701 -15.737 67.9446 126 | v -6.893 -12.2187 71.4695 127 | v -4.09898 -13.1904 73.5427 128 | v -5.30775 -9.82779 75.9394 129 | v -8.68542 -9.62962 72.8668 130 | v -5.8698 -4.40201 76.3058 131 | v -70.4559 47.9032 -11.1981 132 | v -35.6378 88.2588 32.8273 133 | v -54.8383 28.3617 28.0722 134 | v -17.1607 6.95435 49.05 135 | v -17.768 9.91688 46.4367 136 | v -13.7439 6.90573 53.5299 137 | v -13.2668 3.62821 55.7851 138 | v -14.0513 -5.09626 62.5207 139 | v -19.3351 0.858286 49.5976 140 | v -16.4986 -4.67142 52.5821 141 | v -15.7535 -9.40949 61.713 142 | v -14.1457 -7.67119 64.969 143 | v -14.1995 -11.9531 63.5616 144 | v -15.4846 -6.6756 59.9085 145 | v -16.4352 3.7932 51.3326 146 | v -20.3503 4.14232 47.6305 147 | v -21.1747 7.45129 45.4988 148 | v -32.1138 -18.3781 47.0534 149 | v -35.4432 -23.8392 45.3558 150 | v -39.746 -20.4616 43.1882 151 | v -36.3603 -14.1168 45.3082 152 | v -41.2232 -8.37051 42.0932 153 | v -48.8542 -6.86633 36.8996 154 | v -46.8787 0.75013 37.5615 155 | v -40.7469 0.105002 40.8173 156 | v -52.1906 2.7067 33.0458 157 | v -5.5545 0.271332 73.9834 158 | v -4.9479 11.9894 64.9408 159 | v -5.05198 16.0876 62.001 160 | v -26.0365 51.5545 52.4742 161 | v -14.2026 10.119 50.8298 162 | v -36.0001 38.6773 46.0894 163 | v -52.3422 45.0926 33.7068 164 | v -41.0921 37.6855 43.7738 165 | v -50.2135 33.8555 36.8991 166 | v -53.1342 31.5984 32.3152 167 | v -57.1647 29.0583 24.9217 168 | v -67.8873 58.0664 -3.98312 169 | v -13.716 34.3192 49.7241 170 | v -22.5132 29.0768 39.4228 171 | v -23.0096 37.329 49.3442 172 | v -19.6635 27.0005 37.9449 173 | v -26.0771 -42.1517 46.248 174 | v -28.2037 -42.5065 45.6426 175 | v -31.5797 -42.7793 44.7583 176 | v -35.4454 -42.552 42.9446 177 | v -38.9169 -41.7846 40.1886 178 | v -42.3373 -40.1515 36.9084 179 | v -62.0315 8.07823 18.1807 180 | v -41.7807 -27.3051 40.6546 181 | v -37.7399 -29.7887 43.2626 182 | v -34.1486 -32.0643 45.5954 183 | v -30.3532 -34.2181 47.8472 184 | v -27.3456 -35.9948 49.3589 185 | v -24.8378 -37.7374 50.0572 186 | v -23.0893 -39.2654 50.2316 187 | v -21.7826 -40.4538 49.6403 188 | v -20.3201 -40.9084 47.2326 189 | v -23.9179 -41.7806 46.848 190 | v -21.5856 -40.8076 45.9979 191 | v -22.7069 -41.4202 46.8373 192 | v -29.1076 -55.3852 42.8614 193 | v -26.7569 -53.429 44.956 194 | v -25.6176 -58.5179 44.6912 195 | v -21.8758 -53.295 48.4528 196 | v -23.6442 -55.9145 46.6797 197 | v -27.8372 -61.4358 42.3725 198 | v -50.0786 40.8827 38.3163 199 | v -53.823 37.7304 33.4134 200 | v -56.0017 40.6791 28.3047 201 | v -58.1731 35.8742 23.5638 202 | v -56.0053 34.0013 28.5012 203 | v -16.6492 -12.0572 57.0747 204 | v -14.8702 -12.9583 60.8288 205 | v -16.8331 -13.261 54.5738 206 | v -24.8158 -25.3317 50.0538 207 | v -14.6641 -14.154 59.0275 208 | v -29.6761 38.9352 48.0761 209 | v -67.5797 -21.6229 -27.1015 210 | v -33.8281 51.2826 48.5481 211 | v -41.1495 50.4427 43.9637 212 | v -44.9526 84.0744 26.5531 213 | v -52.7486 78.7773 19.3639 214 | v -64.3258 64.5705 4.21913 215 | v -67.5174 33.5033 -2.3677 216 | v -65.4622 41.6475 3.52851 217 | v -63.4345 51.212 9.34234 218 | v -59.4324 57.57 17.3282 219 | v -48.1177 67.9789 30.8314 220 | v -40.4629 71.5381 37.6133 221 | v -31.8467 74.5436 43.2958 222 | v -63.0257 40.8076 10.5286 223 | v -60.5047 47.3059 16.5134 224 | v -56.9177 53.5938 22.792 225 | v -45.4734 62.3256 35.6621 226 | v -37.9251 64.9665 41.6646 227 | v -29.5601 66.9025 46.5369 228 | v -60.6733 38.6937 16.7547 229 | v -58.2076 44.4693 22.0667 230 | v -54.5816 49.9457 27.9772 231 | v -43.3877 57.0174 39.4773 232 | v -36.0171 58.9693 44.7915 233 | v -27.8621 60.2283 49.1974 234 | v -18.7993 60.8435 52.4061 235 | v -59.8123 29.7885 19.7157 236 | v -60.9888 23.8005 17.0177 237 | v -64.9884 32.0479 6.05763 238 | v -4.41934 -36.8434 61.8472 239 | v -8.49308 -37.2304 60.184 240 | v -11.9433 -38.0043 58.0782 241 | v -14.8638 -39.1139 55.5019 242 | v -17.3244 -40.0409 52.9106 243 | v -19.3179 -40.5756 50.4749 244 | v -20.8098 -40.9596 48.5297 245 | v -22.0881 -41.0728 46.5311 246 | v -20.1999 -41.8053 48.9192 247 | v -17.2947 -42.6397 51.9076 248 | v -15.63 -40.4452 50.1347 249 | v -17.5096 -40.7175 48.3953 250 | v -21.2319 -40.7829 45.1374 251 | v -20.3224 -40.668 45.8345 252 | v -18.55 -40.5022 47.6674 253 | v -16.1063 -40.256 49.6708 254 | v -13.3622 -40.0384 51.7569 255 | v -10.2506 -39.8914 53.4201 256 | v -6.99801 -39.9538 54.8171 257 | v -3.52352 -40.0937 55.7985 258 | v -7.27936 -69.6621 55.0582 259 | v -5.47644 -61.1399 53.7596 260 | v -4.94403 -57.6106 53.9063 261 | v -4.59649 -54.0217 55.8509 262 | v -4.50684 -51.4239 58.0539 263 | v -4.48223 -48.3844 60.0232 264 | v -4.16698 -45.0047 60.0255 265 | v -3.95438 -42.245 58.713 266 | v -3.58028 -40.6172 56.9927 267 | v -13.6791 -68.9198 52.3108 268 | v -10.7075 -60.6432 52.3895 269 | v -9.73333 -57.0591 53.1874 270 | v -9.07971 -53.7147 55.1923 271 | v -8.79779 -50.9044 57.3583 272 | v -8.78429 -47.8086 59.014 273 | v -8.35585 -44.4232 58.8016 274 | v -7.91582 -41.8022 57.5008 275 | v -7.23431 -40.2204 55.6343 276 | v -13.3177 -40.1546 52.0599 277 | v -14.1416 -41.0662 53.1924 278 | v -15.0211 -43.1714 54.145 279 | v -15.9049 -45.8271 54.7406 280 | v -16.4824 -48.8792 54.0046 281 | v -17.2679 -52.0472 52.1643 282 | v -17.9623 -2.32707 51.0506 283 | v -19.0244 -67.2796 48.7601 284 | v -15.5381 -59.5552 50.5712 285 | v -14.3319 -56.2341 52.0127 286 | v -13.4377 -53.1429 53.9072 287 | v -12.9305 -49.9868 56.0618 288 | v -12.7436 -46.8352 57.2284 289 | v -12.0472 -43.7364 56.6569 290 | v -11.4416 -41.3826 55.4307 291 | v -10.4688 -39.9741 53.7898 292 | v -22.0343 -28.4746 52.3404 293 | v -17.2338 -9.78595 53.3666 294 | v -3.8804 -23.7663 61.9302 295 | v -16.365 -10.6262 59.3955 296 | v -69.3126 -11.8187 -26.6728 297 | v -17.2827 -24.4813 53.9563 298 | v -14.0809 -15.6469 57.3572 299 | v -16.5737 -8.21947 57.5685 300 | v -12.8888 0.356132 57.9191 301 | v -4.89401 7.98609 67.7735 302 | v -13.2341 -2.67979 60.1992 303 | v -5.187 4.18764 70.8807 304 | v -14.8174 -2.10392 54.7692 305 | v -15.5473 0.696028 53.163 306 | v -18.9814 -40.7612 46.7691 307 | v -19.3561 -40.7854 47.9995 308 | v -6.81904 -18.958 60.1609 309 | v -13.6154 -16.8604 55.2426 310 | v -21.0449 -21.3083 50.4996 311 | v -24.6382 -17.7484 48.6186 312 | v -28.172 -13.8259 48.062 313 | v -16.9938 -14.2305 52.5809 314 | v -18.139 -9.64861 51.2845 315 | v -20.589 -6.0639 49.6512 316 | v -16.1983 -6.47763 54.9796 317 | v -14.9082 -4.55323 57.2744 318 | v -22.6948 -2.33317 48.3644 319 | v -24.1647 1.35175 46.5322 320 | v -25.0896 5.13039 44.5484 321 | v -31.4727 -9.46854 46.8263 322 | v -34.1391 -4.41931 44.7404 323 | v -34.7812 1.30244 42.6486 324 | v -3.3699 -20.4747 62.34 325 | v -2.68531 -17.9149 63.4776 326 | v -17.0023 -9.85129 56.1086 327 | v -46.0886 36.1486 40.7477 328 | v -38.8605 44.5633 46.7022 329 | v -31.909 44.7013 50.1444 330 | v -24.4783 44.3771 53.3102 331 | v -59.0416 72.8036 12.0989 332 | v -54.5102 63.353 23.9931 333 | v -51.8525 58.3161 29.4753 334 | v -49.6159 53.8831 33.9709 335 | v -47.4966 48.192 38.962 336 | v -45.0041 43.1542 42.8017 337 | v -18.468 -54.9653 50.324 338 | v -19.9069 -57.9253 48.6161 339 | v -21.6485 -61.0844 47.0555 340 | v -17.1258 -63.1159 49.6919 341 | v -23.5666 -64.6717 45.3291 342 | v -25.6234 -69.0397 42.9747 343 | v -20.8071 -72.21 46.9454 344 | v -15.2006 -74.5267 50.9648 345 | v -8.25168 -75.853 53.9896 346 | v -12.0006 -64.5266 52.4552 347 | v -6.28365 -64.8867 54.5762 348 | v -6.77793 34.598 54.08 349 | v -16.3934 43.3736 55.649 350 | v -17.5751 51.5095 55.189 351 | v -19.9906 67.5317 50.1907 352 | v -21.6345 75.8016 47.5915 353 | v -24.5359 91.3061 37.5439 354 | v -57.5203 11.6318 23.7694 355 | v -55.0911 -4.74866 30.5151 356 | v -58.0782 18.058 21.5737 357 | v -45.7069 17.7219 31.5117 358 | v -16.8764 24.1513 37.3948 359 | v -15.6903 20.9848 37.7116 360 | v -9.534 26.5088 47.9612 361 | v -5.51672 28.9674 53.5655 362 | v -8.43658 13.3422 59.1123 363 | v -9.38042 -1.36397 70.3894 364 | v -8.80438 2.21496 67.6376 365 | v -8.24168 9.4703 61.9229 366 | v -8.35504 5.77948 64.7486 367 | v -8.23595 21.2055 52.1289 368 | v -8.40945 17.1811 55.7287 369 | v -11.0901 10.1511 56.0801 370 | v -10.87 6.60283 58.7807 371 | v -11.0068 16.784 49.4605 372 | v -11.1869 13.6234 53.0596 373 | v -9.65262 -5.26767 72.4917 374 | v -12.1279 -6.32935 68.3393 375 | v -11.1213 -9.39187 69.4868 376 | v -62.0791 16.5466 16.1771 377 | v -70.5884 -1.06786 -26.795 378 | v -52.0297 10.936 29.9162 379 | v -48.8363 8.14687 33.7251 380 | v -44.6082 6.46758 37.0677 381 | v -39.6744 5.88084 39.5778 382 | v -34.7126 6.25913 41.1194 383 | v -30.003 7.32945 42.0281 384 | v -25.7402 8.76045 42.6913 385 | v -21.9425 10.4468 43.1637 386 | v -18.4627 12.5315 43.7365 387 | v -15.013 15.3114 44.582 388 | v -5.11864 20.2281 58.3631 389 | v -53.5138 14.8126 26.5735 390 | v -56.1582 5.97096 27.8477 391 | v -60.7285 -1.51987 22.1705 392 | v -62.1317 -32.627 5.25244 393 | v -52.1801 -63.7819 -7.39064 394 | v -21.5673 -40.8508 44.6876 395 | v -21.4944 -41.061 46.1365 396 | v -21.7417 -41.1493 46.8947 397 | v -22.541 -41.0748 47.8113 398 | v -23.9034 -40.7208 48.2802 399 | v -25.8818 -40.1854 48.1081 400 | v -28.44 -39.4286 47.4285 401 | v -31.7458 -38.6438 46.3075 402 | v -35.5342 -37.5342 44.1505 403 | v -38.9355 -35.963 41.3553 404 | v -42.6052 -34.1659 38.305 405 | v -20.1115 -40.776 45.7164 406 | v -20.5309 -40.7811 46.8271 407 | v -21.1111 -41.1677 47.536 408 | v -22.1587 -42.2481 47.7335 409 | v -25.3112 -44.4775 45.9096 410 | v -27.8109 -45.7121 44.7499 411 | v -30.755 -46.6735 43.6762 412 | v -34.2198 -47.3582 42.0754 413 | v -37.8744 -47.4339 39.448 414 | v -41.4422 -47.0895 35.7436 415 | v -45.7425 -46.192 30.4919 416 | v -54.553 19.4917 24.7983 417 | v -47.106 19.4677 30.3421 418 | v -47.605 23.7817 31.133 419 | v -55.1186 24.0936 25.4372 420 | v -58.1176 24.0655 21.8177 421 | v -8.18953 42.6364 56.2808 422 | v -8.83628 51.7241 56.2195 423 | v -9.41386 61.074 53.9271 424 | v -9.94963 67.3527 52.271 425 | v -10.7758 75.915 49.9213 426 | v -12.337 92.9586 40.7542 427 | v -18.2563 18.8326 38.2808 428 | v -4.96867 24.0693 55.662 429 | v -3.08566 -14.8376 70.6915 430 | v -4.79429 -13.1637 69.2058 431 | v -4.89452 -11.4996 68.366 432 | v -4.13455 -9.70666 67.288 433 | v -11.1998 19.7934 45.4503 434 | v -29.5954 3.06149 43.7063 435 | v -28.6998 -1.42023 45.7342 436 | v -26.8245 -5.71348 47.574 437 | v -24.2074 -9.88559 48.7786 438 | v -21.2218 -13.9955 49.1831 439 | v -17.9369 -17.4555 50.7899 440 | v -14.5744 -19.5658 53.7824 441 | v -10.6979 -19.6542 56.9806 442 | v -7.98586 -15.2858 60.265 443 | v -8.34002 -13.5783 59.7744 444 | v -9.17649 -10.1423 64.907 445 | v -11.9524 -3.2231 66.2829 446 | v -11.1882 -0.181179 63.8741 447 | v -10.8586 3.11878 61.3622 448 | v -44.1727 -16.9922 40.1974 449 | v -46.2584 -24.648 37.1253 450 | v -46.6893 -31.6392 34.5964 451 | v -46.3427 -38.6548 32.459 452 | v -50.4397 -15.1102 34.4076 453 | v -50.7784 -22.5907 32.2899 454 | v -50.6662 -29.4381 29.9554 455 | v -55.4734 -21.5263 26.2723 456 | v -55.7875 -13.559 28.1274 457 | v -60.5065 -12.7252 20.639 458 | v -59.4378 -21.227 19.5244 459 | v -65.5259 14.8349 8.69052 460 | v -65.5954 5.84801 9.8663 461 | v -60.2878 -29.7893 12.4532 462 | v -58.9254 -40.797 8.91461 463 | v -57.6003 -55.7751 -16.3893 464 | v -65.001 -3.86114 10.9453 465 | v -66.8147 -5.90421 1.40307 466 | v -65.4877 -15.3651 2.0868 467 | v -68.7383 23.8618 -5.32413 468 | v -72.3678 26.2669 -23.7637 469 | v -64.0556 -24.4358 3.17144 470 | v -63.6894 -13.764 11.3539 471 | v -62.1662 -22.4966 11.5883 472 | v -67.683 4.25237 1.13389 473 | v -67.9111 13.8663 1.74251 474 | v -66.636 23.6363 2.76626 475 | v -62.7146 31.0804 12.5706 476 | v -64.5861 23.166 9.47689 477 | v -58.0392 -28.0762 18.9412 478 | v -50.4793 -50.4884 20.9723 479 | v -50.5789 -43.4253 24.4531 480 | v -50.6171 -36.8235 27.2997 481 | v -54.8657 -40.1533 18.0925 482 | v -54.2954 -34.649 22.4634 483 | v -57.9998 -35.666 15.0112 484 | v -54.8553 -28.337 24.2671 485 | v -56.8541 -32.7674 18.7839 486 | v -2.32961 -16.5798 65.5028 487 | v -3.97219 -15.1729 64.6522 488 | v -5.17186 -13.3528 63.5616 489 | v -5.28354 -11.5217 62.4091 490 | v 72.0919 37.7549 -18.694 491 | v 27.5504 16.1632 39.9092 492 | v 31.3847 15.8623 39.9631 493 | v 35.0941 15.9552 39.1893 494 | v 43.6127 16.8584 33.3952 495 | v 41.5263 16.4339 35.2313 496 | v 38.5255 16.2518 37.4982 497 | v 47.8763 21.3181 29.9144 498 | v 23.8368 16.736 39.3254 499 | v 20.5714 17.7043 38.7756 500 | v 14.505 13.0012 47.8089 501 | v 34.9062 30.849 40.7162 502 | v 30.8249 31.3486 41.1547 503 | v 26.4426 30.9499 40.3223 504 | v 42.4965 28.3606 37.6594 505 | v 38.8121 29.945 39.6285 506 | v 44.9679 26.8928 35.4567 507 | v 46.7818 25.1286 32.6002 508 | v 35.5013 -52.867 39.2394 509 | v 39.0858 -54.1175 35.2024 510 | v 43.672 -55.9629 28.2989 511 | v 55.5068 -45.8369 13.6645 512 | v 25.2084 -32.2141 50.9437 513 | v 28.0773 -29.5326 49.0909 514 | v 31.5647 -26.7785 47.0528 515 | v 28.2473 -22.0008 48.035 516 | v 10.5382 -14.7036 59.4985 517 | v 11.9283 -13.1127 61.5684 518 | v 10.9567 -13.7093 59.9439 519 | v 11.1226 -10.9251 59.835 520 | v 8.57562 -27.1957 60.6096 521 | v 8.01913 -11.8073 68.915 522 | v 5.9001 -9.24356 67.1066 523 | v 4.25506 -12.3923 65.8181 524 | v 4.20376 -10.9073 64.3756 525 | v 3.86551 -14.0703 66.9339 526 | v 4.76444 -16.6327 62.3931 527 | v 6.22828 -14.433 61.7774 528 | v 6.49122 -12.6525 60.6437 529 | v 10.504 -10.72 63.0401 530 | v 11.6203 -12.5326 64.2708 531 | v 9.8525 -11.9751 66.2623 532 | v 12.8278 -10.4315 66.8293 533 | v 4.26055 -27.1762 61.8245 534 | v 20.6078 -32.0727 54.079 535 | v 16.9423 -29.449 56.0347 536 | v 12.1699 -23.8706 57.3053 537 | v 10.1453 -16.3748 58.2781 538 | v 7.98517 -23.3738 60.1855 539 | v 12.8207 -28.1131 58.3596 540 | v 4.48389 -30.0364 62.1977 541 | v 8.95713 -30.5906 61.2265 542 | v 4.59072 -32.6245 62.9433 543 | v 4.07423 -39.2859 59.1188 544 | v 8.9847 -33.682 61.5972 545 | v 7.73099 -39.3102 57.6852 546 | v 12.897 -35.2221 59.5407 547 | v 11.0128 -39.5052 55.9005 548 | v 12.9781 -31.7976 59.2255 549 | v 16.6336 -33.4731 57.0887 550 | v 19.5765 -35.4967 54.7654 551 | v 23.1197 -34.9765 52.0751 552 | v 21.7085 -37.4597 52.3946 553 | v 18.7426 -40.7799 49.0716 554 | v 20.3929 -39.5636 51.838 555 | v 14.0079 -40.019 53.7162 556 | v 16.5578 -40.4844 51.3453 557 | v 18.5222 -38.4492 54.3816 558 | v 15.9862 -37.0867 57.0313 559 | v 31.9676 -51.5041 41.9807 560 | v 26.635 -48.7849 45.4057 561 | v 29.244 -50.3747 43.7938 562 | v 31.8568 -57.5231 40.2085 563 | v 34.7093 -60.2241 36.7412 564 | v 30.1291 -65.1489 39.4043 565 | v 24.6276 -51.3114 46.7179 566 | v 20.3877 -50.644 50.1323 567 | v 21.2 -43.3928 48.8591 568 | v 24.4459 -47.057 46.8655 569 | v 22.7924 -49.0631 48.3138 570 | v 19.9661 -44.313 50.5351 571 | v 16.3416 -40.9619 51.3033 572 | v 18.2494 -45.0067 52.3308 573 | v 19.2205 -47.6412 51.7296 574 | v 2.49701 -15.737 67.9446 575 | v 6.893 -12.2187 71.4695 576 | v 4.09898 -13.1904 73.5427 577 | v 5.30775 -9.82779 75.9394 578 | v 8.68542 -9.62962 72.8668 579 | v 5.8698 -4.40201 76.3058 580 | v 70.4559 47.9032 -11.1981 581 | v 35.6378 88.2588 32.8273 582 | v 54.8383 28.3617 28.0722 583 | v 17.1607 6.95435 49.05 584 | v 17.768 9.91688 46.4367 585 | v 13.7439 6.90573 53.5299 586 | v 13.2668 3.62821 55.7851 587 | v 14.0513 -5.09626 62.5207 588 | v 19.3351 0.858286 49.5976 589 | v 16.4986 -4.67142 52.5821 590 | v 15.7535 -9.40949 61.713 591 | v 14.1457 -7.67119 64.969 592 | v 14.1995 -11.9531 63.5616 593 | v 15.4846 -6.6756 59.9085 594 | v 16.4352 3.7932 51.3326 595 | v 20.3503 4.14232 47.6305 596 | v 21.1747 7.45129 45.4988 597 | v 32.1138 -18.3781 47.0534 598 | v 35.4432 -23.8392 45.3558 599 | v 39.746 -20.4616 43.1882 600 | v 36.3603 -14.1168 45.3082 601 | v 41.2232 -8.37051 42.0932 602 | v 48.8542 -6.86633 36.8996 603 | v 46.8787 0.75013 37.5615 604 | v 40.7469 0.105002 40.8173 605 | v 52.1906 2.7067 33.0458 606 | v 5.5545 0.271332 73.9834 607 | v 4.9479 11.9894 64.9408 608 | v 5.05198 16.0876 62.001 609 | v 26.0365 51.5545 52.4742 610 | v 14.2026 10.119 50.8298 611 | v 36.0001 38.6773 46.0894 612 | v 52.3422 45.0926 33.7068 613 | v 41.0921 37.6855 43.7738 614 | v 50.2135 33.8555 36.8991 615 | v 53.1342 31.5984 32.3152 616 | v 57.1647 29.0583 24.9217 617 | v 67.8873 58.0664 -3.98312 618 | v 13.716 34.3192 49.7241 619 | v 22.5132 29.0768 39.4228 620 | v 23.0096 37.329 49.3442 621 | v 19.6635 27.0005 37.9449 622 | v 26.0771 -42.1517 46.248 623 | v 28.2037 -42.5065 45.6426 624 | v 31.5797 -42.7793 44.7583 625 | v 35.4454 -42.552 42.9446 626 | v 38.9169 -41.7846 40.1886 627 | v 42.3373 -40.1515 36.9084 628 | v 62.0315 8.07823 18.1807 629 | v 41.7807 -27.3051 40.6546 630 | v 37.7399 -29.7887 43.2626 631 | v 34.1486 -32.0643 45.5954 632 | v 30.3532 -34.2181 47.8472 633 | v 27.3456 -35.9948 49.3589 634 | v 24.8378 -37.7374 50.0572 635 | v 23.0893 -39.2654 50.2316 636 | v 21.7826 -40.4538 49.6403 637 | v 20.3201 -40.9084 47.2326 638 | v 23.9179 -41.7806 46.848 639 | v 21.5856 -40.8076 45.9979 640 | v 22.7069 -41.4202 46.8373 641 | v 29.1076 -55.3852 42.8614 642 | v 26.7569 -53.429 44.956 643 | v 25.6176 -58.5179 44.6912 644 | v 21.8758 -53.295 48.4528 645 | v 23.6442 -55.9145 46.6797 646 | v 27.8372 -61.4358 42.3725 647 | v 50.0786 40.8827 38.3163 648 | v 53.823 37.7304 33.4134 649 | v 56.0017 40.6791 28.3047 650 | v 58.1731 35.8742 23.5638 651 | v 56.0053 34.0013 28.5012 652 | v 16.6492 -12.0572 57.0747 653 | v 14.8702 -12.9583 60.8288 654 | v 16.8331 -13.261 54.5738 655 | v 24.8158 -25.3317 50.0538 656 | v 14.6641 -14.154 59.0275 657 | v 29.6761 38.9352 48.0761 658 | v 33.8281 51.2826 48.5481 659 | v 41.1495 50.4427 43.9637 660 | v 44.9526 84.0744 26.5531 661 | v 52.7486 78.7773 19.3639 662 | v 64.3258 64.5705 4.21913 663 | v 60.6733 38.6937 16.7547 664 | v 58.2076 44.4693 22.0667 665 | v 54.5816 49.9457 27.9772 666 | v 43.3877 57.0174 39.4773 667 | v 36.0171 58.9693 44.7915 668 | v 27.8621 60.2283 49.1974 669 | v 18.7993 60.8435 52.4061 670 | v 59.8123 29.7885 19.7157 671 | v 60.9888 23.8005 17.0177 672 | v 4.41934 -36.8434 61.8472 673 | v 8.49308 -37.2304 60.184 674 | v 11.9433 -38.0043 58.0782 675 | v 14.8638 -39.1139 55.5019 676 | v 17.3244 -40.0409 52.9106 677 | v 19.3179 -40.5756 50.4749 678 | v 20.8098 -40.9596 48.5297 679 | v 22.0881 -41.0728 46.5311 680 | v 20.1999 -41.8053 48.9192 681 | v 19.004 -42.4295 50.2957 682 | v 17.2947 -42.6397 51.9076 683 | v 15.63 -40.4452 50.1347 684 | v 17.5096 -40.7175 48.3953 685 | v 21.2319 -40.7829 45.1374 686 | v 20.3224 -40.668 45.8345 687 | v 18.55 -40.5022 47.6674 688 | v 16.1063 -40.256 49.6708 689 | v 13.3622 -40.0384 51.7569 690 | v 10.2506 -39.8914 53.4201 691 | v 6.99801 -39.9538 54.8171 692 | v 3.52352 -40.0937 55.7985 693 | v 7.27936 -69.6621 55.0582 694 | v 5.47644 -61.1399 53.7596 695 | v 4.94403 -57.6106 53.9063 696 | v 4.59649 -54.0217 55.8509 697 | v 4.50684 -51.4239 58.0539 698 | v 4.48223 -48.3844 60.0232 699 | v 4.16698 -45.0047 60.0255 700 | v 3.95438 -42.245 58.713 701 | v 3.58028 -40.6172 56.9927 702 | v 13.6791 -68.9198 52.3108 703 | v 10.7075 -60.6432 52.3895 704 | v 9.73333 -57.0591 53.1874 705 | v 9.07971 -53.7147 55.1923 706 | v 8.79779 -50.9044 57.3583 707 | v 8.78429 -47.8086 59.014 708 | v 8.35585 -44.4232 58.8016 709 | v 7.91582 -41.8022 57.5008 710 | v 7.23431 -40.2204 55.6343 711 | v 13.3177 -40.1546 52.0599 712 | v 14.1416 -41.0662 53.1924 713 | v 15.0211 -43.1714 54.145 714 | v 15.9049 -45.8271 54.7406 715 | v 16.4824 -48.8792 54.0046 716 | v 17.2679 -52.0472 52.1643 717 | v 17.9623 -2.32707 51.0506 718 | v 19.0244 -67.2796 48.7601 719 | v 15.5381 -59.5552 50.5712 720 | v 14.3319 -56.2341 52.0127 721 | v 13.4377 -53.1429 53.9072 722 | v 12.9305 -49.9868 56.0618 723 | v 12.7436 -46.8352 57.2284 724 | v 12.0472 -43.7364 56.6569 725 | v 11.4416 -41.3826 55.4307 726 | v 10.4688 -39.9741 53.7898 727 | v 22.0343 -28.4746 52.3404 728 | v 17.2338 -9.78595 53.3666 729 | v 3.8804 -23.7663 61.9302 730 | v 16.365 -10.6262 59.3955 731 | v 69.3126 -11.8187 -26.6728 732 | v 17.2827 -24.4813 53.9563 733 | v 14.0809 -15.6469 57.3572 734 | v 16.5737 -8.21947 57.5685 735 | v 12.8888 0.356132 57.9191 736 | v 4.89401 7.98609 67.7735 737 | v 13.2341 -2.67979 60.1992 738 | v 5.187 4.18764 70.8807 739 | v 14.8174 -2.10392 54.7692 740 | v 15.5473 0.696028 53.163 741 | v 18.9814 -40.7612 46.7691 742 | v 19.3561 -40.7854 47.9995 743 | v 6.81904 -18.958 60.1609 744 | v 13.6154 -16.8604 55.2426 745 | v 21.0449 -21.3083 50.4996 746 | v 24.6382 -17.7484 48.6186 747 | v 28.172 -13.8259 48.062 748 | v 16.9938 -14.2305 52.5809 749 | v 18.139 -9.64861 51.2845 750 | v 20.589 -6.0639 49.6512 751 | v 16.1983 -6.47763 54.9796 752 | v 14.9082 -4.55323 57.2744 753 | v 22.6948 -2.33317 48.3644 754 | v 24.1647 1.35175 46.5322 755 | v 25.0896 5.13039 44.5484 756 | v 31.4727 -9.46854 46.8263 757 | v 34.1391 -4.41931 44.7404 758 | v 34.7812 1.30244 42.6486 759 | v 3.3699 -20.4747 62.34 760 | v 2.68531 -17.9149 63.4776 761 | v 17.0023 -9.85129 56.1086 762 | v 46.0886 36.1486 40.7477 763 | v 38.8605 44.5633 46.7022 764 | v 31.909 44.7013 50.1444 765 | v 24.4783 44.3771 53.3102 766 | v 59.0416 72.8036 12.0989 767 | v 49.6159 53.8831 33.9709 768 | v 47.4966 48.192 38.962 769 | v 45.0041 43.1542 42.8017 770 | v 18.468 -54.9653 50.324 771 | v 19.9069 -57.9253 48.6161 772 | v 21.6485 -61.0844 47.0555 773 | v 17.1258 -63.1159 49.6919 774 | v 23.5666 -64.6717 45.3291 775 | v 25.6234 -69.0397 42.9747 776 | v 20.8071 -72.21 46.9454 777 | v 15.2006 -74.5267 50.9648 778 | v 8.25168 -75.853 53.9896 779 | v 12.0006 -64.5266 52.4552 780 | v 6.28365 -64.8867 54.5762 781 | v 6.77793 34.598 54.08 782 | v 16.3934 43.3736 55.649 783 | v 17.5751 51.5095 55.189 784 | v 24.5359 91.3061 37.5439 785 | v 57.5203 11.6318 23.7694 786 | v 55.0911 -4.74866 30.5151 787 | v 58.0782 18.058 21.5737 788 | v 45.7069 17.7219 31.5117 789 | v 16.8764 24.1513 37.3948 790 | v 15.6903 20.9848 37.7116 791 | v 9.534 26.5088 47.9612 792 | v 5.51672 28.9674 53.5655 793 | v 8.43658 13.3422 59.1123 794 | v 9.38042 -1.36397 70.3894 795 | v 8.80438 2.21496 67.6376 796 | v 8.24168 9.4703 61.9229 797 | v 8.35504 5.77948 64.7486 798 | v 8.23595 21.2055 52.1289 799 | v 8.40945 17.1811 55.7287 800 | v 11.0901 10.1511 56.0801 801 | v 10.87 6.60283 58.7807 802 | v 11.0068 16.784 49.4605 803 | v 11.1869 13.6234 53.0596 804 | v 9.65262 -5.26767 72.4917 805 | v 12.1279 -6.32935 68.3393 806 | v 11.1213 -9.39187 69.4868 807 | v 62.0791 16.5466 16.1771 808 | v 70.5884 -1.06786 -26.795 809 | v 52.0297 10.936 29.9162 810 | v 48.8363 8.14687 33.7251 811 | v 44.6082 6.46758 37.0677 812 | v 39.6744 5.88084 39.5778 813 | v 34.7126 6.25913 41.1194 814 | v 30.003 7.32945 42.0281 815 | v 25.7402 8.76045 42.6913 816 | v 21.9425 10.4468 43.1637 817 | v 18.4627 12.5315 43.7365 818 | v 15.013 15.3114 44.582 819 | v 5.11864 20.2281 58.3631 820 | v 53.5138 14.8126 26.5735 821 | v 56.1582 5.97096 27.8477 822 | v 60.7285 -1.51987 22.1705 823 | v 52.1801 -63.7819 -7.39064 824 | v 21.5673 -40.8508 44.6876 825 | v 21.4944 -41.061 46.1365 826 | v 21.7417 -41.1493 46.8947 827 | v 22.541 -41.0748 47.8113 828 | v 23.9034 -40.7208 48.2802 829 | v 25.8818 -40.1854 48.1081 830 | v 28.44 -39.4286 47.4285 831 | v 31.7458 -38.6438 46.3075 832 | v 35.5342 -37.5342 44.1505 833 | v 38.9355 -35.963 41.3553 834 | v 42.6052 -34.1659 38.305 835 | v 20.1115 -40.776 45.7164 836 | v 20.5309 -40.7811 46.8271 837 | v 21.1111 -41.1677 47.536 838 | v 22.1587 -42.2481 47.7335 839 | v 25.3112 -44.4775 45.9096 840 | v 27.8109 -45.7121 44.7499 841 | v 30.755 -46.6735 43.6762 842 | v 34.2198 -47.3582 42.0754 843 | v 37.8744 -47.4339 39.448 844 | v 41.4422 -47.0895 35.7436 845 | v 45.7425 -46.192 30.4919 846 | v 54.553 19.4917 24.7983 847 | v 47.106 19.4677 30.3421 848 | v 47.605 23.7817 31.133 849 | v 55.1186 24.0936 25.4372 850 | v 58.1176 24.0655 21.8177 851 | v 8.18953 42.6364 56.2808 852 | v 8.83628 51.7241 56.2195 853 | v 9.41386 61.074 53.9271 854 | v 12.337 92.9586 40.7542 855 | v 18.2563 18.8326 38.2808 856 | v 4.96867 24.0693 55.662 857 | v 3.08566 -14.8376 70.6915 858 | v 4.79429 -13.1637 69.2058 859 | v 4.89452 -11.4996 68.366 860 | v 4.13455 -9.70666 67.288 861 | v 11.1998 19.7934 45.4503 862 | v 29.5954 3.06149 43.7063 863 | v 28.6998 -1.42023 45.7342 864 | v 26.8245 -5.71348 47.574 865 | v 24.2074 -9.88559 48.7786 866 | v 21.2218 -13.9955 49.1831 867 | v 17.9369 -17.4555 50.7899 868 | v 14.5744 -19.5658 53.7824 869 | v 10.6979 -19.6542 56.9806 870 | v 7.98586 -15.2858 60.265 871 | v 8.34002 -13.5783 59.7744 872 | v 9.17649 -10.1423 64.907 873 | v 11.9524 -3.2231 66.2829 874 | v 11.1882 -0.181179 63.8741 875 | v 10.8586 3.11878 61.3622 876 | v 44.1727 -16.9922 40.1974 877 | v 46.2584 -24.648 37.1253 878 | v 46.6893 -31.6392 34.5964 879 | v 46.3427 -38.6548 32.459 880 | v 50.4397 -15.1102 34.4076 881 | v 50.7784 -22.5907 32.2899 882 | v 50.6662 -29.4381 29.9554 883 | v 55.4734 -21.5263 26.2723 884 | v 55.7875 -13.559 28.1274 885 | v 60.5065 -12.7252 20.639 886 | v 59.4378 -21.227 19.5244 887 | v 60.2878 -29.7893 12.4532 888 | v 58.9254 -40.797 8.91461 889 | v 72.3678 26.2669 -23.7637 890 | v 62.7146 31.0804 12.5706 891 | v 64.5861 23.166 9.47689 892 | v 58.0392 -28.0762 18.9412 893 | v 50.4793 -50.4884 20.9723 894 | v 50.5789 -43.4253 24.4531 895 | v 50.6171 -36.8235 27.2997 896 | v 54.8657 -40.1533 18.0925 897 | v 54.2954 -34.649 22.4634 898 | v 57.9998 -35.666 15.0112 899 | v 54.8553 -28.337 24.2671 900 | v 56.8541 -32.7674 18.7839 901 | v 2.32961 -16.5798 65.5028 902 | v 3.97219 -15.1729 64.6522 903 | v 5.17186 -13.3528 63.5616 904 | v 5.28354 -11.5217 62.4091 905 | v -66.0565 -29.5634 -26.618 906 | v -62.8494 -42.1343 -24.4795 907 | v 46.3617 -69.9678 1.41213 908 | v 40.3253 -74.7601 9.14013 909 | v 33.6242 -79.1713 16.1885 910 | v 27.6906 -82.4568 22.4341 911 | v 22.5761 -84.6077 27.5772 912 | v 18.7505 -85.9695 30.6466 913 | v 14.2628 -87.1745 33.4455 914 | v 7.64815 -88.2783 35.671 915 | v -7.64815 -88.2783 35.671 916 | v -14.2628 -87.1745 33.4455 917 | v -18.7505 -85.9695 30.6466 918 | v -22.5761 -84.6077 27.5772 919 | v -27.6906 -82.4568 22.4341 920 | v -33.6242 -79.1713 16.1885 921 | v -40.3253 -74.7601 9.14013 922 | v -46.3617 -69.9678 1.41213 923 | v -30.5545 -78.6365 27.3319 924 | v -36.5999 -74.8133 21.7192 925 | v -43.1673 -70.0959 15.6279 926 | v -49.4451 -64.7372 8.43389 927 | v -55.18 -57.3392 0.884469 928 | v -60.2458 -50.0097 -7.39841 929 | v -63.7479 -39.8638 -13.3748 930 | v -66.0635 -28.6502 -16.5802 931 | v -67.7421 -19.8011 -18.5195 932 | v -69.5028 -9.00132 -19.1825 933 | v -44.2455 -62.7308 21.8913 934 | v -50.12 -57.4819 15.8152 935 | v -56.1564 -51.6969 8.40945 936 | v -60.4471 -44.6121 1.2625 937 | v -63.4195 -36.2684 -3.14005 938 | v -65.3785 -27.1732 -5.79603 939 | v -66.8231 -17.6043 -7.15141 940 | v -68.2243 -7.41248 -7.28497 941 | v -69.4348 2.49731 -8.41229 942 | v 67.9764 45.4709 -3.9932 943 | v 69.284 35.5857 -9.5861 944 | v 70.5536 25.1119 -15.079 945 | v 20.5081 -83.7779 35.6267 946 | v -70.5536 25.1119 -15.079 947 | v -69.284 35.5857 -9.5861 948 | v -67.9764 45.4709 -3.9932 949 | v -65.7182 53.8351 2.99179 950 | v -62.5354 60.9292 9.75949 951 | v -56.9373 68.1109 18.2391 952 | v -50.6336 73.4201 25.5262 953 | v -42.945 77.9014 32.7139 954 | v -33.8831 81.3388 39.036 955 | v -23.1421 83.3656 43.4913 956 | v -11.637 84.1028 46.4817 957 | v 0 84.0663 47.8159 958 | v 11.637 84.1028 46.4817 959 | v 23.1421 83.3656 43.4913 960 | v 33.8831 81.3388 39.036 961 | v 42.945 77.9014 32.7139 962 | v 50.6336 73.4201 25.5262 963 | v 56.9373 68.1109 18.2391 964 | v 62.5354 60.9292 9.75949 965 | v 65.7182 53.8351 2.99179 966 | v 71.1171 12.954 -17.9061 967 | v 71.6188 13.0347 -27.1589 968 | v -70.6445 1.13963 -18.9558 969 | v -71.1171 12.954 -17.9061 970 | v 37.0717 -63.7628 32.3309 971 | v 31.7028 -69.0564 36.2083 972 | v 26.7977 -73.3337 40.1826 973 | v 21.7783 -76.8417 44.1891 974 | v 15.9146 -79.6908 48.0467 975 | v 8.58587 -81.1523 50.8326 976 | v 0 -81.5855 51.8395 977 | v -8.58587 -81.1523 50.8326 978 | v -15.9146 -79.6908 48.0467 979 | v -21.7783 -76.8417 44.1891 980 | v -26.7977 -73.3337 40.1826 981 | v -31.7028 -69.0564 36.2083 982 | v -37.0717 -63.7628 32.3309 983 | v 15.6721 -83.459 43.6503 984 | v 8.45593 -84.9654 45.9743 985 | v -8.45593 -84.9654 45.9743 986 | v -15.6721 -83.459 43.6503 987 | v -21.6545 -80.7383 40.3993 988 | v -26.6984 -77.5455 36.8222 989 | v -31.9449 -73.7039 32.3126 990 | v -37.6601 -69.0838 27.4503 991 | v 36.5999 -74.8133 21.7192 992 | v 30.5545 -78.6365 27.3319 993 | v 25.2925 -81.5053 32.0754 994 | v 14.8268 -85.7652 38.692 995 | v 7.99208 -86.9443 40.9674 996 | v -7.99208 -86.9443 40.9674 997 | v -14.8268 -85.7652 38.692 998 | v -20.5081 -83.7779 35.6267 999 | v -25.2925 -81.5053 32.0754 1000 | v 70.6445 1.13963 -18.9558 1001 | v 69.5028 -9.00132 -19.1825 1002 | v 67.7421 -19.8011 -18.5195 1003 | v 66.0635 -28.6502 -16.5802 1004 | v 63.7479 -39.8638 -13.3748 1005 | v 60.2458 -50.0097 -7.39841 1006 | v 55.18 -57.3392 0.884469 1007 | v 49.4451 -64.7372 8.43389 1008 | v 43.1673 -70.0959 15.6279 1009 | v 68.2243 -7.41248 -7.28497 1010 | v 69.4348 2.49731 -8.41229 1011 | v 69.3285 14.4125 -7.07298 1012 | v 68.7383 23.8618 -5.32413 1013 | v 67.5174 33.5033 -2.3677 1014 | v 65.4622 41.6475 3.52851 1015 | v 63.4345 51.212 9.34234 1016 | v 59.4324 57.57 17.3282 1017 | v 54.5102 63.353 23.9931 1018 | v 48.1177 67.9789 30.8314 1019 | v 40.4629 71.5381 37.6133 1020 | v 31.8467 74.5436 43.2958 1021 | v 21.6345 75.8016 47.5915 1022 | v 10.7758 75.915 49.9213 1023 | v 0 75.7128 50.9221 1024 | v -69.3285 14.4125 -7.07298 1025 | v 62.1317 -32.627 5.25244 1026 | v 64.0556 -24.4358 3.17144 1027 | v 65.4877 -15.3651 2.0868 1028 | v 66.8147 -5.90421 1.40307 1029 | v 67.683 4.25237 1.13389 1030 | v 67.9111 13.8663 1.74251 1031 | v 66.636 23.6363 2.76626 1032 | v 64.9884 32.0479 6.05763 1033 | v 63.0257 40.8076 10.5286 1034 | v 60.5047 47.3059 16.5134 1035 | v 56.9177 53.5938 22.792 1036 | v 51.8525 58.3161 29.4753 1037 | v 45.4734 62.3256 35.6621 1038 | v 37.9251 64.9665 41.6646 1039 | v 29.5601 66.9025 46.5369 1040 | v 19.9906 67.5317 50.1907 1041 | v 9.94963 67.3527 52.271 1042 | v 0 67.1194 52.9799 1043 | v 62.1662 -22.4966 11.5883 1044 | v 63.6894 -13.764 11.3539 1045 | v 65.001 -3.86114 10.9453 1046 | v 65.5954 5.84801 9.8663 1047 | v 65.5259 14.8349 8.69052 1048 | v 0 -88.6095 36.5076 1049 | v 0 -87.3839 41.6367 1050 | v 0 -85.5317 46.6815 1051 | v 21.6545 -80.7383 40.3993 1052 | v 26.6984 -77.5455 36.8222 1053 | v 31.9449 -73.7039 32.3126 1054 | v 37.6601 -69.0838 27.4503 1055 | v 44.2455 -62.7308 21.8913 1056 | v 50.12 -57.4819 15.8152 1057 | v 56.1564 -51.6969 8.40945 1058 | v 60.4471 -44.6121 1.2625 1059 | v 63.4195 -36.2684 -3.14005 1060 | v 65.3785 -27.1732 -5.79603 1061 | v 66.8231 -17.6043 -7.15141 1062 | v 27.8547 19.0757 40.1786 1063 | v 31.7193 18.928 40.7641 1064 | v 35.7312 19.0381 39.953 1065 | v 39.1581 19.531 38.434 1066 | v 41.6854 20.2496 36.6855 1067 | v 43.4998 20.9537 35.0943 1068 | v 44.4682 21.6347 34.1337 1069 | v 45.0464 22.2184 33.4597 1070 | v 45.3808 22.9424 33.1803 1071 | v 44.8926 23.4876 34.1648 1072 | v 44.4005 23.9089 34.9749 1073 | v 43.4666 24.8162 36.3685 1074 | v 41.5619 26.1635 38.2484 1075 | v 38.4394 27.8679 40.1275 1076 | v 35.1876 28.7517 41.3755 1077 | v 31.4066 28.8798 41.9964 1078 | v 28.3447 28.5022 41.4353 1079 | v 24.5251 27.2005 40.0625 1080 | v 22.0943 25.5539 38.7305 1081 | v 18.9009 23.0445 37.2055 1082 | v 16.3133 20.9986 36.3625 1083 | v 18.843 20.3399 37.0029 1084 | v 21.3768 20.1608 37.9594 1085 | v 24.2352 19.6064 39.0103 1086 | v -27.8547 19.0757 40.1786 1087 | v -24.2352 19.6064 39.0103 1088 | v -21.3768 20.1608 37.9594 1089 | v -18.843 20.3399 37.0029 1090 | v -16.3133 20.9986 36.3625 1091 | v -18.9009 23.0445 37.2055 1092 | v -22.0943 25.5539 38.7305 1093 | v -24.5251 27.2005 40.0625 1094 | v -28.3447 28.5022 41.4353 1095 | v -31.4066 28.8798 41.9964 1096 | v -35.1876 28.7517 41.3755 1097 | v -38.4394 27.8679 40.1275 1098 | v -41.5619 26.1635 38.2484 1099 | v -43.4666 24.8162 36.3685 1100 | v -44.4005 23.9089 34.9749 1101 | v -44.8926 23.4876 34.1648 1102 | v -45.3808 22.9424 33.1803 1103 | v -45.0464 22.2184 33.4597 1104 | v -44.4682 21.6347 34.1337 1105 | v -43.4998 20.9537 35.0943 1106 | v -41.6854 20.2496 36.6855 1107 | v -39.1581 19.531 38.434 1108 | v -35.7312 19.0381 39.953 1109 | v -31.7193 18.928 40.7641 1110 | v 51.2188 20.6825 27.5329 1111 | v 50.0694 17.4265 28.5771 1112 | v 48.3018 14.9994 30.7912 1113 | v 45.4657 13.2047 33.3325 1114 | v 42.283 12.4439 35.6005 1115 | v 38.72 12.0615 37.5722 1116 | v 34.8337 12.0138 39.1324 1117 | v 30.6895 12.3555 40.2412 1118 | v 26.8063 13.1432 40.509 1119 | v 23.1935 14.1295 40.5186 1120 | v 19.7643 15.3699 40.4205 1121 | v 16.6134 16.9415 40.3247 1122 | v 12.8303 20.6342 40.2366 1123 | v 13.0525 25.6968 41.456 1124 | v 16.1946 30.4722 42.4492 1125 | v 22.4991 32.5783 42.8442 1126 | v 27.514 33.709 43.8453 1127 | v 32.7593 34.1601 43.8756 1128 | v 38.0115 33.7628 42.8741 1129 | v 42.7416 32.6655 40.8986 1130 | v 46.6375 30.8621 38.0029 1131 | v 48.8426 29.011 34.4131 1132 | v 50.0394 26.5203 31.0868 1133 | v 51.2458 23.7383 28.3676 1134 | v -50.0394 26.5203 31.0868 1135 | v -51.2458 23.7383 28.3676 1136 | v -51.2188 20.6825 27.5329 1137 | v -50.0694 17.4265 28.5771 1138 | v -48.3018 14.9994 30.7912 1139 | v -45.4657 13.2047 33.3325 1140 | v -42.283 12.4439 35.6005 1141 | v -38.72 12.0615 37.5722 1142 | v -34.8337 12.0138 39.1324 1143 | v -30.6895 12.3555 40.2412 1144 | v -26.8063 13.1432 40.509 1145 | v -23.1935 14.1295 40.5186 1146 | v -19.7643 15.3699 40.4205 1147 | v -16.6134 16.9415 40.3247 1148 | v -12.8303 20.6342 40.2366 1149 | v -13.0525 25.6968 41.456 1150 | v -16.1946 30.4722 42.4492 1151 | v -22.4991 32.5783 42.8442 1152 | v -27.514 33.709 43.8453 1153 | v -32.7593 34.1601 43.8756 1154 | v -38.0115 33.7628 42.8741 1155 | v -42.7416 32.6655 40.8986 1156 | v -46.6375 30.8621 38.0029 1157 | v -48.8426 29.011 34.4131 1158 | v 45.7437 21.1859 32.2539 1159 | v 45.1029 20.2575 32.9431 1160 | v 43.7163 19.547 34.5476 1161 | v 41.7267 18.7825 36.3111 1162 | v 38.9867 18.2015 38.2406 1163 | v 35.4877 17.7872 39.8853 1164 | v 31.7342 17.7711 40.6463 1165 | v 27.9105 18.0943 40.2394 1166 | v 24.4714 18.6315 39.3894 1167 | v 21.2049 19.2724 38.5236 1168 | v 18.5878 19.8456 37.7841 1169 | v 16.1155 20.7918 37.0268 1170 | v 18.4669 23.5957 37.7944 1171 | v 21.1147 26.3043 38.5231 1172 | v 23.6835 28.347 39.8228 1173 | v 27.1528 30.3512 40.8627 1174 | v 30.9576 30.7816 41.3826 1175 | v 34.7974 30.4881 40.6779 1176 | v 38.3094 29.5092 39.3909 1177 | v 41.667 27.8805 37.5974 1178 | v 44.0174 26.2975 35.9555 1179 | v 45.3601 24.8512 34.1961 1180 | v 46.0902 23.8141 32.7848 1181 | v 46.2781 22.4766 31.8435 1182 | v -46.2781 22.4766 31.8435 1183 | v -46.0902 23.8141 32.7848 1184 | v -45.3601 24.8512 34.1961 1185 | v -44.0174 26.2975 35.9555 1186 | v -41.667 27.8805 37.5974 1187 | v -38.3094 29.5092 39.3909 1188 | v -34.7974 30.4881 40.6779 1189 | v -30.9576 30.7816 41.3826 1190 | v -27.1528 30.3512 40.8627 1191 | v -23.6835 28.347 39.8228 1192 | v -21.1147 26.3043 38.5231 1193 | v -18.4669 23.5957 37.7944 1194 | v -16.1155 20.7918 37.0268 1195 | v -18.5878 19.8456 37.7841 1196 | v -21.2049 19.2724 38.5236 1197 | v -24.4714 18.6315 39.3894 1198 | v -27.9105 18.0943 40.2394 1199 | v -31.7342 17.7711 40.6463 1200 | v -35.4877 17.7872 39.8853 1201 | v -38.9867 18.2015 38.2406 1202 | v -41.7267 18.7825 36.3111 1203 | v -43.7163 19.547 34.5476 1204 | v -45.1029 20.2575 32.9431 1205 | v -45.7437 21.1859 32.2539 1206 | v -9.47555 -12.8716 59.0479 1207 | v 9.47555 -12.8716 59.0479 1208 | v 22.4547 -45.0757 48.214 1209 | v 21.1875 -46.5133 49.8136 1210 | v 23.3935 -43.3571 47.0428 1211 | v -23.3935 -43.3571 47.0428 1212 | v -22.4547 -45.0757 48.214 1213 | v -21.1875 -46.5133 49.8136 1214 | v 67.5797 -21.6229 -27.1015 1215 | v 66.0565 -29.5634 -26.618 1216 | v 62.8494 -42.1343 -24.4795 1217 | v 57.6003 -55.7751 -16.3893 1218 | v 18.0263 -40.9175 49.7935 1219 | v -18.0263 -40.9175 49.7935 1220 | v -19.004 -42.4295 50.2957 1221 | vt 0.500004 0.44659 1222 | vt 0.500002 0.433286 1223 | vt 0.500008 0.457836 1224 | vt 0.50001 0.467434 1225 | vt 0.500014 0.473486 1226 | vt 0.50001 0.487894 1227 | vt 0.500004 0.50398 1228 | vt 0.500002 0.512258 1229 | vt 0.500004 0.520412 1230 | vt 0.500006 0.532736 1231 | vt 0.500008 0.546218 1232 | vt 0.500004 0.560456 1233 | vt 0.500004 0.576574 1234 | vt 0.500002 0.594296 1235 | vt 0.500006 0.615818 1236 | vt 0.499998 0.693998 1237 | vt 0.49998 0.73877 1238 | vt 0.499934 0.783618 1239 | vt 0.499986 0.82432 1240 | vt 0.499998 0.850998 1241 | vt 0.499998 0.962704 1242 | vt 0.499996 0.422884 1243 | vt 0.499998 0.415054 1244 | vt 0.5 0.4073 1245 | vt 0.500002 0.4009 1246 | vt 0.499998 0.353958 1247 | vt 0.499998 0.346756 1248 | vt 0.499998 0.340006 1249 | vt 0.499998 0.327698 1250 | vt 0.499998 0.31549 1251 | vt 0.499996 0.30122 1252 | vt 0.499996 0.284708 1253 | vt 0.499998 0.264134 1254 | vt 0.499998 0.24575 1255 | vt 0.499996 0.227916 1256 | vt 0.499988 0.20483 1257 | vt 0.5 0.64813 1258 | vt 0.500008 0.495846 1259 | vt 0.500012 0.480108 1260 | vt 0.04768 0.756106 1261 | vt 0.337302 0.605786 1262 | vt 0.320506 0.600428 1263 | vt 0.3027 0.598698 1264 | vt 0.261456 0.614726 1265 | vt 0.27214 0.606824 1266 | vt 0.285812 0.601182 1267 | vt 0.24311 0.650056 1268 | vt 0.352118 0.613858 1269 | vt 0.363434 0.623724 1270 | vt 0.41233 0.60879 1271 | vt 0.293472 0.705802 1272 | vt 0.311796 0.708274 1273 | vt 0.333014 0.70588 1274 | vt 0.265974 0.692176 1275 | vt 0.278212 0.6999 1276 | vt 0.25624 0.683116 1277 | vt 0.248702 0.672574 1278 | vt 0.023802 0.655308 1279 | vt 0.338954 0.308258 1280 | vt 0.312648 0.29296 1281 | vt 0.27028 0.272952 1282 | vt 0.17754 0.32381 1283 | vt 0.389606 0.425528 1284 | vt 0.37339 0.433276 1285 | vt 0.354054 0.44042 1286 | vt 0.364172 0.459164 1287 | vt 0.440006 0.475466 1288 | vt 0.44031 0.485946 1289 | vt 0.4392 0.480462 1290 | vt 0.446856 0.481894 1291 | vt 0.465484 0.445428 1292 | vt 0.465708 0.49724 1293 | vt 0.465092 0.493018 1294 | vt 0.474544 0.48597 1295 | vt 0.469472 0.483964 1296 | vt 0.480056 0.48755 1297 | vt 0.472354 0.472568 1298 | vt 0.464258 0.473044 1299 | vt 0.458814 0.473916 1300 | vt 0.448964 0.486928 1301 | vt 0.44423 0.49222 1302 | vt 0.453122 0.49611 1303 | vt 0.450142 0.503648 1304 | vt 0.483152 0.446566 1305 | vt 0.41359 0.427304 1306 | vt 0.429394 0.436588 1307 | vt 0.443382 0.454506 1308 | vt 0.440306 0.472246 1309 | vt 0.463056 0.457332 1310 | vt 0.448066 0.44194 1311 | vt 0.484974 0.432868 1312 | vt 0.469364 0.43183 1313 | vt 0.486618 0.422306 1314 | vt 0.488024 0.40677 1315 | vt 0.472662 0.420154 1316 | vt 0.474692 0.404742 1317 | vt 0.458388 0.416308 1318 | vt 0.461854 0.401836 1319 | vt 0.453612 0.428168 1320 | vt 0.437598 0.42247 1321 | vt 0.423564 0.415246 1322 | vt 0.40234 0.416056 1323 | vt 0.413008 0.407028 1324 | vt 0.433928 0.389672 1325 | vt 0.422022 0.399448 1326 | vt 0.450318 0.3981 1327 | vt 0.440938 0.394024 1328 | vt 0.43184 0.405434 1329 | vt 0.444292 0.41133 1330 | vt 0.358198 0.320634 1331 | vt 0.385792 0.341234 1332 | vt 0.373386 0.331628 1333 | vt 0.355884 0.28139 1334 | vt 0.33504 0.26015 1335 | vt 0.360874 0.236564 1336 | vt 0.394614 0.325718 1337 | vt 0.413946 0.324808 1338 | vt 0.412156 0.359727 1339 | vt 0.396232 0.348814 1340 | vt 0.403422 0.33604 1341 | vt 0.417509 0.351862 1342 | vt 0.435141 0.357526 1343 | vt 0.42602 0.344755 1344 | vt 0.420469 0.335494 1345 | vt 0.488178 0.487572 1346 | vt 0.477018 0.50075 1347 | vt 0.488218 0.502908 1348 | vt 0.48663 0.51094 1349 | vt 0.47401 0.50863 1350 | vt 0.485318 0.519992 1351 | vt 0.07255 0.795354 1352 | vt 0.325402 0.928414 1353 | vt 0.195688 0.698242 1354 | vt 0.402826 0.58095 1355 | vt 0.39408 0.593002 1356 | vt 0.428954 0.579528 1357 | vt 0.434094 0.565144 1358 | vt 0.4431 0.528324 1359 | vt 0.391722 0.552538 1360 | vt 0.411076 0.533314 1361 | vt 0.43336 0.511416 1362 | vt 0.446316 0.515152 1363 | vt 0.438806 0.49904 1364 | vt 0.429772 0.524978 1365 | vt 0.409642 0.568442 1366 | vt 0.383548 0.564738 1367 | vt 0.375858 0.576982 1368 | vt 0.342838 0.469258 1369 | vt 0.33219 0.448416 1370 | vt 0.307236 0.45855 1371 | vt 0.318874 0.480906 1372 | vt 0.286284 0.501296 1373 | vt 0.246316 0.505574 1374 | vt 0.251092 0.536674 1375 | vt 0.282894 0.534404 1376 | vt 0.221232 0.549948 1377 | vt 0.484982 0.532752 1378 | vt 0.483524 0.575246 1379 | vt 0.481906 0.59251 1380 | vt 0.37423 0.816124 1381 | vt 0.422426 0.594922 1382 | vt 0.301672 0.760654 1383 | vt 0.22563 0.782818 1384 | vt 0.27305 0.75885 1385 | vt 0.226378 0.74405 1386 | vt 0.207564 0.722926 1387 | vt 0.180698 0.70396 1388 | vt 0.104894 0.82927 1389 | vt 0.43009 0.74737 1390 | vt 0.352724 0.698688 1391 | vt 0.377856 0.754988 1392 | vt 0.368366 0.687232 1393 | vt 0.390004 0.375701 1394 | vt 0.377349 0.375503 1395 | vt 0.36096 0.375491 1396 | vt 0.341606 0.375486 1397 | vt 0.319572 0.375488 1398 | vt 0.29734 0.375952 1399 | vt 0.15818 0.591908 1400 | vt 0.300326 0.433574 1401 | vt 0.325268 0.426304 1402 | vt 0.346622 0.420118 1403 | vt 0.366228 0.414608 1404 | vt 0.382332 0.4093 1405 | vt 0.395298 0.403456 1406 | vt 0.406146 0.397728 1407 | vt 0.415514 0.392654 1408 | vt 0.42934 0.385456 1409 | vt 0.400487 0.37571 1410 | vt 0.424512 0.375603 1411 | vt 0.409507 0.375692 1412 | vt 0.371766 0.29798 1413 | vt 0.384265 0.312623 1414 | vt 0.388721 0.278855 1415 | vt 0.406442 0.312408 1416 | vt 0.398282 0.296036 1417 | vt 0.376368 0.2598 1418 | vt 0.236036 0.769642 1419 | vt 0.213622 0.755538 1420 | vt 0.199802 0.765296 1421 | vt 0.17843 0.740876 1422 | vt 0.19394 0.73132 1423 | vt 0.42187 0.498598 1424 | vt 0.43322 0.49306 1425 | vt 0.41628 0.49139 1426 | vt 0.383766 0.449766 1427 | vt 0.429756 0.487688 1428 | vt 0.335244 0.759602 1429 | vt 0.00498 0.486201 1430 | vt 0.328798 0.812868 1431 | vt 0.287326 0.805616 1432 | vt 0.274804 0.911474 1433 | vt 0.227518 0.894102 1434 | vt 0.142176 0.853336 1435 | vt 0.104008 0.732104 1436 | vt 0.121776 0.770697 1437 | vt 0.146158 0.800583 1438 | vt 0.177969 0.824587 1439 | vt 0.255816 0.858605 1440 | vt 0.300284 0.873066 1441 | vt 0.348176 0.885416 1442 | vt 0.141018 0.760321 1443 | vt 0.166549 0.787343 1444 | vt 0.19511 0.810943 1445 | vt 0.267966 0.840722 1446 | vt 0.311338 0.853164 1447 | vt 0.35791 0.862332 1448 | vt 0.159546 0.75113 1449 | vt 0.181782 0.777526 1450 | vt 0.208894 0.799228 1451 | vt 0.27817 0.82429 1452 | vt 0.3208 0.834276 1453 | vt 0.36634 0.840756 1454 | vt 0.411572 0.846508 1455 | vt 0.16398 0.710564 1456 | vt 0.155788 0.674884 1457 | vt 0.124894 0.724214 1458 | vt 0.487618 0.414854 1459 | vt 0.474328 0.41233 1460 | vt 0.46064 0.408656 1461 | vt 0.448006 0.404328 1462 | vt 0.437056 0.399274 1463 | vt 0.428494 0.394158 1464 | vt 0.42317 0.388718 1465 | vt 0.417408 0.375647 1466 | vt 0.418983 0.363678 1467 | vt 0.430969 0.352548 1468 | vt 0.43986 0.362775 1469 | vt 0.434558 0.366032 1470 | vt 0.431365 0.375861 1471 | vt 0.435024 0.38286 1472 | vt 0.438346 0.386434 1473 | vt 0.444096 0.389872 1474 | vt 0.452288 0.393432 1475 | vt 0.462636 0.396336 1476 | vt 0.474762 0.39855 1477 | vt 0.488352 0.400134 1478 | vt 0.473006 0.227682 1479 | vt 0.478332 0.265318 1480 | vt 0.4804 0.285962 1481 | vt 0.482086 0.302356 1482 | vt 0.483568 0.316312 1483 | vt 0.484894 0.328462 1484 | vt 0.485706 0.340632 1485 | vt 0.48585 0.347318 1486 | vt 0.486378 0.35441 1487 | vt 0.447404 0.228846 1488 | vt 0.45591 0.2679 1489 | vt 0.459596 0.28832 1490 | vt 0.46298 0.304346 1491 | vt 0.46556 0.318168 1492 | vt 0.467652 0.330094 1493 | vt 0.469478 0.34225 1494 | vt 0.470246 0.348616 1495 | vt 0.471764 0.355616 1496 | vt 0.448173 0.359926 1497 | vt 0.444549 0.353876 1498 | vt 0.441393 0.348209 1499 | vt 0.437086 0.338709 1500 | vt 0.432674 0.327616 1501 | vt 0.427604 0.315312 1502 | vt 0.401552 0.541668 1503 | vt 0.423175 0.233984 1504 | vt 0.434986 0.273426 1505 | vt 0.439564 0.293136 1506 | vt 0.444308 0.308232 1507 | vt 0.44806 0.321552 1508 | vt 0.451133 0.333399 1509 | vt 0.453804 0.344659 1510 | vt 0.455856 0.35085 1511 | vt 0.458876 0.357504 1512 | vt 0.40103 0.440112 1513 | vt 0.411684 0.50885 1514 | vt 0.48219 0.45799 1515 | vt 0.426384 0.505776 1516 | vt 0.01481 0.537314 1517 | vt 0.419374 0.45281 1518 | vt 0.42611 0.482268 1519 | vt 0.421996 0.518434 1520 | vt 0.437694 0.552332 1521 | vt 0.484682 0.5605 1522 | vt 0.440688 0.540934 1523 | vt 0.484958 0.546294 1524 | vt 0.422786 0.546612 1525 | vt 0.416914 0.556644 1526 | vt 0.431723 0.369411 1527 | vt 0.425291 0.36661 1528 | vt 0.46284 0.46559 1529 | vt 0.424174 0.473776 1530 | vt 0.394048 0.464326 1531 | vt 0.375216 0.475062 1532 | vt 0.355256 0.48738 1533 | vt 0.409548 0.48343 1534 | vt 0.399308 0.507164 1535 | vt 0.386024 0.522358 1536 | vt 0.417612 0.526628 1537 | vt 0.42698 0.537254 1538 | vt 0.37401 0.536308 1539 | vt 0.364772 0.549922 1540 | vt 0.356622 0.563502 1541 | vt 0.337358 0.501276 1542 | vt 0.320736 0.51931 1543 | vt 0.310466 0.539794 1544 | vt 0.482956 0.467034 1545 | vt 0.485046 0.473544 1546 | vt 0.417106 0.509482 1547 | vt 0.247496 0.754048 1548 | vt 0.294846 0.78751 1549 | vt 0.333082 0.79311 1550 | vt 0.379228 0.79342 1551 | vt 0.183366 0.874944 1552 | vt 0.214554 0.843633 1553 | vt 0.229308 0.827429 1554 | vt 0.240842 0.814064 1555 | vt 0.254138 0.795928 1556 | vt 0.26423 0.779668 1557 | vt 0.421504 0.301204 1558 | vt 0.415636 0.282846 1559 | vt 0.408446 0.26367 1560 | vt 0.429796 0.253674 1561 | vt 0.399353 0.243835 1562 | vt 0.388004 0.220226 1563 | vt 0.414934 0.210684 1564 | vt 0.4418 0.206236 1565 | vt 0.470246 0.20449 1566 | vt 0.451898 0.247732 1567 | vt 0.475804 0.246298 1568 | vt 0.472612 0.740304 1569 | vt 0.427818 0.785984 1570 | vt 0.42106 0.817886 1571 | vt 0.404983 0.869579 1572 | vt 0.397609 0.89486 1573 | vt 0.37966 0.944954 1574 | vt 0.180892 0.603668 1575 | vt 0.208738 0.51728 1576 | vt 0.1743 0.638888 1577 | vt 0.250864 0.62624 1578 | vt 0.377838 0.672354 1579 | vt 0.378658 0.65419 1580 | vt 0.44213 0.674848 1581 | vt 0.478094 0.691632 1582 | vt 0.465038 0.59008 1583 | vt 0.471302 0.532048 1584 | vt 0.470628 0.545642 1585 | vt 0.467552 0.573646 1586 | vt 0.46944 0.559152 1587 | vt 0.454988 0.639656 1588 | vt 0.461666 0.611664 1589 | vt 0.447568 0.586858 1590 | vt 0.451334 0.570322 1591 | vt 0.43221 0.625724 1592 | vt 0.441822 0.605014 1593 | vt 0.472096 0.51921 1594 | vt 0.459156 0.517876 1595 | vt 0.46193 0.506312 1596 | vt 0.153736 0.635972 1597 | vt 0.021244 0.591508 1598 | vt 0.214182 0.592 1599 | vt 0.232516 0.572886 1600 | vt 0.256374 0.561916 1601 | vt 0.2816 0.557954 1602 | vt 0.306036 0.558404 1603 | vt 0.329086 0.566174 1604 | vt 0.349652 0.576338 1605 | vt 0.368064 0.58849 1606 | vt 0.384112 0.603356 1607 | vt 0.39958 0.61899 1608 | vt 0.48073 0.615264 1609 | vt 0.200356 0.61548 1610 | vt 0.197058 0.573466 1611 | vt 0.171854 0.53871 1612 | vt 0.130829 0.397195 1613 | vt 0.106442 0.185814 1614 | vt 0.432552 0.379642 1615 | vt 0.426508 0.3811 1616 | vt 0.420052 0.382724 1617 | vt 0.4121 0.384722 1618 | vt 0.402698 0.38721 1619 | vt 0.391958 0.39006 1620 | vt 0.378514 0.39295 1621 | vt 0.362146 0.39544 1622 | vt 0.342576 0.398856 1623 | vt 0.321216 0.402638 1624 | vt 0.297814 0.4072 1625 | vt 0.430915 0.372726 1626 | vt 0.424344 0.371052 1627 | vt 0.418014 0.369704 1628 | vt 0.410445 0.367885 1629 | vt 0.392269 0.3624 1630 | vt 0.380127 0.358198 1631 | vt 0.365645 0.352835 1632 | vt 0.348242 0.346824 1633 | vt 0.327254 0.341054 1634 | vt 0.301864 0.335966 1635 | vt 0.268574 0.333496 1636 | vt 0.19326 0.642134 1637 | vt 0.244388 0.638634 1638 | vt 0.244468 0.661288 1639 | vt 0.192294 0.67031 1640 | vt 0.17417 0.672876 1641 | vt 0.466764 0.78447 1642 | vt 0.461514 0.820502 1643 | vt 0.456264 0.850666 1644 | vt 0.452666 0.873498 1645 | vt 0.448565 0.900734 1646 | vt 0.438428 0.957896 1647 | vt 0.372448 0.63666 1648 | vt 0.478848 0.646124 1649 | vt 0.487422 0.495046 1650 | vt 0.478624 0.494392 1651 | vt 0.472514 0.492506 1652 | vt 0.46866 0.489096 1653 | vt 0.416504 0.63962 1654 | vt 0.335252 0.550874 1655 | vt 0.344408 0.535274 1656 | vt 0.356682 0.519786 1657 | vt 0.370732 0.504648 1658 | vt 0.385428 0.488236 1659 | vt 0.403226 0.47459 1660 | vt 0.422246 0.466334 1661 | vt 0.441404 0.464092 1662 | vt 0.453344 0.470712 1663 | vt 0.450204 0.473028 1664 | vt 0.454538 0.491896 1665 | vt 0.457142 0.530664 1666 | vt 0.455748 0.543886 1667 | vt 0.454294 0.556764 1668 | vt 0.278288 0.468962 1669 | vt 0.273914 0.439964 1670 | vt 0.271102 0.412748 1671 | vt 0.269646 0.377166 1672 | vt 0.244718 0.477522 1673 | vt 0.242166 0.447234 1674 | vt 0.239776 0.41676 1675 | vt 0.209254 0.451062 1676 | vt 0.207894 0.484302 1677 | vt 0.17338 0.488338 1678 | vt 0.176798 0.44963 1679 | vt 0.13037 0.634153 1680 | vt 0.130233 0.586344 1681 | vt 0.156926 0.409792 1682 | vt 0.14832 0.357198 1683 | vt 0.057452 0.24178 1684 | vt 0.134854 0.533896 1685 | vt 0.106258 0.533001 1686 | vt 0.111497 0.48455 1687 | vt 0.090609 0.690325 1688 | vt 0.029666 0.708354 1689 | vt 0.11896 0.44105 1690 | vt 0.140963 0.48749 1691 | vt 0.148586 0.446486 1692 | vt 0.106093 0.584871 1693 | vt 0.109035 0.636273 1694 | vt 0.114484 0.68417 1695 | vt 0.143918 0.71761 1696 | vt 0.133728 0.678098 1697 | vt 0.18375 0.41726 1698 | vt 0.214844 0.296942 1699 | vt 0.229234 0.34399 1700 | vt 0.237882 0.383338 1701 | vt 0.197928 0.359288 1702 | vt 0.208218 0.39046 1703 | vt 0.174858 0.381464 1704 | vt 0.209758 0.419882 1705 | vt 0.18884 0.39662 1706 | vt 0.48713 0.480736 1707 | vt 0.478408 0.480058 1708 | vt 0.471746 0.478884 1709 | vt 0.46612 0.47795 1710 | vt 0.952326 0.756098 1711 | vt 0.662696 0.605786 1712 | vt 0.679494 0.60043 1713 | vt 0.6973 0.598706 1714 | vt 0.738482 0.614778 1715 | vt 0.72784 0.60686 1716 | vt 0.714178 0.601192 1717 | vt 0.756754 0.649862 1718 | vt 0.647876 0.613856 1719 | vt 0.636566 0.623724 1720 | vt 0.58768 0.608756 1721 | vt 0.706514 0.705786 1722 | vt 0.688238 0.708342 1723 | vt 0.667 0.706048 1724 | vt 0.734078 0.69208 1725 | vt 0.721812 0.699788 1726 | vt 0.743814 0.683074 1727 | vt 0.751324 0.672506 1728 | vt 0.661026 0.308242 1729 | vt 0.687332 0.292896 1730 | vt 0.7297 0.27284 1731 | vt 0.822432 0.323818 1732 | vt 0.6104 0.425572 1733 | vt 0.62661 0.433326 1734 | vt 0.64595 0.440462 1735 | vt 0.635826 0.459216 1736 | vt 0.560092 0.475506 1737 | vt 0.559782 0.486048 1738 | vt 0.560926 0.480514 1739 | vt 0.553176 0.481984 1740 | vt 0.534532 0.445384 1741 | vt 0.534318 0.497266 1742 | vt 0.534934 0.493064 1743 | vt 0.525444 0.485972 1744 | vt 0.530518 0.48396 1745 | vt 0.519988 0.487554 1746 | vt 0.527706 0.472552 1747 | vt 0.535794 0.473026 1748 | vt 0.54123 0.473888 1749 | vt 0.55107 0.486898 1750 | vt 0.55583 0.492244 1751 | vt 0.546914 0.49612 1752 | vt 0.549888 0.50368 1753 | vt 0.516868 0.446508 1754 | vt 0.586422 0.427334 1755 | vt 0.570616 0.436586 1756 | vt 0.556644 0.45449 1757 | vt 0.559752 0.472254 1758 | vt 0.536982 0.457306 1759 | vt 0.551948 0.441914 1760 | vt 0.51504 0.432838 1761 | vt 0.530646 0.431788 1762 | vt 0.513384 0.422306 1763 | vt 0.511978 0.406756 1764 | vt 0.527352 0.420118 1765 | vt 0.525318 0.404722 1766 | vt 0.541618 0.416264 1767 | vt 0.53816 0.40182 1768 | vt 0.546392 0.428136 1769 | vt 0.562406 0.422462 1770 | vt 0.57645 0.415276 1771 | vt 0.597676 0.4161 1772 | vt 0.587002 0.407111 1773 | vt 0.566051 0.389672 1774 | vt 0.577837 0.399514 1775 | vt 0.549704 0.398092 1776 | vt 0.559068 0.394016 1777 | vt 0.568151 0.405458 1778 | vt 0.55571 0.411306 1779 | vt 0.641784 0.320638 1780 | vt 0.614206 0.34124 1781 | vt 0.626602 0.331636 1782 | vt 0.644096 0.281378 1783 | vt 0.66495 0.260118 1784 | vt 0.639078 0.23664 1785 | vt 0.605376 0.325742 1786 | vt 0.586019 0.324817 1787 | vt 0.58783 0.359674 1788 | vt 0.60378 0.348816 1789 | vt 0.59657 0.336058 1790 | vt 0.582579 0.351725 1791 | vt 0.564883 0.357462 1792 | vt 0.574067 0.344628 1793 | vt 0.579518 0.33545 1794 | vt 0.511874 0.487562 1795 | vt 0.52301 0.50073 1796 | vt 0.511808 0.502888 1797 | vt 0.513386 0.510918 1798 | vt 0.526006 0.508608 1799 | vt 0.514702 0.51997 1800 | vt 0.92745 0.795354 1801 | vt 0.674616 0.928332 1802 | vt 0.80437 0.698302 1803 | vt 0.597186 0.580934 1804 | vt 0.605932 0.592992 1805 | vt 0.57107 0.579502 1806 | vt 0.565934 0.565128 1807 | vt 0.556974 0.528272 1808 | vt 0.608284 0.55255 1809 | vt 0.588986 0.533296 1810 | vt 0.566776 0.511184 1811 | vt 0.553734 0.515104 1812 | vt 0.561322 0.499254 1813 | vt 0.570392 0.524852 1814 | vt 0.590376 0.568434 1815 | vt 0.616454 0.564728 1816 | vt 0.624142 0.576982 1817 | vt 0.65716 0.469316 1818 | vt 0.667816 0.448438 1819 | vt 0.692764 0.458562 1820 | vt 0.68112 0.480964 1821 | vt 0.71372 0.501316 1822 | vt 0.753686 0.505574 1823 | vt 0.748898 0.536656 1824 | vt 0.71704 0.534408 1825 | vt 0.77874 0.549926 1826 | vt 0.515048 0.532726 1827 | vt 0.5165 0.575202 1828 | vt 0.51808 0.592474 1829 | vt 0.625786 0.816124 1830 | vt 0.577586 0.594906 1831 | vt 0.69833 0.760652 1832 | vt 0.774364 0.782814 1833 | vt 0.726952 0.758854 1834 | vt 0.77363 0.744068 1835 | vt 0.792486 0.722976 1836 | vt 0.819302 0.704004 1837 | vt 0.895096 0.829276 1838 | vt 0.569878 0.747386 1839 | vt 0.64723 0.698782 1840 | vt 0.622148 0.754982 1841 | vt 0.631364 0.68728 1842 | vt 0.610066 0.375662 1843 | vt 0.622684 0.375482 1844 | vt 0.63905 0.375482 1845 | vt 0.65839 0.375482 1846 | vt 0.68042 0.375482 1847 | vt 0.702644 0.375948 1848 | vt 0.841796 0.591982 1849 | vt 0.699666 0.433586 1850 | vt 0.674742 0.426314 1851 | vt 0.653386 0.420132 1852 | vt 0.633776 0.414624 1853 | vt 0.617682 0.409316 1854 | vt 0.604724 0.403466 1855 | vt 0.593862 0.39775 1856 | vt 0.58447 0.39269 1857 | vt 0.570696 0.385478 1858 | vt 0.599642 0.37566 1859 | vt 0.575721 0.375665 1860 | vt 0.590638 0.37566 1861 | vt 0.628218 0.297984 1862 | vt 0.615704 0.31264 1863 | vt 0.611256 0.27886 1864 | vt 0.593529 0.312455 1865 | vt 0.60171 0.296054 1866 | vt 0.623604 0.259828 1867 | vt 0.763962 0.769642 1868 | vt 0.78637 0.75554 1869 | vt 0.800184 0.765286 1870 | vt 0.821558 0.740886 1871 | vt 0.806068 0.73135 1872 | vt 0.578106 0.498114 1873 | vt 0.567162 0.49353 1874 | vt 0.583658 0.49105 1875 | vt 0.616232 0.449806 1876 | vt 0.570638 0.487992 1877 | vt 0.664768 0.759604 1878 | vt 0.671204 0.81287 1879 | vt 0.712674 0.805616 1880 | vt 0.725234 0.911366 1881 | vt 0.772506 0.894054 1882 | vt 0.85781 0.853356 1883 | vt 0.840434 0.751132 1884 | vt 0.818202 0.777516 1885 | vt 0.7911 0.799224 1886 | vt 0.72183 0.82429 1887 | vt 0.6792 0.834276 1888 | vt 0.633664 0.840758 1889 | vt 0.588436 0.846512 1890 | vt 0.836004 0.71061 1891 | vt 0.844162 0.675002 1892 | vt 0.51238 0.414838 1893 | vt 0.525678 0.412298 1894 | vt 0.539372 0.408624 1895 | vt 0.552006 0.404302 1896 | vt 0.562937 0.399262 1897 | vt 0.571472 0.39416 1898 | vt 0.577044 0.388759 1899 | vt 0.582709 0.375658 1900 | vt 0.580782 0.363788 1901 | vt 0.576922 0.357615 1902 | vt 0.569175 0.352423 1903 | vt 0.560066 0.362657 1904 | vt 0.565385 0.36601 1905 | vt 0.56886 0.375876 1906 | vt 0.565063 0.382841 1907 | vt 0.561352 0.386383 1908 | vt 0.55585 0.389847 1909 | vt 0.54773 0.393422 1910 | vt 0.537382 0.396328 1911 | vt 0.52525 0.398544 1912 | vt 0.511652 0.40013 1913 | vt 0.526972 0.227692 1914 | vt 0.521668 0.265312 1915 | vt 0.519596 0.285958 1916 | vt 0.517906 0.302372 1917 | vt 0.516422 0.316328 1918 | vt 0.515096 0.328482 1919 | vt 0.51429 0.340636 1920 | vt 0.514148 0.347316 1921 | vt 0.51362 0.354406 1922 | vt 0.552504 0.228928 1923 | vt 0.544092 0.26789 1924 | vt 0.540406 0.288308 1925 | vt 0.53701 0.304356 1926 | vt 0.534412 0.318202 1927 | vt 0.53231 0.330124 1928 | vt 0.53051 0.34225 1929 | vt 0.529746 0.348614 1930 | vt 0.528226 0.35562 1931 | vt 0.551711 0.359843 1932 | vt 0.555624 0.353729 1933 | vt 0.559031 0.34784 1934 | vt 0.562976 0.33851 1935 | vt 0.567312 0.327564 1936 | vt 0.572374 0.315319 1937 | vt 0.598508 0.541676 1938 | vt 0.576728 0.234072 1939 | vt 0.56502 0.273414 1940 | vt 0.560442 0.29313 1941 | vt 0.555686 0.308222 1942 | vt 0.551922 0.321498 1943 | vt 0.548878 0.333174 1944 | vt 0.546262 0.344556 1945 | vt 0.544179 0.350819 1946 | vt 0.541076 0.357506 1947 | vt 0.598974 0.440136 1948 | vt 0.588402 0.508614 1949 | vt 0.517846 0.457944 1950 | vt 0.573706 0.505168 1951 | vt 0.98519 0.537312 1952 | vt 0.58064 0.452812 1953 | vt 0.574146 0.482396 1954 | vt 0.578194 0.518078 1955 | vt 0.562336 0.552316 1956 | vt 0.51535 0.560462 1957 | vt 0.55937 0.540898 1958 | vt 0.515084 0.546262 1959 | vt 0.577242 0.5466 1960 | vt 0.58312 0.556642 1961 | vt 0.568407 0.369364 1962 | vt 0.574466 0.366757 1963 | vt 0.537214 0.465572 1964 | vt 0.5759 0.473782 1965 | vt 0.605952 0.464344 1966 | vt 0.624774 0.4751 1967 | vt 0.644734 0.487444 1968 | vt 0.590516 0.483474 1969 | vt 0.600738 0.507198 1970 | vt 0.613972 0.522386 1971 | vt 0.582512 0.526508 1972 | vt 0.573126 0.53721 1973 | vt 0.625978 0.536346 1974 | vt 0.635208 0.549938 1975 | vt 0.643368 0.563516 1976 | vt 0.66263 0.501354 1977 | vt 0.67925 0.519384 1978 | vt 0.689528 0.539808 1979 | vt 0.51709 0.467002 1980 | vt 0.515018 0.473526 1981 | vt 0.583004 0.509008 1982 | vt 0.752506 0.754058 1983 | vt 0.705154 0.78751 1984 | vt 0.666926 0.793112 1985 | vt 0.620778 0.793418 1986 | vt 0.816628 0.874954 1987 | vt 0.759156 0.814064 1988 | vt 0.745862 0.795926 1989 | vt 0.73577 0.779666 1990 | vt 0.578479 0.30124 1991 | vt 0.584364 0.282856 1992 | vt 0.591538 0.263702 1993 | vt 0.570178 0.253718 1994 | vt 0.600586 0.24389 1995 | vt 0.61187 0.220472 1996 | vt 0.584848 0.21107 1997 | vt 0.557954 0.20657 1998 | vt 0.529694 0.204546 1999 | vt 0.548086 0.247756 2000 | vt 0.524196 0.2463 2001 | vt 0.527284 0.74031 2002 | vt 0.572084 0.785962 2003 | vt 0.578932 0.817886 2004 | vt 0.620336 0.944962 2005 | vt 0.818966 0.603718 2006 | vt 0.791268 0.517274 2007 | vt 0.825628 0.63897 2008 | vt 0.749078 0.626262 2009 | vt 0.621986 0.672326 2010 | vt 0.62135 0.654224 2011 | vt 0.557858 0.674846 2012 | vt 0.52188 0.691638 2013 | vt 0.534972 0.590022 2014 | vt 0.528718 0.532034 2015 | vt 0.529398 0.545624 2016 | vt 0.532476 0.573604 2017 | vt 0.530596 0.55912 2018 | vt 0.544978 0.639644 2019 | vt 0.538296 0.611616 2020 | vt 0.55245 0.586814 2021 | vt 0.548694 0.57029 2022 | vt 0.56778 0.625714 2023 | vt 0.558174 0.604972 2024 | vt 0.52792 0.519196 2025 | vt 0.540866 0.517854 2026 | vt 0.538086 0.506292 2027 | vt 0.846208 0.636162 2028 | vt 0.978756 0.591506 2029 | vt 0.785832 0.591982 2030 | vt 0.76758 0.572764 2031 | vt 0.743644 0.561888 2032 | vt 0.71834 0.557884 2033 | vt 0.693956 0.558398 2034 | vt 0.670872 0.566136 2035 | vt 0.650306 0.576324 2036 | vt 0.631894 0.588458 2037 | vt 0.615844 0.603336 2038 | vt 0.600418 0.618984 2039 | vt 0.519216 0.615198 2040 | vt 0.7998 0.615458 2041 | vt 0.802808 0.573526 2042 | vt 0.828136 0.538692 2043 | vt 0.893532 0.185612 2044 | vt 0.567691 0.379605 2045 | vt 0.57363 0.381122 2046 | vt 0.58029 0.382715 2047 | vt 0.588094 0.384731 2048 | vt 0.597344 0.387208 2049 | vt 0.608078 0.390052 2050 | vt 0.621512 0.39295 2051 | vt 0.637866 0.395442 2052 | vt 0.657426 0.398856 2053 | vt 0.678786 0.402638 2054 | vt 0.70217 0.407212 2055 | vt 0.569295 0.372697 2056 | vt 0.575806 0.371091 2057 | vt 0.582098 0.369707 2058 | vt 0.589687 0.367814 2059 | vt 0.607788 0.362356 2060 | vt 0.61988 0.358176 2061 | vt 0.634352 0.352822 2062 | vt 0.651748 0.346822 2063 | vt 0.672726 0.341044 2064 | vt 0.698112 0.335942 2065 | vt 0.731386 0.333466 2066 | vt 0.806706 0.642174 2067 | vt 0.755476 0.638612 2068 | vt 0.755538 0.66122 2069 | vt 0.807706 0.670356 2070 | vt 0.825788 0.672932 2071 | vt 0.53312 0.78448 2072 | vt 0.538458 0.820512 2073 | vt 0.543736 0.850668 2074 | vt 0.561564 0.957912 2075 | vt 0.627558 0.636658 2076 | vt 0.521118 0.646102 2077 | vt 0.512628 0.49503 2078 | vt 0.521412 0.494394 2079 | vt 0.527478 0.492532 2080 | vt 0.531332 0.489104 2081 | vt 0.58349 0.63962 2082 | vt 0.664718 0.550872 2083 | vt 0.65556 0.535328 2084 | vt 0.643302 0.519874 2085 | vt 0.629248 0.5047 2086 | vt 0.614578 0.488256 2087 | vt 0.59679 0.47458 2088 | vt 0.577782 0.466324 2089 | vt 0.558642 0.464086 2090 | vt 0.546724 0.470712 2091 | vt 0.549868 0.47303 2092 | vt 0.545506 0.491906 2093 | vt 0.542898 0.53064 2094 | vt 0.544286 0.543866 2095 | vt 0.545742 0.556742 2096 | vt 0.721714 0.468964 2097 | vt 0.726076 0.439982 2098 | vt 0.728876 0.412774 2099 | vt 0.730316 0.377174 2100 | vt 0.755282 0.477522 2101 | vt 0.757818 0.447252 2102 | vt 0.760192 0.416782 2103 | vt 0.79073 0.451066 2104 | vt 0.792106 0.4843 2105 | vt 0.826608 0.488328 2106 | vt 0.823188 0.449624 2107 | vt 0.843056 0.409784 2108 | vt 0.851662 0.357212 2109 | vt 0.970346 0.70835 2110 | vt 0.856068 0.717658 2111 | vt 0.866248 0.678242 2112 | vt 0.816228 0.417248 2113 | vt 0.78512 0.296916 2114 | vt 0.770718 0.34397 2115 | vt 0.76206 0.383342 2116 | vt 0.802022 0.359264 2117 | vt 0.791728 0.390448 2118 | vt 0.825108 0.381446 2119 | vt 0.790212 0.419884 2120 | vt 0.811124 0.396602 2121 | vt 0.512932 0.480732 2122 | vt 0.52164 0.480054 2123 | vt 0.528282 0.478866 2124 | vt 0.53388 0.477951 2125 | vt 0.010436 0.426536 2126 | vt 0.023698 0.334805 2127 | vt 0.836414 0.150259 2128 | vt 0.777341 0.12889 2129 | vt 0.721412 0.115639 2130 | vt 0.671358 0.108598 2131 | vt 0.632529 0.105045 2132 | vt 0.607108 0.10502 2133 | vt 0.578277 0.10439 2134 | vt 0.539587 0.101135 2135 | vt 0.460559 0.101026 2136 | vt 0.421994 0.103928 2137 | vt 0.393092 0.104611 2138 | vt 0.367554 0.104746 2139 | vt 0.328588 0.108424 2140 | vt 0.278419 0.115555 2141 | vt 0.222505 0.129124 2142 | vt 0.163397 0.150397 2143 | vt 0.326013 0.14203 2144 | vt 0.280558 0.153629 2145 | vt 0.228535 0.170657 2146 | vt 0.171939 0.196743 2147 | vt 0.12955 0.236409 2148 | vt 0.088309 0.286146 2149 | vt 0.064244 0.358983 2150 | vt 0.052092 0.428332 2151 | vt 0.048404 0.483551 2152 | vt 0.048586 0.53443 2153 | vt 0.244915 0.217741 2154 | vt 0.192329 0.248788 2155 | vt 0.154084 0.283908 2156 | vt 0.121303 0.327309 2157 | vt 0.099791 0.379968 2158 | vt 0.087282 0.434702 2159 | vt 0.082277 0.483034 2160 | vt 0.078301 0.533033 2161 | vt 0.079353 0.585646 2162 | vt 0.900785 0.782513 2163 | vt 0.921505 0.742558 2164 | vt 0.936904 0.697702 2165 | vt 0.605114 0.13282 2166 | vt 0.06312 0.697695 2167 | vt 0.078516 0.742553 2168 | vt 0.099227 0.782507 2169 | vt 0.127501 0.813197 2170 | vt 0.160963 0.838018 2171 | vt 0.199661 0.859052 2172 | vt 0.242553 0.876196 2173 | vt 0.28818 0.892439 2174 | vt 0.337734 0.907008 2175 | vt 0.38935 0.920116 2176 | vt 0.444054 0.928439 2177 | vt 0.499998 0.930412 2178 | vt 0.55594 0.928446 2179 | vt 0.610644 0.920118 2180 | vt 0.66227 0.906972 2181 | vt 0.711833 0.892391 2182 | vt 0.757456 0.876171 2183 | vt 0.800336 0.859053 2184 | vt 0.839031 0.838025 2185 | vt 0.872497 0.813201 2186 | vt 0.944124 0.645972 2187 | vt 0.976197 0.655311 2188 | vt 0.051184 0.588279 2189 | vt 0.055879 0.645962 2190 | vt 0.689086 0.233454 2191 | vt 0.654686 0.210547 2192 | vt 0.623032 0.195511 2193 | vt 0.593206 0.186578 2194 | vt 0.563559 0.18183 2195 | vt 0.531883 0.177953 2196 | vt 0.499997 0.176897 2197 | vt 0.46807 0.177739 2198 | vt 0.436352 0.18104 2199 | vt 0.406654 0.185788 2200 | vt 0.376871 0.195069 2201 | vt 0.345284 0.21042 2202 | vt 0.310923 0.233521 2203 | vt 0.569315 0.155811 2204 | vt 0.534638 0.152287 2205 | vt 0.465435 0.15189 2206 | vt 0.430821 0.154794 2207 | vt 0.399792 0.159413 2208 | vt 0.368515 0.166467 2209 | vt 0.333358 0.178466 2210 | vt 0.292678 0.194473 2211 | vt 0.719358 0.153685 2212 | vt 0.673971 0.142267 2213 | vt 0.6359 0.136175 2214 | vt 0.574092 0.129527 2215 | vt 0.537072 0.127442 2216 | vt 0.463067 0.127087 2217 | vt 0.426164 0.128692 2218 | vt 0.395063 0.132037 2219 | vt 0.36414 0.135665 2220 | vt 0.948816 0.588278 2221 | vt 0.951413 0.534423 2222 | vt 0.951586 0.483539 2223 | vt 0.947916 0.428333 2224 | vt 0.93582 0.358988 2225 | vt 0.911733 0.286162 2226 | vt 0.870464 0.236386 2227 | vt 0.828012 0.196649 2228 | vt 0.771353 0.170623 2229 | vt 0.921686 0.533008 2230 | vt 0.920643 0.585649 2231 | vt 0.916164 0.640108 2232 | vt 0.909414 0.690361 2233 | vt 0.896014 0.732125 2234 | vt 0.878233 0.770708 2235 | vt 0.85384 0.800586 2236 | vt 0.822028 0.824588 2237 | vt 0.785443 0.84363 2238 | vt 0.744185 0.858594 2239 | vt 0.699717 0.87305 2240 | vt 0.651824 0.885404 2241 | vt 0.602388 0.894861 2242 | vt 0.551431 0.900737 2243 | vt 0.499998 0.901958 2244 | vt 0.083835 0.640067 2245 | vt 0.869151 0.397189 2246 | vt 0.881003 0.441023 2247 | vt 0.888465 0.484502 2248 | vt 0.893719 0.532966 2249 | vt 0.893897 0.584891 2250 | vt 0.890952 0.636382 2251 | vt 0.885521 0.684255 2252 | vt 0.875116 0.724249 2253 | vt 0.858979 0.760333 2254 | vt 0.833442 0.787342 2255 | vt 0.804887 0.810942 2256 | vt 0.770688 0.827428 2257 | vt 0.732033 0.84072 2258 | vt 0.688662 0.853161 2259 | vt 0.64209 0.862331 2260 | vt 0.595019 0.869582 2261 | vt 0.547333 0.8735 2262 | vt 0.499998 0.874095 2263 | vt 0.851393 0.446474 2264 | vt 0.859017 0.487465 2265 | vt 0.865134 0.533882 2266 | vt 0.869754 0.586401 2267 | vt 0.869595 0.634354 2268 | vt 0.499997 0.099124 2269 | vt 0.500014 0.124745 2270 | vt 0.499997 0.149793 2271 | vt 0.600248 0.160348 2272 | vt 0.631467 0.167 2273 | vt 0.666626 0.178649 2274 | vt 0.707326 0.194397 2275 | vt 0.755083 0.217625 2276 | vt 0.807659 0.248768 2277 | vt 0.845916 0.283907 2278 | vt 0.878696 0.327309 2279 | vt 0.900208 0.379972 2280 | vt 0.912701 0.434686 2281 | vt 0.917697 0.483 2282 | vt 0.668667 0.62438 2283 | vt 0.682775 0.622142 2284 | vt 0.696565 0.623062 2285 | vt 0.707863 0.62641 2286 | vt 0.715595 0.631116 2287 | vt 0.720706 0.635895 2288 | vt 0.724709 0.641962 2289 | vt 0.726797 0.647262 2290 | vt 0.727639 0.651228 2291 | vt 0.727458 0.655337 2292 | vt 0.725857 0.659859 2293 | vt 0.722683 0.664902 2294 | vt 0.717105 0.669087 2295 | vt 0.708083 0.673391 2296 | vt 0.697831 0.676249 2297 | vt 0.684919 0.677283 2298 | vt 0.671299 0.676519 2299 | vt 0.658411 0.673986 2300 | vt 0.647331 0.669136 2301 | vt 0.638968 0.661315 2302 | vt 0.636945 0.652609 2303 | vt 0.639995 0.643101 2304 | vt 0.646555 0.635605 2305 | vt 0.6558 0.629101 2306 | vt 0.331336 0.62438 2307 | vt 0.344201 0.629103 2308 | vt 0.353455 0.635601 2309 | vt 0.360002 0.643096 2310 | vt 0.363037 0.65264 2311 | vt 0.361014 0.661326 2312 | vt 0.352681 0.669137 2313 | vt 0.341656 0.673993 2314 | vt 0.328754 0.67655 2315 | vt 0.315098 0.677307 2316 | vt 0.302174 0.676255 2317 | vt 0.291928 0.673393 2318 | vt 0.28294 0.669117 2319 | vt 0.277505 0.66506 2320 | vt 0.274245 0.66002 2321 | vt 0.272553 0.655277 2322 | vt 0.272262 0.651092 2323 | vt 0.273147 0.64722 2324 | vt 0.27532 0.641862 2325 | vt 0.279337 0.635837 2326 | vt 0.284409 0.63111 2327 | vt 0.292138 0.626413 2328 | vt 0.303438 0.623062 2329 | vt 0.31723 0.622141 2330 | vt 0.780859 0.646908 2331 | vt 0.776556 0.628439 2332 | vt 0.767087 0.61171 2333 | vt 0.752173 0.596718 2334 | vt 0.736352 0.586858 2335 | vt 0.71753 0.580724 2336 | vt 0.696771 0.579707 2337 | vt 0.675884 0.583782 2338 | vt 0.657211 0.591609 2339 | vt 0.640883 0.601779 2340 | vt 0.627789 0.614365 2341 | vt 0.615721 0.629696 2342 | vt 0.604059 0.650916 2343 | vt 0.597992 0.678924 2344 | vt 0.609705 0.707537 2345 | vt 0.635219 0.722957 2346 | vt 0.664772 0.731109 2347 | vt 0.693012 0.733531 2348 | vt 0.716636 0.731232 2349 | vt 0.735379 0.72529 2350 | vt 0.751612 0.716173 2351 | vt 0.766326 0.702916 2352 | vt 0.776817 0.685842 2353 | vt 0.781301 0.666553 2354 | vt 0.223215 0.685815 2355 | vt 0.218742 0.666516 2356 | vt 0.219189 0.646852 2357 | vt 0.223394 0.628448 2358 | vt 0.232928 0.611714 2359 | vt 0.247793 0.596698 2360 | vt 0.263679 0.58684 2361 | vt 0.282478 0.580744 2362 | vt 0.303224 0.57976 2363 | vt 0.324089 0.583854 2364 | vt 0.342738 0.591636 2365 | vt 0.359046 0.601806 2366 | vt 0.372212 0.614373 2367 | vt 0.384278 0.629696 2368 | vt 0.395936 0.650911 2369 | vt 0.402038 0.678896 2370 | vt 0.390034 0.707555 2371 | vt 0.364886 0.72296 2372 | vt 0.335238 0.731099 2373 | vt 0.30703 0.733606 2374 | vt 0.283452 0.731482 2375 | vt 0.264726 0.72568 2376 | vt 0.248598 0.716825 2377 | vt 0.233702 0.702933 2378 | vt 0.73919 0.644044 2379 | vt 0.735301 0.635746 2380 | vt 0.728595 0.626758 2381 | vt 0.720892 0.620532 2382 | vt 0.710807 0.615573 2383 | vt 0.697142 0.612396 2384 | vt 0.681679 0.612588 2385 | vt 0.666123 0.616225 2386 | vt 0.652272 0.6224 2387 | vt 0.641898 0.630046 2388 | vt 0.633775 0.640032 2389 | vt 0.62946 0.653694 2390 | vt 0.631429 0.666359 2391 | vt 0.640705 0.676807 2392 | vt 0.65394 0.684568 2393 | vt 0.669861 0.688375 2394 | vt 0.685837 0.689488 2395 | vt 0.70074 0.688027 2396 | vt 0.713433 0.68401 2397 | vt 0.723426 0.678351 2398 | vt 0.731335 0.672132 2399 | vt 0.737004 0.665019 2400 | vt 0.739611 0.657976 2401 | vt 0.74034 0.651057 2402 | vt 0.259597 0.650998 2403 | vt 0.260482 0.657828 2404 | vt 0.263103 0.665001 2405 | vt 0.268763 0.672156 2406 | vt 0.276611 0.678348 2407 | vt 0.286618 0.684054 2408 | vt 0.29929 0.688032 2409 | vt 0.31423 0.689606 2410 | vt 0.33027 0.6884 2411 | vt 0.346131 0.684502 2412 | vt 0.359262 0.67682 2413 | vt 0.368513 0.666383 2414 | vt 0.370531 0.653702 2415 | vt 0.366212 0.640028 2416 | vt 0.358099 0.630045 2417 | vt 0.347725 0.622399 2418 | vt 0.333877 0.616224 2419 | vt 0.318323 0.612583 2420 | vt 0.302859 0.612395 2421 | vt 0.289188 0.615572 2422 | vt 0.279104 0.620527 2423 | vt 0.271413 0.626749 2424 | vt 0.264702 0.635728 2425 | vt 0.260784 0.644015 2426 | vt 0.445785 0.47773 2427 | vt 0.554076 0.477658 2428 | vt 0.594875 0.354403 2429 | vt 0.588739 0.344172 2430 | vt 0.597793 0.365048 2431 | vt 0.402332 0.365147 2432 | vt 0.40519 0.354537 2433 | vt 0.411292 0.344284 2434 | vt 0.995015 0.486204 2435 | vt 0.989592 0.426548 2436 | vt 0.976427 0.334682 2437 | vt 0.942635 0.24163 2438 | vt 0.571441 0.361724 2439 | vt 0.428405 0.361636 2440 | vt 0.423111 0.357671 2441 | f 45/45 46/46 1201/1201 1202/1202 2442 | f 46/46 43/43 1200/1200 1201/1201 2443 | f 41/41 48/48 1197/1197 1198/1198 2444 | f 48/48 49/49 1196/1196 1197/1197 2445 | f 1190/1190 53/53 52/52 1189/1189 2446 | f 54/54 56/56 1185/1185 1186/1186 2447 | f 56/56 57/57 1184/1184 1185/1185 2448 | f 84/84 91/91 2/2 1/1 2449 | f 85/85 101/101 100/100 86/86 2450 | f 102/102 103/103 101/101 85/85 2451 | f 113/113 192/192 110/110 59/59 2452 | f 31/31 30/30 262/262 261/261 2453 | f 147/147 146/146 134/134 135/135 2454 | f 146/146 139/139 145/145 134/134 2455 | f 65/65 66/66 148/148 149/149 2456 | f 159/159 158/158 13/13 14/14 2457 | f 1190/1190 1191/1191 170/170 53/53 2458 | f 174/174 410/410 409/409 173/173 2459 | f 175/175 411/411 410/410 174/174 2460 | f 176/176 412/412 411/411 175/175 2461 | f 176/176 177/177 413/413 412/412 2462 | f 181/181 182/182 65/65 149/149 2463 | f 402/402 182/182 181/181 403/403 2464 | f 182/182 183/183 64/64 65/65 2465 | f 401/401 183/183 182/182 402/402 2466 | f 400/400 184/184 183/183 401/401 2467 | f 184/184 63/63 64/64 183/183 2468 | f 399/399 185/185 184/184 400/400 2469 | f 398/398 186/186 185/185 399/399 2470 | f 261/261 260/260 32/32 31/31 2471 | f 111/111 116/116 120/120 119/119 2472 | f 117/117 124/124 1213/1213 120/120 2473 | f 110/110 192/192 193/193 112/112 2474 | f 112/112 193/193 116/116 111/111 2475 | f 116/116 195/195 117/117 120/120 2476 | f 193/193 196/196 195/195 116/116 2477 | f 192/192 194/194 196/196 193/193 2478 | f 261/261 262/262 271/271 270/270 2479 | f 281/281 280/280 124/124 117/117 2480 | f 165/165 199/199 202/202 166/166 2481 | f 199/199 198/198 163/163 200/200 2482 | f 200/200 201/201 202/202 199/199 2483 | f 166/166 202/202 167/167 133/133 2484 | f 127/127 429/429 38/38 7/7 2485 | f 126/126 430/430 429/429 127/127 2486 | f 72/72 431/431 430/430 126/126 2487 | f 73/73 432/432 431/431 72/72 2488 | f 185/185 186/186 103/103 102/102 2489 | f 85/85 292/292 63/63 102/102 2490 | f 102/102 63/63 184/184 185/185 2491 | f 64/64 206/206 66/66 65/65 2492 | f 229/229 228/228 201/201 200/200 2493 | f 163/163 230/230 229/229 200/200 2494 | f 211/211 210/210 232/232 231/231 2495 | f 23/23 238/238 94/94 24/24 2496 | f 96/96 239/239 240/240 98/98 2497 | f 240/240 241/241 106/106 98/98 2498 | f 241/241 242/242 107/107 106/106 2499 | f 242/242 243/243 104/104 107/107 2500 | f 243/243 244/244 188/188 104/104 2501 | f 244/244 396/396 395/395 188/188 2502 | f 247/247 278/278 277/277 122/122 2503 | f 289/289 273/273 274/274 290/290 2504 | f 273/273 264/264 265/265 274/274 2505 | f 265/265 264/264 28/28 27/27 2506 | f 266/266 265/265 27/27 26/26 2507 | f 274/274 265/265 266/266 275/275 2508 | f 290/290 274/274 275/275 291/291 2509 | f 248/248 122/122 277/277 276/276 2510 | f 122/122 248/248 249/249 1219/1219 2511 | f 253/253 254/254 106/106 107/107 2512 | f 254/254 255/255 98/98 106/106 2513 | f 256/256 96/96 98/98 255/255 2514 | f 24/24 94/94 257/257 25/25 2515 | f 277/277 290/290 291/291 276/276 2516 | f 278/278 289/289 290/290 277/277 2517 | f 286/286 287/287 280/280 281/281 2518 | f 113/113 59/59 60/60 114/114 2519 | f 143/143 204/204 68/68 81/81 2520 | f 56/56 1157/1157 1134/1134 57/57 2521 | f 54/54 1156/1156 1157/1157 56/56 2522 | f 53/53 1152/1152 1153/1153 52/52 2523 | f 208/208 162/162 1153/1153 1152/1152 2524 | f 170/170 1151/1151 1152/1152 53/53 2525 | f 171/171 208/208 1152/1152 1151/1151 2526 | f 48/48 1145/1145 1146/1146 49/49 2527 | f 41/41 1144/1144 1145/1145 48/48 2528 | f 46/46 1141/1141 1142/1142 43/43 2529 | f 45/45 1140/1140 1141/1141 46/46 2530 | f 144/144 299/299 295/295 141/141 2531 | f 141/141 142/142 138/138 144/144 2532 | f 10/10 11/11 303/303 157/157 2533 | f 136/136 161/161 134/134 145/145 2534 | f 161/161 50/50 135/135 134/134 2535 | f 63/63 292/292 206/206 64/64 2536 | f 86/86 297/297 292/292 85/85 2537 | f 90/90 99/99 92/92 71/71 2538 | f 141/141 295/295 204/204 143/143 2539 | f 71/71 92/92 91/91 84/84 2540 | f 96/96 94/94 238/238 239/239 2541 | f 256/256 257/257 94/94 96/96 2542 | f 307/307 1219/1219 249/249 306/306 2543 | f 245/245 407/407 406/406 190/190 2544 | f 250/250 190/190 406/406 405/405 2545 | f 394/394 251/251 188/188 395/395 2546 | f 251/251 252/252 104/104 188/188 2547 | f 252/252 253/253 107/107 104/104 2548 | f 22/22 93/93 238/238 23/23 2549 | f 91/91 93/93 22/22 2/2 2550 | f 93/93 95/95 239/239 238/238 2551 | f 92/92 95/95 93/93 91/91 2552 | f 95/95 97/97 240/240 239/239 2553 | f 99/99 97/97 95/95 92/92 2554 | f 97/97 109/109 241/241 240/240 2555 | f 90/90 86/86 100/100 99/99 2556 | f 97/97 99/99 100/100 109/109 2557 | f 109/109 108/108 242/242 241/241 2558 | f 100/100 101/101 108/108 109/109 2559 | f 108/108 105/105 243/243 242/242 2560 | f 101/101 103/103 105/105 108/108 2561 | f 103/103 186/186 187/187 105/105 2562 | f 105/105 187/187 244/244 243/243 2563 | f 187/187 397/397 396/396 244/244 2564 | f 186/186 398/398 397/397 187/187 2565 | f 191/191 408/408 407/407 245/245 2566 | f 246/246 1220/1220 1219/1219 307/307 2567 | f 121/121 1213/1213 124/124 123/123 2568 | f 1219/1219 1220/1220 247/247 122/122 2569 | f 123/123 279/279 278/278 247/247 2570 | f 124/124 280/280 279/279 123/123 2571 | f 279/279 288/288 289/289 278/278 2572 | f 280/280 287/287 288/288 279/279 2573 | f 286/286 270/270 271/271 287/287 2574 | f 288/288 272/272 273/273 289/289 2575 | f 287/287 271/271 272/272 288/288 2576 | f 272/272 263/263 264/264 273/273 2577 | f 262/262 263/263 272/272 271/271 2578 | f 263/263 29/29 28/28 264/264 2579 | f 262/262 30/30 29/29 263/263 2580 | f 71/71 89/89 87/87 90/90 2581 | f 84/84 294/294 89/89 71/71 2582 | f 1/1 3/3 294/294 84/84 2583 | f 87/87 297/297 86/86 90/90 2584 | f 292/292 297/297 310/310 206/206 2585 | f 206/206 310/310 311/311 66/66 2586 | f 311/311 312/312 148/148 66/66 2587 | f 312/312 321/321 151/151 148/148 2588 | f 310/310 439/439 438/438 311/311 2589 | f 87/87 441/441 440/440 297/297 2590 | f 310/310 297/297 440/440 439/439 2591 | f 313/313 309/309 298/298 205/205 2592 | f 145/145 139/139 282/282 305/305 2593 | f 317/317 304/304 140/140 316/316 2594 | f 139/139 318/318 315/315 282/282 2595 | f 144/144 138/138 302/302 317/317 2596 | f 282/282 315/315 314/314 140/140 2597 | f 437/437 312/312 311/311 438/438 2598 | f 282/282 140/140 304/304 305/305 2599 | f 305/305 137/137 136/136 145/145 2600 | f 302/302 300/300 304/304 317/317 2601 | f 305/305 304/304 300/300 137/137 2602 | f 301/301 366/366 364/364 303/303 2603 | f 12/12 13/13 158/158 301/301 2604 | f 12/12 301/301 303/303 11/11 2605 | f 298/298 67/67 69/69 207/207 2606 | f 207/207 69/69 68/68 204/204 2607 | f 68/68 69/69 1206/1206 70/70 2608 | f 309/309 88/88 67/67 298/298 2609 | f 89/89 308/308 441/441 87/87 2610 | f 436/436 321/321 312/312 437/437 2611 | f 146/146 319/319 318/318 139/139 2612 | f 147/147 320/320 319/319 146/146 2613 | f 41/41 42/42 1143/1143 1144/1144 2614 | f 41/41 1198/1198 1199/1199 42/42 2615 | f 321/321 436/436 435/435 322/322 2616 | f 322/322 435/435 434/434 323/323 2617 | f 42/42 43/43 1142/1142 1143/1143 2618 | f 294/294 324/324 308/308 89/89 2619 | f 4/4 324/324 294/294 3/3 2620 | f 316/316 299/299 144/144 317/317 2621 | f 314/314 293/293 316/316 140/140 2622 | f 295/295 203/203 207/207 204/204 2623 | f 203/203 205/205 298/298 207/207 2624 | f 203/203 326/326 293/293 205/205 2625 | f 326/326 203/203 295/295 299/299 2626 | f 293/293 314/314 313/313 205/205 2627 | f 326/326 299/299 316/316 293/293 2628 | f 42/42 1199/1199 1200/1200 43/43 2629 | f 52/52 51/51 1188/1188 1189/1189 2630 | f 1188/1188 51/51 55/55 1187/1187 2631 | f 165/165 327/327 198/198 199/199 2632 | f 52/52 1153/1153 1154/1154 51/51 2633 | f 162/162 164/164 1154/1154 1153/1153 2634 | f 208/208 329/329 328/328 162/162 2635 | f 210/210 160/160 233/233 232/232 2636 | f 328/328 329/329 210/210 211/211 2637 | f 163/163 335/335 334/334 230/230 2638 | f 334/334 335/335 211/211 231/231 2639 | f 198/198 336/336 335/335 163/163 2640 | f 336/336 328/328 211/211 335/335 2641 | f 336/336 164/164 162/162 328/328 2642 | f 54/54 55/55 1155/1155 1156/1156 2643 | f 51/51 1154/1154 1155/1155 55/55 2644 | f 327/327 164/164 336/336 198/198 2645 | f 54/54 1186/1186 1187/1187 55/55 2646 | f 197/197 194/194 192/192 113/113 2647 | f 115/115 197/197 113/113 114/114 2648 | f 36/36 35/35 258/258 345/345 2649 | f 260/260 269/269 268/268 259/259 2650 | f 33/33 32/32 260/260 259/259 2651 | f 347/347 34/34 33/33 259/259 2652 | f 35/35 34/34 347/347 258/258 2653 | f 259/259 268/268 346/346 347/347 2654 | f 337/337 285/285 286/286 281/281 2655 | f 281/281 117/117 195/195 337/337 2656 | f 196/196 338/338 337/337 195/195 2657 | f 194/194 339/339 338/338 196/196 2658 | f 342/342 341/341 197/197 115/115 2659 | f 341/341 339/339 194/194 197/197 2660 | f 338/338 284/284 285/285 337/337 2661 | f 339/339 340/340 284/284 338/338 2662 | f 341/341 283/283 340/340 339/339 2663 | f 342/342 343/343 283/283 341/341 2664 | f 285/285 269/269 270/270 286/286 2665 | f 270/270 269/269 260/260 261/261 2666 | f 284/284 268/268 269/269 285/285 2667 | f 284/284 340/340 346/346 268/268 2668 | f 346/346 267/267 258/258 347/347 2669 | f 283/283 267/267 346/346 340/340 2670 | f 267/267 344/344 345/345 258/258 2671 | f 343/343 344/344 267/267 283/283 2672 | f 172/172 1150/1150 1151/1151 170/170 2673 | f 169/169 171/171 1151/1151 1150/1150 2674 | f 172/172 170/170 1191/1191 1192/1192 2675 | f 427/427 49/49 1146/1146 1147/1147 2676 | f 44/44 1139/1139 1140/1140 45/45 2677 | f 358/358 172/172 1192/1192 1193/1193 2678 | f 44/44 357/357 1138/1138 1139/1139 2679 | f 172/172 358/358 1149/1149 1150/1150 2680 | f 362/362 365/365 158/158 159/159 2681 | f 364/364 363/363 157/157 303/303 2682 | f 365/365 366/366 301/301 158/158 2683 | f 373/373 130/130 157/157 363/363 2684 | f 126/126 129/129 375/375 72/72 2685 | f 127/127 128/128 129/129 126/126 2686 | f 129/129 128/128 130/130 373/373 2687 | f 130/130 9/9 10/10 157/157 2688 | f 7/7 8/8 128/128 127/127 2689 | f 128/128 8/8 9/9 130/130 2690 | f 378/378 379/379 1139/1139 1138/1138 2691 | f 1139/1139 379/379 380/380 1140/1140 2692 | f 1140/1140 380/380 381/381 1141/1141 2693 | f 1141/1141 381/381 382/382 1142/1142 2694 | f 382/382 383/383 1143/1143 1142/1142 2695 | f 1143/1143 383/383 384/384 1144/1144 2696 | f 1144/1144 384/384 385/385 1145/1145 2697 | f 1145/1145 385/385 386/386 1146/1146 2698 | f 386/386 387/387 1147/1147 1146/1146 2699 | f 156/156 154/154 380/380 379/379 2700 | f 154/154 155/155 381/381 380/380 2701 | f 155/155 323/323 382/382 381/381 2702 | f 434/434 383/383 382/382 323/323 2703 | f 147/147 385/385 384/384 320/320 2704 | f 233/233 160/160 350/350 234/234 2705 | f 14/14 15/15 388/388 159/159 2706 | f 428/428 388/388 15/15 37/37 2707 | f 388/388 368/368 362/362 159/159 2708 | f 171/171 330/330 329/329 208/208 2709 | f 361/361 348/348 169/169 360/360 2710 | f 388/388 428/428 367/367 368/368 2711 | f 329/329 330/330 160/160 210/210 2712 | f 348/348 421/421 349/349 169/169 2713 | f 422/422 19/19 20/20 423/423 2714 | f 361/361 16/16 17/17 348/348 2715 | f 349/349 350/350 160/160 330/330 2716 | f 17/17 18/18 421/421 348/348 2717 | f 421/421 18/18 19/19 422/422 2718 | f 45/45 1202/1202 1203/1203 44/44 2719 | f 389/389 378/378 1138/1138 1137/1137 2720 | f 354/354 390/390 378/378 389/389 2721 | f 156/156 379/379 378/378 390/390 2722 | f 250/250 394/394 395/395 190/190 2723 | f 396/396 245/245 190/190 395/395 2724 | f 397/397 191/191 245/245 396/396 2725 | f 398/398 189/189 191/191 397/397 2726 | f 173/173 189/189 398/398 399/399 2727 | f 173/173 399/399 400/400 174/174 2728 | f 174/174 400/400 401/401 175/175 2729 | f 175/175 401/401 402/402 176/176 2730 | f 176/176 402/402 403/403 177/177 2731 | f 406/406 307/307 306/306 405/405 2732 | f 407/407 246/246 307/307 406/406 2733 | f 408/408 118/118 246/246 407/407 2734 | f 118/118 408/408 1211/1211 1212/1212 2735 | f 1212/1212 1211/1211 409/409 119/119 2736 | f 410/410 111/111 119/119 409/409 2737 | f 411/411 112/112 111/111 410/410 2738 | f 412/412 110/110 112/112 411/411 2739 | f 413/413 59/59 110/110 412/412 2740 | f 414/414 60/60 59/59 413/413 2741 | f 167/167 420/420 419/419 133/133 2742 | f 57/57 1134/1134 1135/1135 418/418 2743 | f 44/44 1203/1203 1204/1204 357/357 2744 | f 417/417 357/357 1204/1204 1205/1205 2745 | f 357/357 417/417 1137/1137 1138/1138 2746 | f 418/418 1183/1183 1184/1184 57/57 2747 | f 427/427 1195/1195 1196/1196 49/49 2748 | f 169/169 349/349 330/330 171/171 2749 | f 350/350 422/422 423/423 234/234 2750 | f 349/349 421/421 422/422 350/350 2751 | f 428/428 361/361 360/360 367/367 2752 | f 16/16 361/361 428/428 37/37 2753 | f 320/320 384/384 383/383 434/434 2754 | f 435/435 319/319 320/320 434/434 2755 | f 436/436 318/318 319/319 435/435 2756 | f 318/318 436/436 437/437 315/315 2757 | f 315/315 437/437 438/438 314/314 2758 | f 439/439 313/313 314/314 438/438 2759 | f 440/440 309/309 313/313 439/439 2760 | f 441/441 88/88 309/309 440/440 2761 | f 308/308 442/442 88/88 441/441 2762 | f 88/88 442/442 443/443 67/67 2763 | f 67/67 443/443 1206/1206 69/69 2764 | f 386/386 135/135 50/50 387/387 2765 | f 135/135 386/386 385/385 147/147 2766 | f 322/322 152/152 151/151 321/321 2767 | f 152/152 322/322 323/323 155/155 2768 | f 151/151 150/150 149/149 148/148 2769 | f 150/150 180/180 181/181 149/149 2770 | f 404/404 403/403 181/181 180/180 2771 | f 177/177 178/178 414/414 413/413 2772 | f 404/404 178/178 177/177 403/403 2773 | f 154/154 153/153 152/152 155/155 2774 | f 152/152 448/448 150/150 151/151 2775 | f 156/156 355/355 153/153 154/154 2776 | f 449/449 450/450 404/404 180/180 2777 | f 448/448 449/449 180/180 150/150 2778 | f 452/452 453/453 449/449 448/448 2779 | f 452/452 448/448 152/152 153/153 2780 | f 456/456 452/452 153/153 355/355 2781 | f 420/420 356/356 416/416 419/419 2782 | f 416/416 356/356 354/354 389/389 2783 | f 418/418 1135/1135 1136/1136 47/47 2784 | f 417/417 47/47 1136/1136 1137/1137 2785 | f 417/417 1205/1205 1182/1182 47/47 2786 | f 47/47 1182/1182 1183/1183 418/418 2787 | f 1194/1194 1195/1195 427/427 359/359 2788 | f 1194/1194 359/359 358/358 1193/1193 2789 | f 358/358 359/359 1148/1148 1149/1149 2790 | f 427/427 1147/1147 1148/1148 359/359 2791 | f 1148/1148 433/433 360/360 1149/1149 2792 | f 371/371 367/367 360/360 433/433 2793 | f 387/387 433/433 1148/1148 1147/1147 2794 | f 371/371 50/50 161/161 372/372 2795 | f 50/50 371/371 433/433 387/387 2796 | f 136/136 369/369 372/372 161/161 2797 | f 372/372 368/368 367/367 371/371 2798 | f 369/369 136/136 137/137 370/370 2799 | f 372/372 369/369 362/362 368/368 2800 | f 370/370 365/365 362/362 369/369 2801 | f 370/370 137/137 300/300 447/447 2802 | f 302/302 446/446 447/447 300/300 2803 | f 370/370 447/447 366/366 365/365 2804 | f 138/138 445/445 446/446 302/302 2805 | f 447/447 446/446 364/364 366/366 2806 | f 142/142 374/374 445/445 138/138 2807 | f 445/445 363/363 364/364 446/446 2808 | f 83/83 142/142 141/141 143/143 2809 | f 142/142 83/83 375/375 374/374 2810 | f 374/374 373/373 363/363 445/445 2811 | f 373/373 374/374 375/375 129/129 2812 | f 201/201 235/235 167/167 202/202 2813 | f 376/376 179/179 354/354 356/356 2814 | f 391/391 390/390 354/354 179/179 2815 | f 391/391 355/355 156/156 390/390 2816 | f 460/460 179/179 376/376 459/459 2817 | f 457/457 456/456 355/355 391/391 2818 | f 464/464 391/391 179/179 460/460 2819 | f 470/470 457/457 391/391 464/464 2820 | f 236/236 420/420 167/167 235/235 2821 | f 476/476 236/236 235/235 475/475 2822 | f 236/236 376/376 356/356 420/420 2823 | f 236/236 476/476 459/459 376/376 2824 | f 228/228 475/475 235/235 201/201 2825 | f 471/471 458/458 457/457 470/470 2826 | f 450/450 451/451 178/178 404/404 2827 | f 451/451 415/415 414/414 178/178 2828 | f 451/451 480/480 479/479 415/415 2829 | f 454/454 450/450 449/449 453/453 2830 | f 454/454 480/480 451/451 450/450 2831 | f 458/458 455/455 456/456 457/457 2832 | f 455/455 453/453 452/452 456/456 2833 | f 482/482 481/481 479/479 480/480 2834 | f 477/477 484/484 455/455 458/458 2835 | f 461/461 477/477 458/458 471/471 2836 | f 482/482 485/485 483/483 481/481 2837 | f 454/454 484/484 482/482 480/480 2838 | f 484/484 477/477 485/485 482/482 2839 | f 455/455 484/484 454/454 453/453 2840 | f 485/485 477/477 461/461 483/483 2841 | f 70/70 80/80 81/81 68/68 2842 | f 82/82 83/83 143/143 81/81 2843 | f 83/83 82/82 72/72 375/375 2844 | f 82/82 444/444 73/73 72/72 2845 | f 80/80 444/444 82/82 81/81 2846 | f 5/5 325/325 324/324 4/4 2847 | f 429/429 125/125 6/6 38/38 2848 | f 486/486 39/39 6/6 125/125 2849 | f 486/486 325/325 5/5 39/39 2850 | f 430/430 76/76 125/125 429/429 2851 | f 325/325 77/77 308/308 324/324 2852 | f 486/486 487/487 77/77 325/325 2853 | f 76/76 487/487 486/486 125/125 2854 | f 431/431 74/74 76/76 430/430 2855 | f 77/77 78/78 442/442 308/308 2856 | f 487/487 488/488 78/78 77/77 2857 | f 74/74 488/488 487/487 76/76 2858 | f 432/432 75/75 74/74 431/431 2859 | f 78/78 79/79 443/443 442/442 2860 | f 488/488 489/489 79/79 78/78 2861 | f 75/75 489/489 488/488 74/74 2862 | f 237/237 474/474 476/476 475/475 2863 | f 215/215 467/467 474/474 237/237 2864 | f 468/468 946/946 947/947 40/40 2865 | f 949/949 950/950 214/214 168/168 2866 | f 224/224 218/218 217/217 223/223 2867 | f 230/230 224/224 223/223 229/229 2868 | f 951/951 952/952 213/213 331/331 2869 | f 225/225 333/333 334/334 231/231 2870 | f 950/950 951/951 331/331 214/214 2871 | f 333/333 332/332 218/218 224/224 2872 | f 332/332 333/333 225/225 219/219 2873 | f 334/334 333/333 224/224 230/230 2874 | f 234/234 351/351 227/227 233/233 2875 | f 351/351 352/352 221/221 227/227 2876 | f 955/955 353/353 132/132 954/954 2877 | f 415/415 61/61 60/60 414/414 2878 | f 424/424 351/351 234/234 423/423 2879 | f 955/955 956/956 426/426 353/353 2880 | f 1042/1042 424/424 423/423 20/20 2881 | f 1042/1042 1023/1023 425/425 424/424 2882 | f 424/424 425/425 352/352 351/351 2883 | f 426/426 956/956 957/957 21/21 2884 | f 462/462 483/483 461/461 392/392 2885 | f 906/906 463/463 928/928 929/929 2886 | f 928/928 936/936 937/937 929/929 2887 | f 483/483 462/462 62/62 481/481 2888 | f 928/928 463/463 393/393 927/927 2889 | f 946/946 468/468 58/58 969/969 2890 | f 969/969 1024/1024 467/467 946/946 2891 | f 473/473 459/459 476/476 474/474 2892 | f 472/472 460/460 459/459 473/473 2893 | f 296/296 209/209 931/931 932/932 2894 | f 465/465 466/466 470/470 464/464 2895 | f 931/931 939/939 940/940 932/932 2896 | f 465/465 464/464 460/460 472/472 2897 | f 919/919 918/918 999/999 923/923 2898 | f 918/918 917/917 998/998 999/999 2899 | f 997/997 998/998 917/917 916/916 2900 | f 947/947 948/948 131/131 40/40 2901 | f 222/222 237/237 475/475 228/228 2902 | f 131/131 948/948 949/949 168/168 2903 | f 216/216 222/222 223/223 217/217 2904 | f 216/216 215/215 237/237 222/222 2905 | f 223/223 222/222 228/228 229/229 2906 | f 953/953 954/954 132/132 212/212 2907 | f 227/227 226/226 232/232 233/233 2908 | f 953/953 212/212 213/213 952/952 2909 | f 226/226 220/220 219/219 225/225 2910 | f 220/220 226/226 227/227 221/221 2911 | f 232/232 226/226 225/225 231/231 2912 | f 920/920 919/919 923/923 924/924 2913 | f 989/989 990/990 924/924 923/923 2914 | f 921/921 920/920 924/924 925/925 2915 | f 931/931 209/209 905/905 930/930 2916 | f 469/469 471/471 470/470 466/466 2917 | f 930/930 905/905 906/906 929/929 2918 | f 937/937 938/938 930/930 929/929 2919 | f 930/930 938/938 939/939 931/931 2920 | f 471/471 469/469 392/392 461/461 2921 | f 996/996 997/997 916/916 915/915 2922 | f 927/927 393/393 922/922 926/926 2923 | f 62/62 478/478 479/479 481/481 2924 | f 926/926 922/922 921/921 925/925 2925 | f 933/933 934/934 926/926 925/925 2926 | f 926/926 934/934 935/935 927/927 2927 | f 479/479 478/478 61/61 415/415 2928 | f 377/377 296/296 932/932 968/968 2929 | f 58/58 377/377 968/968 969/969 2930 | f 1094/1094 1190/1190 1189/1189 1095/1095 2931 | f 1197/1197 1196/1196 1088/1088 1087/1087 2932 | f 1086/1086 1198/1198 1197/1197 1087/1087 2933 | f 1109/1109 1199/1199 1198/1198 1086/1086 2934 | f 1200/1200 1199/1199 1109/1109 1108/1108 2935 | f 1201/1201 1200/1200 1108/1108 1107/1107 2936 | f 1106/1106 1202/1202 1201/1201 1107/1107 2937 | f 1105/1105 1203/1203 1202/1202 1106/1106 2938 | f 1104/1104 1204/1204 1203/1203 1105/1105 2939 | f 1103/1103 1205/1205 1204/1204 1104/1104 2940 | f 1102/1102 1182/1182 1205/1205 1103/1103 2941 | f 1183/1183 1182/1182 1102/1102 1101/1101 2942 | f 1184/1184 1183/1183 1101/1101 1100/1100 2943 | f 1187/1187 1186/1186 1098/1098 1097/1097 2944 | f 1165/1165 1166/1166 498/498 491/491 2945 | f 498/498 1166/1166 1167/1167 499/499 2946 | f 1161/1161 1162/1162 496/496 495/495 2947 | f 496/496 1162/1162 1163/1163 493/493 2948 | f 1177/1177 1178/1178 506/506 504/504 2949 | f 848/848 507/507 1179/1179 1180/1180 2950 | f 506/506 1178/1178 1179/1179 507/507 2951 | f 1173/1173 1174/1174 502/502 503/503 2952 | f 1173/1173 503/503 619/619 1172/1172 2953 | f 503/503 502/502 1127/1127 1126/1126 2954 | f 506/506 507/507 1132/1132 1131/1131 2955 | f 533/533 1/1 2/2 540/540 2956 | f 534/534 535/535 549/549 550/550 2957 | f 551/551 534/534 550/550 552/552 2958 | f 562/562 508/508 559/559 641/641 2959 | f 31/31 696/696 697/697 30/30 2960 | f 596/596 584/584 583/583 595/595 2961 | f 595/595 583/583 594/594 588/588 2962 | f 514/514 598/598 597/597 515/515 2963 | f 608/608 14/14 13/13 607/607 2964 | f 619/619 503/503 1126/1126 1125/1125 2965 | f 623/623 622/622 839/839 840/840 2966 | f 624/624 623/623 840/840 841/841 2967 | f 625/625 624/624 841/841 842/842 2968 | f 625/625 842/842 843/843 626/626 2969 | f 630/630 598/598 514/514 631/631 2970 | f 832/832 833/833 630/630 631/631 2971 | f 631/631 514/514 513/513 632/632 2972 | f 831/831 832/832 631/631 632/632 2973 | f 830/830 831/831 632/632 633/633 2974 | f 633/633 632/632 513/513 512/512 2975 | f 829/829 830/830 633/633 634/634 2976 | f 828/828 829/829 634/634 635/635 2977 | f 696/696 31/31 32/32 695/695 2978 | f 1208/1208 568/568 839/839 1210/1210 2979 | f 560/560 568/568 569/569 565/565 2980 | f 559/559 561/561 642/642 641/641 2981 | f 561/561 560/560 565/565 642/642 2982 | f 565/565 569/569 566/566 644/644 2983 | f 642/642 565/565 644/644 645/645 2984 | f 641/641 642/642 645/645 643/643 2985 | f 696/696 705/705 706/706 697/697 2986 | f 716/716 566/566 573/573 715/715 2987 | f 614/614 615/615 651/651 648/648 2988 | f 648/648 649/649 612/612 647/647 2989 | f 649/649 648/648 651/651 650/650 2990 | f 615/615 582/582 616/616 651/651 2991 | f 576/576 7/7 38/38 857/857 2992 | f 575/575 576/576 857/857 858/858 2993 | f 521/521 575/575 858/858 859/859 2994 | f 522/522 521/521 859/859 860/860 2995 | f 1171/1171 1172/1172 619/619 621/621 2996 | f 634/634 551/551 552/552 635/635 2997 | f 534/534 551/551 512/512 727/727 2998 | f 551/551 634/634 633/633 512/512 2999 | f 513/513 514/514 515/515 655/655 3000 | f 664/664 649/649 650/650 663/663 3001 | f 612/612 649/649 664/664 665/665 3002 | f 659/659 666/666 667/667 658/658 3003 | f 23/23 24/24 543/543 672/672 3004 | f 545/545 547/547 674/674 673/673 3005 | f 674/674 547/547 555/555 675/675 3006 | f 675/675 555/555 556/556 676/676 3007 | f 676/676 556/556 553/553 677/677 3008 | f 677/677 553/553 637/637 678/678 3009 | f 678/678 637/637 825/825 826/826 3010 | f 571/571 682/682 681/681 1218/1218 3011 | f 682/682 571/571 712/712 713/713 3012 | f 724/724 725/725 709/709 708/708 3013 | f 708/708 709/709 700/700 699/699 3014 | f 700/700 27/27 28/28 699/699 3015 | f 701/701 26/26 27/27 700/700 3016 | f 709/709 710/710 701/701 700/700 3017 | f 725/725 726/726 710/710 709/709 3018 | f 683/683 711/711 712/712 571/571 3019 | f 688/688 556/556 555/555 689/689 3020 | f 689/689 555/555 547/547 690/690 3021 | f 691/691 690/690 547/547 545/545 3022 | f 24/24 25/25 692/692 543/543 3023 | f 712/712 711/711 726/726 725/725 3024 | f 713/713 712/712 725/725 724/724 3025 | f 721/721 716/716 715/715 722/722 3026 | f 562/562 563/563 509/509 508/508 3027 | f 592/592 530/530 517/517 653/653 3028 | f 582/582 615/615 1131/1131 1132/1132 3029 | f 1131/1131 615/615 614/614 1130/1130 3030 | f 504/504 506/506 1131/1131 1130/1130 3031 | f 1126/1126 1127/1127 611/611 657/657 3032 | f 1125/1125 1126/1126 657/657 620/620 3033 | f 498/498 499/499 1120/1120 1119/1119 3034 | f 1119/1119 1120/1120 817/817 816/816 3035 | f 491/491 498/498 1119/1119 1118/1118 3036 | f 1118/1118 1119/1119 816/816 815/815 3037 | f 496/496 493/493 1116/1116 1115/1115 3038 | f 1115/1115 1116/1116 813/813 812/812 3039 | f 495/495 496/496 1115/1115 1114/1114 3040 | f 1114/1114 1115/1115 812/812 811/811 3041 | f 494/494 495/495 1114/1114 1113/1113 3042 | f 593/593 590/590 730/730 734/734 3043 | f 590/590 593/593 587/587 591/591 3044 | f 10/10 606/606 738/738 11/11 3045 | f 585/585 594/594 583/583 610/610 3046 | f 610/610 583/583 584/584 500/500 3047 | f 512/512 513/513 655/655 727/727 3048 | f 535/535 534/534 727/727 732/732 3049 | f 539/539 520/520 541/541 548/548 3050 | f 590/590 592/592 653/653 730/730 3051 | f 520/520 533/533 540/540 541/541 3052 | f 545/545 673/673 672/672 543/543 3053 | f 691/691 545/545 543/543 692/692 3054 | f 742/742 741/741 684/684 1218/1218 3055 | f 742/742 1218/1218 681/681 680/680 3056 | f 679/679 639/639 836/836 837/837 3057 | f 685/685 835/835 836/836 639/639 3058 | f 824/824 825/825 637/637 686/686 3059 | f 686/686 637/637 553/553 687/687 3060 | f 687/687 553/553 556/556 688/688 3061 | f 22/22 23/23 672/672 542/542 3062 | f 540/540 2/2 22/22 542/542 3063 | f 542/542 672/672 673/673 544/544 3064 | f 541/541 540/540 542/542 544/544 3065 | f 544/544 673/673 674/674 546/546 3066 | f 548/548 541/541 544/544 546/546 3067 | f 546/546 674/674 675/675 558/558 3068 | f 539/539 548/548 549/549 535/535 3069 | f 546/546 558/558 549/549 548/548 3070 | f 558/558 675/675 676/676 557/557 3071 | f 549/549 558/558 557/557 550/550 3072 | f 557/557 676/676 677/677 554/554 3073 | f 550/550 557/557 554/554 552/552 3074 | f 552/552 554/554 636/636 635/635 3075 | f 554/554 677/677 678/678 636/636 3076 | f 636/636 678/678 826/826 827/827 3077 | f 635/635 636/636 827/827 828/828 3078 | f 640/640 679/679 837/837 838/838 3079 | f 839/839 622/622 638/638 1210/1210 3080 | f 638/638 640/640 838/838 1210/1210 3081 | f 567/567 680/680 681/681 570/570 3082 | f 567/567 1208/1208 1210/1210 838/838 3083 | f 570/570 681/681 682/682 572/572 3084 | f 572/572 682/682 713/713 714/714 3085 | f 573/573 572/572 714/714 715/715 3086 | f 714/714 713/713 724/724 723/723 3087 | f 715/715 714/714 723/723 722/722 3088 | f 721/721 722/722 706/706 705/705 3089 | f 723/723 724/724 708/708 707/707 3090 | f 722/722 723/723 707/707 706/706 3091 | f 707/707 708/708 699/699 698/698 3092 | f 697/697 706/706 707/707 698/698 3093 | f 698/698 699/699 28/28 29/29 3094 | f 697/697 698/698 29/29 30/30 3095 | f 520/520 539/539 536/536 538/538 3096 | f 533/533 520/520 538/538 729/729 3097 | f 1/1 533/533 729/729 3/3 3098 | f 536/536 539/539 535/535 732/732 3099 | f 727/727 655/655 745/745 732/732 3100 | f 655/655 515/515 746/746 745/745 3101 | f 746/746 515/515 597/597 747/747 3102 | f 747/747 597/597 600/600 756/756 3103 | f 745/745 746/746 866/866 867/867 3104 | f 536/536 732/732 868/868 869/869 3105 | f 745/745 867/867 868/868 732/732 3106 | f 748/748 654/654 733/733 744/744 3107 | f 594/594 740/740 717/717 588/588 3108 | f 752/752 751/751 589/589 739/739 3109 | f 588/588 717/717 750/750 753/753 3110 | f 593/593 752/752 737/737 587/587 3111 | f 717/717 589/589 749/749 750/750 3112 | f 865/865 866/866 746/746 747/747 3113 | f 717/717 740/740 739/739 589/589 3114 | f 740/740 594/594 585/585 586/586 3115 | f 737/737 752/752 739/739 735/735 3116 | f 740/740 586/586 735/735 739/739 3117 | f 736/736 738/738 795/795 797/797 3118 | f 12/12 736/736 607/607 13/13 3119 | f 12/12 11/11 738/738 736/736 3120 | f 733/733 656/656 518/518 516/516 3121 | f 656/656 653/653 517/517 518/518 3122 | f 744/744 733/733 516/516 537/537 3123 | f 538/538 536/536 869/869 743/743 3124 | f 864/864 865/865 747/747 756/756 3125 | f 595/595 588/588 753/753 754/754 3126 | f 596/596 595/595 754/754 755/755 3127 | f 1117/1117 1118/1118 815/815 814/814 3128 | f 1165/1165 491/491 492/492 1164/1164 3129 | f 756/756 757/757 863/863 864/864 3130 | f 757/757 758/758 862/862 863/863 3131 | f 813/813 1116/1116 1117/1117 814/814 3132 | f 1164/1164 492/492 493/493 1163/1163 3133 | f 729/729 538/538 743/743 759/759 3134 | f 4/4 3/3 729/729 759/759 3135 | f 751/751 752/752 593/593 734/734 3136 | f 749/749 589/589 751/751 728/728 3137 | f 730/730 653/653 656/656 652/652 3138 | f 652/652 656/656 733/733 654/654 3139 | f 652/652 654/654 728/728 761/761 3140 | f 761/761 734/734 730/730 652/652 3141 | f 728/728 654/654 748/748 749/749 3142 | f 761/761 728/728 751/751 734/734 3143 | f 1175/1175 1176/1176 505/505 501/501 3144 | f 502/502 1174/1174 1175/1175 501/501 3145 | f 1130/1130 614/614 762/762 1129/1129 3146 | f 614/614 648/648 647/647 762/762 3147 | f 501/501 505/505 1129/1129 1128/1128 3148 | f 1127/1127 502/502 501/501 1128/1128 3149 | f 611/611 1127/1127 1128/1128 613/613 3150 | f 657/657 611/611 763/763 764/764 3151 | f 658/658 667/667 668/668 609/609 3152 | f 763/763 659/659 658/658 764/764 3153 | f 612/612 665/665 767/767 768/768 3154 | f 767/767 666/666 659/659 768/768 3155 | f 647/647 612/612 768/768 769/769 3156 | f 769/769 768/768 659/659 763/763 3157 | f 769/769 763/763 611/611 613/613 3158 | f 762/762 613/613 1128/1128 1129/1129 3159 | f 762/762 647/647 769/769 613/613 3160 | f 1177/1177 504/504 505/505 1176/1176 3161 | f 646/646 562/562 641/641 643/643 3162 | f 564/564 563/563 562/562 646/646 3163 | f 36/36 778/778 693/693 35/35 3164 | f 695/695 694/694 703/703 704/704 3165 | f 33/33 694/694 695/695 32/32 3166 | f 780/780 694/694 33/33 34/34 3167 | f 35/35 693/693 780/780 34/34 3168 | f 694/694 780/780 779/779 703/703 3169 | f 770/770 716/716 721/721 720/720 3170 | f 716/716 770/770 644/644 566/566 3171 | f 645/645 644/644 770/770 771/771 3172 | f 643/643 645/645 771/771 772/772 3173 | f 775/775 564/564 646/646 774/774 3174 | f 774/774 646/646 643/643 772/772 3175 | f 771/771 770/770 720/720 719/719 3176 | f 772/772 771/771 719/719 773/773 3177 | f 774/774 772/772 773/773 718/718 3178 | f 775/775 774/774 718/718 776/776 3179 | f 720/720 721/721 705/705 704/704 3180 | f 705/705 696/696 695/695 704/704 3181 | f 719/719 720/720 704/704 703/703 3182 | f 719/719 703/703 779/779 773/773 3183 | f 779/779 780/780 693/693 702/702 3184 | f 718/718 773/773 779/779 702/702 3185 | f 702/702 693/693 778/778 777/777 3186 | f 776/776 718/718 702/702 777/777 3187 | f 621/621 619/619 1125/1125 1124/1124 3188 | f 1124/1124 1125/1125 620/620 618/618 3189 | f 855/855 499/499 1167/1167 1168/1168 3190 | f 817/817 1120/1120 1121/1121 818/818 3191 | f 1113/1113 1114/1114 811/811 810/810 3192 | f 1161/1161 495/495 494/494 1160/1160 3193 | f 1170/1170 1171/1171 621/621 789/789 3194 | f 1124/1124 618/618 791/791 1123/1123 3195 | f 1112/1112 1113/1113 810/810 809/809 3196 | f 1132/1132 507/507 848/848 1133/1133 3197 | f 494/494 788/788 1159/1159 1160/1160 3198 | f 793/793 608/608 607/607 796/796 3199 | f 795/795 738/738 606/606 794/794 3200 | f 796/796 607/607 736/736 797/797 3201 | f 804/804 794/794 606/606 579/579 3202 | f 575/575 521/521 806/806 578/578 3203 | f 576/576 575/575 578/578 577/577 3204 | f 578/578 804/804 579/579 577/577 3205 | f 579/579 606/606 10/10 9/9 3206 | f 7/7 576/576 577/577 8/8 3207 | f 577/577 579/579 9/9 8/8 3208 | f 605/605 810/810 811/811 603/603 3209 | f 603/603 811/811 812/812 604/604 3210 | f 604/604 812/812 813/813 758/758 3211 | f 862/862 758/758 813/813 814/814 3212 | f 596/596 755/755 815/815 816/816 3213 | f 668/668 669/669 783/783 609/609 3214 | f 14/14 608/608 819/819 15/15 3215 | f 856/856 37/37 15/15 819/819 3216 | f 819/819 608/608 793/793 799/799 3217 | f 620/620 657/657 764/764 765/765 3218 | f 792/792 791/791 618/618 781/781 3219 | f 819/819 799/799 798/798 856/856 3220 | f 764/764 658/658 609/609 765/765 3221 | f 781/781 618/618 782/782 851/851 3222 | f 852/852 853/853 20/20 19/19 3223 | f 792/792 781/781 17/17 16/16 3224 | f 782/782 765/765 609/609 783/783 3225 | f 17/17 781/781 851/851 18/18 3226 | f 851/851 852/852 19/19 18/18 3227 | f 1111/1111 1112/1112 809/809 820/820 3228 | f 785/785 820/820 809/809 821/821 3229 | f 605/605 821/821 809/809 810/810 3230 | f 685/685 639/639 825/825 824/824 3231 | f 826/826 825/825 639/639 679/679 3232 | f 827/827 826/826 679/679 640/640 3233 | f 828/828 827/827 640/640 638/638 3234 | f 622/622 829/829 828/828 638/638 3235 | f 622/622 623/623 830/830 829/829 3236 | f 623/623 624/624 831/831 830/830 3237 | f 624/624 625/625 832/832 831/831 3238 | f 625/625 626/626 833/833 832/832 3239 | f 836/836 835/835 741/741 742/742 3240 | f 837/837 836/836 742/742 680/680 3241 | f 838/838 837/837 680/680 567/567 3242 | f 840/840 839/839 568/568 560/560 3243 | f 841/841 840/840 560/560 561/561 3244 | f 842/842 841/841 561/561 559/559 3245 | f 843/843 842/842 559/559 508/508 3246 | f 844/844 843/843 508/508 509/509 3247 | f 616/616 582/582 849/849 850/850 3248 | f 849/849 582/582 1132/1132 1133/1133 3249 | f 1158/1158 1159/1159 788/788 847/847 3250 | f 618/618 620/620 765/765 782/782 3251 | f 783/783 669/669 853/853 852/852 3252 | f 782/782 783/783 852/852 851/851 3253 | f 856/856 798/798 791/791 792/792 3254 | f 16/16 37/37 856/856 792/792 3255 | f 755/755 862/862 814/814 815/815 3256 | f 863/863 862/862 755/755 754/754 3257 | f 864/864 863/863 754/754 753/753 3258 | f 753/753 750/750 865/865 864/864 3259 | f 750/750 749/749 866/866 865/865 3260 | f 867/867 866/866 749/749 748/748 3261 | f 868/868 867/867 748/748 744/744 3262 | f 869/869 868/868 744/744 537/537 3263 | f 743/743 869/869 537/537 870/870 3264 | f 537/537 516/516 871/871 870/870 3265 | f 817/817 818/818 500/500 584/584 3266 | f 584/584 596/596 816/816 817/817 3267 | f 757/757 756/756 600/600 601/601 3268 | f 601/601 604/604 758/758 757/757 3269 | f 600/600 597/597 598/598 599/599 3270 | f 599/599 598/598 630/630 629/629 3271 | f 834/834 629/629 630/630 833/833 3272 | f 626/626 843/843 844/844 627/627 3273 | f 834/834 833/833 626/626 627/627 3274 | f 603/603 604/604 601/601 602/602 3275 | f 601/601 600/600 599/599 876/876 3276 | f 605/605 603/603 602/602 786/786 3277 | f 877/877 629/629 834/834 878/878 3278 | f 876/876 599/599 629/629 877/877 3279 | f 880/880 876/876 877/877 881/881 3280 | f 880/880 602/602 601/601 876/876 3281 | f 884/884 786/786 602/602 880/880 3282 | f 850/850 849/849 846/846 787/787 3283 | f 846/846 849/849 1133/1133 1110/1110 3284 | f 846/846 820/820 785/785 787/787 3285 | f 1111/1111 820/820 846/846 1110/1110 3286 | f 1133/1133 848/848 497/497 1110/1110 3287 | f 1158/1158 847/847 497/497 1181/1181 3288 | f 497/497 848/848 1180/1180 1181/1181 3289 | f 1169/1169 1170/1170 789/789 790/790 3290 | f 1169/1169 790/790 855/855 1168/1168 3291 | f 1121/1121 855/855 790/790 1122/1122 3292 | f 1122/1122 1123/1123 791/791 861/861 3293 | f 818/818 1121/1121 1122/1122 861/861 3294 | f 802/802 861/861 791/791 798/798 3295 | f 802/802 803/803 610/610 500/500 3296 | f 500/500 818/818 861/861 802/802 3297 | f 585/585 610/610 803/803 800/800 3298 | f 803/803 802/802 798/798 799/799 3299 | f 800/800 801/801 586/586 585/585 3300 | f 803/803 799/799 793/793 800/800 3301 | f 801/801 800/800 793/793 796/796 3302 | f 801/801 875/875 735/735 586/586 3303 | f 737/737 735/735 875/875 874/874 3304 | f 801/801 796/796 797/797 875/875 3305 | f 587/587 737/737 874/874 873/873 3306 | f 875/875 797/797 795/795 874/874 3307 | f 591/591 587/587 873/873 805/805 3308 | f 873/873 874/874 795/795 794/794 3309 | f 532/532 592/592 590/590 591/591 3310 | f 591/591 805/805 806/806 532/532 3311 | f 805/805 873/873 794/794 804/804 3312 | f 804/804 578/578 806/806 805/805 3313 | f 650/650 651/651 616/616 670/670 3314 | f 807/807 787/787 785/785 628/628 3315 | f 822/822 628/628 785/785 821/821 3316 | f 822/822 821/821 605/605 786/786 3317 | f 1046/1046 1047/1047 807/807 628/628 3318 | f 885/885 822/822 786/786 884/884 3319 | f 1045/1045 1046/1046 628/628 822/822 3320 | f 1044/1044 1045/1045 822/822 885/885 3321 | f 671/671 670/670 616/616 850/850 3322 | f 891/891 890/890 670/670 671/671 3323 | f 671/671 850/850 787/787 807/807 3324 | f 807/807 1047/1047 891/891 671/671 3325 | f 663/663 650/650 670/670 890/890 3326 | f 1043/1043 1044/1044 885/885 886/886 3327 | f 878/878 834/834 627/627 879/879 3328 | f 879/879 627/627 844/844 845/845 3329 | f 879/879 845/845 894/894 895/895 3330 | f 882/882 881/881 877/877 878/878 3331 | f 882/882 878/878 879/879 895/895 3332 | f 886/886 885/885 884/884 883/883 3333 | f 883/883 884/884 880/880 881/881 3334 | f 897/897 895/895 894/894 896/896 3335 | f 892/892 886/886 883/883 899/899 3336 | f 887/887 1043/1043 886/886 892/892 3337 | f 897/897 896/896 898/898 900/900 3338 | f 882/882 895/895 897/897 899/899 3339 | f 899/899 897/897 900/900 892/892 3340 | f 883/883 881/881 882/882 899/899 3341 | f 900/900 898/898 887/887 892/892 3342 | f 519/519 517/517 530/530 529/529 3343 | f 531/531 530/530 592/592 532/532 3344 | f 532/532 806/806 521/521 531/531 3345 | f 531/531 521/521 522/522 872/872 3346 | f 529/529 530/530 531/531 872/872 3347 | f 5/5 4/4 759/759 760/760 3348 | f 857/857 38/38 6/6 574/574 3349 | f 901/901 574/574 6/6 39/39 3350 | f 901/901 39/39 5/5 760/760 3351 | f 858/858 857/857 574/574 525/525 3352 | f 760/760 759/759 743/743 526/526 3353 | f 901/901 760/760 526/526 902/902 3354 | f 525/525 574/574 901/901 902/902 3355 | f 859/859 858/858 525/525 523/523 3356 | f 526/526 743/743 870/870 527/527 3357 | f 902/902 526/526 527/527 903/903 3358 | f 523/523 525/525 902/902 903/903 3359 | f 860/860 859/859 523/523 524/524 3360 | f 527/527 870/870 871/871 528/528 3361 | f 903/903 527/527 528/528 904/904 3362 | f 524/524 523/523 903/903 904/904 3363 | f 1031/1031 1032/1032 890/890 891/891 3364 | f 889/889 490/490 943/943 944/944 3365 | f 965/965 617/617 662/662 964/964 3366 | f 1015/1015 1016/1016 1035/1035 1034/1034 3367 | f 665/665 664/664 1034/1034 1035/1035 3368 | f 963/963 766/766 661/661 962/962 3369 | f 1036/1036 1037/1037 666/666 767/767 3370 | f 964/964 662/662 766/766 963/963 3371 | f 1035/1035 1016/1016 1017/1017 1036/1036 3372 | f 767/767 665/665 1035/1035 1036/1036 3373 | f 669/669 668/668 1039/1039 1040/1040 3374 | f 959/959 960/960 581/581 784/784 3375 | f 845/845 844/844 509/509 510/510 3376 | f 1040/1040 1041/1041 853/853 669/669 3377 | f 959/959 784/784 854/854 958/958 3378 | f 1041/1041 1042/1042 20/20 853/853 3379 | f 854/854 21/21 957/957 958/958 3380 | f 888/888 1025/1025 887/887 898/898 3381 | f 1058/1058 1059/1059 1025/1025 888/888 3382 | f 898/898 896/896 511/511 888/888 3383 | f 1011/1011 1012/1012 1031/1031 1030/1030 3384 | f 1010/1010 1011/1011 1030/1030 1029/1029 3385 | f 1028/1028 1009/1009 1010/1010 1029/1029 3386 | f 1052/1052 1053/1053 971/971 972/972 3387 | f 983/983 1051/1051 973/973 974/974 3388 | f 943/943 490/490 580/580 942/942 3389 | f 1032/1032 1033/1033 663/663 890/890 3390 | f 580/580 617/617 965/965 942/942 3391 | f 1033/1033 1014/1014 1015/1015 1034/1034 3392 | f 1033/1033 1034/1034 664/664 663/663 3393 | f 961/961 660/660 581/581 960/960 3394 | f 1038/1038 1039/1039 668/668 667/667 3395 | f 961/961 962/962 661/661 660/660 3396 | f 1037/1037 1018/1018 1019/1019 1038/1038 3397 | f 667/667 666/666 1037/1037 1038/1038 3398 | f 971/971 1053/1053 1054/1054 970/970 3399 | f 1025/1025 1059/1059 1060/1060 1026/1026 3400 | f 983/983 974/974 975/975 984/984 3401 | f 994/994 983/983 984/984 995/995 3402 | f 893/893 1056/1056 1057/1057 511/511 3403 | f 511/511 896/896 894/894 893/893 3404 | f 893/893 510/510 1055/1055 1056/1056 3405 | f 894/894 845/845 510/510 893/893 3406 | f 1006/1006 1007/1007 907/907 823/823 3407 | f 908/908 907/907 1007/1007 1008/1008 3408 | f 909/909 908/908 1008/1008 991/991 3409 | f 910/910 909/909 991/991 992/992 3410 | f 911/911 910/910 992/992 993/993 3411 | f 945/945 912/912 911/911 993/993 3412 | f 945/945 994/994 913/913 912/912 3413 | f 994/994 995/995 914/914 913/913 3414 | f 731/731 808/808 1000/1000 1001/1001 3415 | f 933/933 925/925 924/924 990/990 3416 | f 928/928 927/927 935/935 936/936 3417 | f 1051/1051 1052/1052 972/972 973/973 3418 | f 1057/1057 1058/1058 888/888 511/511 3419 | f 478/478 934/934 933/933 61/61 3420 | f 935/935 934/934 478/478 62/62 3421 | f 62/62 462/462 936/936 935/935 3422 | f 462/462 392/392 937/937 936/936 3423 | f 469/469 938/938 937/937 392/392 3424 | f 939/939 938/938 469/469 466/466 3425 | f 940/940 939/939 466/466 465/465 3426 | f 941/941 940/940 465/465 472/472 3427 | f 1013/1013 943/943 942/942 1014/1014 3428 | f 947/947 946/946 467/467 215/215 3429 | f 215/215 216/216 948/948 947/947 3430 | f 949/949 948/948 216/216 217/217 3431 | f 217/217 218/218 950/950 949/949 3432 | f 218/218 332/332 951/951 950/950 3433 | f 332/332 219/219 952/952 951/951 3434 | f 220/220 953/953 952/952 219/219 3435 | f 220/220 221/221 954/954 953/953 3436 | f 352/352 955/955 954/954 221/221 3437 | f 352/352 425/425 956/956 955/955 3438 | f 1023/1023 957/957 956/956 425/425 3439 | f 1021/1021 959/959 958/958 1022/1022 3440 | f 961/961 960/960 1020/1020 1019/1019 3441 | f 1018/1018 962/962 961/961 1019/1019 3442 | f 963/963 962/962 1018/1018 1017/1017 3443 | f 1016/1016 964/964 963/963 1017/1017 3444 | f 965/965 964/964 1016/1016 1015/1015 3445 | f 942/942 965/965 1015/1015 1014/1014 3446 | f 966/966 944/944 1012/1012 1011/1011 3447 | f 967/967 889/889 944/944 966/966 3448 | f 808/808 967/967 966/966 1000/1000 3449 | f 941/941 968/968 932/932 940/940 3450 | f 969/969 968/968 941/941 1024/1024 3451 | f 510/510 509/509 563/563 970/970 3452 | f 971/971 970/970 563/563 564/564 3453 | f 972/972 971/971 564/564 775/775 3454 | f 973/973 972/972 775/775 776/776 3455 | f 974/974 973/973 776/776 777/777 3456 | f 975/975 974/974 777/777 778/778 3457 | f 976/976 975/975 778/778 36/36 3458 | f 977/977 976/976 36/36 345/345 3459 | f 978/978 977/977 345/345 344/344 3460 | f 979/979 978/978 344/344 343/343 3461 | f 980/980 979/979 343/343 342/342 3462 | f 981/981 980/980 342/342 115/115 3463 | f 982/982 981/981 115/115 114/114 3464 | f 61/61 982/982 114/114 60/60 3465 | f 986/986 985/985 977/977 978/978 3466 | f 987/987 986/986 978/978 979/979 3467 | f 988/988 987/987 979/979 980/980 3468 | f 981/981 989/989 988/988 980/980 3469 | f 982/982 990/990 989/989 981/981 3470 | f 933/933 990/990 982/982 61/61 3471 | f 997/997 996/996 985/985 986/986 3472 | f 998/998 997/997 986/986 987/987 3473 | f 999/999 998/998 987/987 988/988 3474 | f 923/923 999/999 988/988 989/989 3475 | f 1000/1000 966/966 1011/1011 1010/1010 3476 | f 1001/1001 1000/1000 1010/1010 1009/1009 3477 | f 970/970 1054/1054 1055/1055 510/510 3478 | f 1013/1013 1012/1012 944/944 943/943 3479 | f 1021/1021 1020/1020 960/960 959/959 3480 | f 1023/1023 1022/1022 958/958 957/957 3481 | f 1024/1024 941/941 472/472 473/473 3482 | f 474/474 467/467 1024/1024 473/473 3483 | f 1061/1061 1027/1027 1026/1026 1060/1060 3484 | f 1009/1009 1028/1028 1027/1027 1061/1061 3485 | f 1032/1032 1031/1031 1012/1012 1013/1013 3486 | f 1033/1033 1032/1032 1013/1013 1014/1014 3487 | f 1037/1037 1036/1036 1017/1017 1018/1018 3488 | f 1020/1020 1039/1039 1038/1038 1019/1019 3489 | f 1040/1040 1039/1039 1020/1020 1021/1021 3490 | f 1041/1041 1040/1040 1021/1021 1022/1022 3491 | f 1042/1042 1041/1041 1022/1022 1023/1023 3492 | f 1026/1026 1043/1043 887/887 1025/1025 3493 | f 1027/1027 1044/1044 1043/1043 1026/1026 3494 | f 1028/1028 1045/1045 1044/1044 1027/1027 3495 | f 1029/1029 1046/1046 1045/1045 1028/1028 3496 | f 1047/1047 1046/1046 1029/1029 1030/1030 3497 | f 891/891 1047/1047 1030/1030 1031/1031 3498 | f 1048/1048 914/914 995/995 1049/1049 3499 | f 915/915 1048/1048 1049/1049 996/996 3500 | f 1049/1049 995/995 984/984 1050/1050 3501 | f 996/996 1049/1049 1050/1050 985/985 3502 | f 1050/1050 984/984 975/975 976/976 3503 | f 985/985 1050/1050 976/976 977/977 3504 | f 945/945 1051/1051 983/983 994/994 3505 | f 993/993 1052/1052 1051/1051 945/945 3506 | f 1053/1053 1052/1052 993/993 992/992 3507 | f 1054/1054 1053/1053 992/992 991/991 3508 | f 991/991 1008/1008 1055/1055 1054/1054 3509 | f 1056/1056 1055/1055 1008/1008 1007/1007 3510 | f 1006/1006 1057/1057 1056/1056 1007/1007 3511 | f 1058/1058 1057/1057 1006/1006 1005/1005 3512 | f 1059/1059 1058/1058 1005/1005 1004/1004 3513 | f 1060/1060 1059/1059 1004/1004 1003/1003 3514 | f 1002/1002 1061/1061 1060/1060 1003/1003 3515 | f 1001/1001 1009/1009 1061/1061 1002/1002 3516 | f 1164/1164 1063/1063 1062/1062 1165/1165 3517 | f 1163/1163 1064/1064 1063/1063 1164/1164 3518 | f 1162/1162 1065/1065 1064/1064 1163/1163 3519 | f 1161/1161 1066/1066 1065/1065 1162/1162 3520 | f 1160/1160 1067/1067 1066/1066 1161/1161 3521 | f 1159/1159 1068/1068 1067/1067 1160/1160 3522 | f 1069/1069 1068/1068 1159/1159 1158/1158 3523 | f 1070/1070 1069/1069 1158/1158 1181/1181 3524 | f 1180/1180 1071/1071 1070/1070 1181/1181 3525 | f 1179/1179 1072/1072 1071/1071 1180/1180 3526 | f 1178/1178 1073/1073 1072/1072 1179/1179 3527 | f 1074/1074 1073/1073 1178/1178 1177/1177 3528 | f 1176/1176 1075/1075 1074/1074 1177/1177 3529 | f 1076/1076 1075/1075 1176/1176 1175/1175 3530 | f 1174/1174 1077/1077 1076/1076 1175/1175 3531 | f 1173/1173 1078/1078 1077/1077 1174/1174 3532 | f 1079/1079 1078/1078 1173/1173 1172/1172 3533 | f 1080/1080 1079/1079 1172/1172 1171/1171 3534 | f 1081/1081 1080/1080 1171/1171 1170/1170 3535 | f 1082/1082 1081/1081 1170/1170 1169/1169 3536 | f 1168/1168 1083/1083 1082/1082 1169/1169 3537 | f 1167/1167 1084/1084 1083/1083 1168/1168 3538 | f 1166/1166 1085/1085 1084/1084 1167/1167 3539 | f 1165/1165 1062/1062 1085/1085 1166/1166 3540 | f 847/847 1111/1111 1110/1110 497/497 3541 | f 788/788 1112/1112 1111/1111 847/847 3542 | f 494/494 1113/1113 1112/1112 788/788 3543 | f 492/492 1117/1117 1116/1116 493/493 3544 | f 491/491 1118/1118 1117/1117 492/492 3545 | f 1121/1121 1120/1120 499/499 855/855 3546 | f 789/789 1123/1123 1122/1122 790/790 3547 | f 621/621 1124/1124 1123/1123 789/789 3548 | f 504/504 1130/1130 1129/1129 505/505 3549 | f 419/419 1135/1135 1134/1134 133/133 3550 | f 416/416 1136/1136 1135/1135 419/419 3551 | f 389/389 1137/1137 1136/1136 416/416 3552 | f 169/169 1150/1150 1149/1149 360/360 3553 | f 327/327 1155/1155 1154/1154 164/164 3554 | f 165/165 1156/1156 1155/1155 327/327 3555 | f 166/166 1157/1157 1156/1156 165/165 3556 | f 133/133 1134/1134 1157/1157 166/166 3557 | f 1185/1185 1184/1184 1100/1100 1099/1099 3558 | f 1098/1098 1186/1186 1185/1185 1099/1099 3559 | f 1096/1096 1188/1188 1187/1187 1097/1097 3560 | f 1189/1189 1188/1188 1096/1096 1095/1095 3561 | f 1093/1093 1191/1191 1190/1190 1094/1094 3562 | f 1092/1092 1192/1192 1191/1191 1093/1093 3563 | f 1091/1091 1193/1193 1192/1192 1092/1092 3564 | f 1090/1090 1194/1194 1193/1193 1091/1091 3565 | f 1195/1195 1194/1194 1090/1090 1089/1089 3566 | f 1196/1196 1195/1195 1089/1089 1088/1088 3567 | f 516/516 518/518 1207/1207 871/871 3568 | f 517/517 519/519 1207/1207 518/518 3569 | f 489/489 75/75 444/444 80/80 3570 | f 524/524 872/872 522/522 860/860 3571 | f 444/444 75/75 432/432 73/73 3572 | f 79/79 70/70 1206/1206 443/443 3573 | f 489/489 80/80 70/70 79/79 3574 | f 519/519 529/529 904/904 528/528 3575 | f 904/904 529/529 872/872 524/524 3576 | f 519/519 528/528 871/871 1207/1207 3577 | f 1209/1209 1208/1208 567/567 570/570 3578 | f 569/569 568/568 1208/1208 1209/1209 3579 | f 1209/1209 570/570 572/572 573/573 3580 | f 566/566 569/569 1209/1209 573/573 3581 | f 189/189 1211/1211 408/408 191/191 3582 | f 409/409 1211/1211 189/189 173/173 3583 | f 1213/1213 121/121 118/118 1212/1212 3584 | f 120/120 1213/1213 1212/1212 119/119 3585 | f 1001/1001 1002/1002 1214/1214 731/731 3586 | f 1002/1002 1003/1003 1215/1215 1214/1214 3587 | f 1216/1216 1215/1215 1003/1003 1004/1004 3588 | f 1004/1004 1005/1005 1217/1217 1216/1216 3589 | f 1005/1005 1006/1006 823/823 1217/1217 3590 | f 571/571 1218/1218 684/684 683/683 3591 | f 118/118 121/121 1220/1220 246/246 3592 | f 121/121 123/123 247/247 1220/1220 3593 | -------------------------------------------------------------------------------- /ARKitFaceExample.xcodeproj/.xcodesamplecode.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ARKitFaceExample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 11012C161F3D07BC0099F3A4 /* BlendShapeCharacter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11012C151F3D07BC0099F3A4 /* BlendShapeCharacter.swift */; }; 11 | 116FDD742130A6BD008404D3 /* TransformVisualization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 116FDD732130A6BD008404D3 /* TransformVisualization.swift */; }; 12 | 11764D981FB1344900D90F75 /* VideoTexturedFace.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11764D971FB1344900D90F75 /* VideoTexturedFace.swift */; }; 13 | 11EC6AE12134CD18003C1B28 /* VideoTexturedFace.shader in Resources */ = {isa = PBXBuildFile; fileRef = 11EC6AE02134CD18003C1B28 /* VideoTexturedFace.shader */; }; 14 | 11EE23D2213479CF00C0DEAD /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11EE23D1213479CF00C0DEAD /* Utilities.swift */; }; 15 | 3929C48C1E89EC2C00E00B60 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3929C48B1E89EC2C00E00B60 /* AppDelegate.swift */; }; 16 | 3929C48E1E89EC2C00E00B60 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3929C48D1E89EC2C00E00B60 /* ViewController.swift */; }; 17 | 3929C4911E89EC2C00E00B60 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3929C48F1E89EC2C00E00B60 /* Main.storyboard */; }; 18 | 3929C4931E89EC2C00E00B60 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3929C4921E89EC2C00E00B60 /* Assets.xcassets */; }; 19 | 3929C49F1E89EE4400E00B60 /* Models.scnassets in Resources */ = {isa = PBXBuildFile; fileRef = 3929C49E1E89EE4400E00B60 /* Models.scnassets */; }; 20 | 39D8DC1B1E8ADAE600386B05 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 39D8DC1A1E8ADAE600386B05 /* LaunchScreen.storyboard */; }; 21 | C81DA0C61F4CC79A002AF1DA /* FaceOcclusionOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81DA0C51F4CC79A002AF1DA /* FaceOcclusionOverlay.swift */; }; 22 | C8904E551F4CFD000089E530 /* VirtualContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8904E541F4CFD000089E530 /* VirtualContent.swift */; }; 23 | C8904E571F4CFD730089E530 /* TexturedFace.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8904E561F4CFD730089E530 /* TexturedFace.swift */; }; 24 | /* End PBXBuildFile section */ 25 | 26 | /* Begin PBXFileReference section */ 27 | 11012C151F3D07BC0099F3A4 /* BlendShapeCharacter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlendShapeCharacter.swift; sourceTree = ""; }; 28 | 11063F3B1EBE651B0033EE6D /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 29 | 116FDD732130A6BD008404D3 /* TransformVisualization.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransformVisualization.swift; sourceTree = ""; }; 30 | 11764D971FB1344900D90F75 /* VideoTexturedFace.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoTexturedFace.swift; sourceTree = ""; }; 31 | 11EC6AE02134CD18003C1B28 /* VideoTexturedFace.shader */ = {isa = PBXFileReference; lastKnownFileType = text; path = VideoTexturedFace.shader; sourceTree = ""; }; 32 | 11EE23D1213479CF00C0DEAD /* Utilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utilities.swift; sourceTree = ""; }; 33 | 11F053B72130CCD2005FCAF2 /* ARFaceGeometry.obj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ARFaceGeometry.obj; sourceTree = ""; }; 34 | 3929C4881E89EC2C00E00B60 /* ARKitFaceExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ARKitFaceExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 35 | 3929C48B1E89EC2C00E00B60 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 36 | 3929C48D1E89EC2C00E00B60 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 37 | 3929C4901E89EC2C00E00B60 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 38 | 3929C4921E89EC2C00E00B60 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 39 | 3929C4971E89EC2C00E00B60 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 40 | 3929C49E1E89EE4400E00B60 /* Models.scnassets */ = {isa = PBXFileReference; lastKnownFileType = wrapper.scnassets; path = Models.scnassets; sourceTree = ""; }; 41 | 39D8DC1A1E8ADAE600386B05 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; 42 | 971FFC8F4AAE1F661DD719DD /* SampleCode.xcconfig */ = {isa = PBXFileReference; name = SampleCode.xcconfig; path = Configuration/SampleCode.xcconfig; sourceTree = ""; }; 43 | A51C1467E68FA2B950926F70 /* LICENSE.txt */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE.txt; sourceTree = ""; }; 44 | C81DA0C51F4CC79A002AF1DA /* FaceOcclusionOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FaceOcclusionOverlay.swift; sourceTree = ""; }; 45 | C8904E541F4CFD000089E530 /* VirtualContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VirtualContent.swift; sourceTree = ""; }; 46 | C8904E561F4CFD730089E530 /* TexturedFace.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TexturedFace.swift; sourceTree = ""; }; 47 | /* End PBXFileReference section */ 48 | 49 | /* Begin PBXFrameworksBuildPhase section */ 50 | 3929C4851E89EC2C00E00B60 /* Frameworks */ = { 51 | isa = PBXFrameworksBuildPhase; 52 | buildActionMask = 2147483647; 53 | files = ( 54 | ); 55 | runOnlyForDeploymentPostprocessing = 0; 56 | }; 57 | /* End PBXFrameworksBuildPhase section */ 58 | 59 | /* Begin PBXGroup section */ 60 | 1488324C1EFC3ED00043E0AB /* Resources */ = { 61 | isa = PBXGroup; 62 | children = ( 63 | 3929C49E1E89EE4400E00B60 /* Models.scnassets */, 64 | 3929C4921E89EC2C00E00B60 /* Assets.xcassets */, 65 | 3929C4971E89EC2C00E00B60 /* Info.plist */, 66 | 3929C48F1E89EC2C00E00B60 /* Main.storyboard */, 67 | 39D8DC1A1E8ADAE600386B05 /* LaunchScreen.storyboard */, 68 | 11EC6AE02134CD18003C1B28 /* VideoTexturedFace.shader */, 69 | ); 70 | path = Resources; 71 | sourceTree = ""; 72 | }; 73 | 3929C47F1E89EC2C00E00B60 = { 74 | isa = PBXGroup; 75 | children = ( 76 | 11063F3B1EBE651B0033EE6D /* README.md */, 77 | 11F053B72130CCD2005FCAF2 /* ARFaceGeometry.obj */, 78 | 3929C48A1E89EC2C00E00B60 /* ARKitFaceExample */, 79 | 3929C4891E89EC2C00E00B60 /* Products */, 80 | 690A3257C5246D71602E2F11 /* Configuration */, 81 | 41860C938D38FA5D26934B0F /* LICENSE */, 82 | ); 83 | sourceTree = ""; 84 | }; 85 | 3929C4891E89EC2C00E00B60 /* Products */ = { 86 | isa = PBXGroup; 87 | children = ( 88 | 3929C4881E89EC2C00E00B60 /* ARKitFaceExample.app */, 89 | ); 90 | name = Products; 91 | sourceTree = ""; 92 | }; 93 | 3929C48A1E89EC2C00E00B60 /* ARKitFaceExample */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | 3929C48B1E89EC2C00E00B60 /* AppDelegate.swift */, 97 | 3929C48D1E89EC2C00E00B60 /* ViewController.swift */, 98 | C8904E581F4CFE380089E530 /* Face Overlay Content */, 99 | 11EE23D1213479CF00C0DEAD /* Utilities.swift */, 100 | 1488324C1EFC3ED00043E0AB /* Resources */, 101 | ); 102 | path = ARKitFaceExample; 103 | sourceTree = ""; 104 | }; 105 | 41860C938D38FA5D26934B0F /* LICENSE */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | A51C1467E68FA2B950926F70 /* LICENSE.txt */, 109 | ); 110 | name = LICENSE; 111 | path = LICENSE; 112 | sourceTree = ""; 113 | }; 114 | 690A3257C5246D71602E2F11 /* Configuration */ = { 115 | isa = PBXGroup; 116 | children = ( 117 | 971FFC8F4AAE1F661DD719DD /* SampleCode.xcconfig */, 118 | ); 119 | name = Configuration; 120 | sourceTree = ""; 121 | }; 122 | C8904E581F4CFE380089E530 /* Face Overlay Content */ = { 123 | isa = PBXGroup; 124 | children = ( 125 | C8904E541F4CFD000089E530 /* VirtualContent.swift */, 126 | 116FDD732130A6BD008404D3 /* TransformVisualization.swift */, 127 | C8904E561F4CFD730089E530 /* TexturedFace.swift */, 128 | C81DA0C51F4CC79A002AF1DA /* FaceOcclusionOverlay.swift */, 129 | 11764D971FB1344900D90F75 /* VideoTexturedFace.swift */, 130 | 11012C151F3D07BC0099F3A4 /* BlendShapeCharacter.swift */, 131 | ); 132 | path = "Face Overlay Content"; 133 | sourceTree = ""; 134 | }; 135 | /* End PBXGroup section */ 136 | 137 | /* Begin PBXNativeTarget section */ 138 | 3929C4871E89EC2C00E00B60 /* ARKitFaceExample */ = { 139 | isa = PBXNativeTarget; 140 | buildConfigurationList = 3929C49A1E89EC2C00E00B60 /* Build configuration list for PBXNativeTarget "ARKitFaceExample" */; 141 | buildPhases = ( 142 | 3929C4841E89EC2C00E00B60 /* Sources */, 143 | 3929C4851E89EC2C00E00B60 /* Frameworks */, 144 | 3929C4861E89EC2C00E00B60 /* Resources */, 145 | ); 146 | buildRules = ( 147 | ); 148 | dependencies = ( 149 | ); 150 | name = ARKitFaceExample; 151 | productName = ARKitFaceExample; 152 | productReference = 3929C4881E89EC2C00E00B60 /* ARKitFaceExample.app */; 153 | productType = "com.apple.product-type.application"; 154 | }; 155 | /* End PBXNativeTarget section */ 156 | 157 | /* Begin PBXProject section */ 158 | 3929C4801E89EC2C00E00B60 /* Project object */ = { 159 | isa = PBXProject; 160 | attributes = { 161 | LastSwiftUpdateCheck = 0900; 162 | LastUpgradeCheck = 0930; 163 | ORGANIZATIONNAME = Apple; 164 | TargetAttributes = { 165 | 3929C4871E89EC2C00E00B60 = { 166 | CreatedOnToolsVersion = 9.0; 167 | LastSwiftMigration = 1000; 168 | ProvisioningStyle = Automatic; 169 | }; 170 | }; 171 | }; 172 | buildConfigurationList = 3929C4831E89EC2C00E00B60 /* Build configuration list for PBXProject "ARKitFaceExample" */; 173 | compatibilityVersion = "Xcode 3.2"; 174 | developmentRegion = English; 175 | hasScannedForEncodings = 0; 176 | knownRegions = ( 177 | en, 178 | Base, 179 | ); 180 | mainGroup = 3929C47F1E89EC2C00E00B60; 181 | productRefGroup = 3929C4891E89EC2C00E00B60 /* Products */; 182 | projectDirPath = ""; 183 | projectRoot = ""; 184 | targets = ( 185 | 3929C4871E89EC2C00E00B60 /* ARKitFaceExample */, 186 | ); 187 | }; 188 | /* End PBXProject section */ 189 | 190 | /* Begin PBXResourcesBuildPhase section */ 191 | 3929C4861E89EC2C00E00B60 /* Resources */ = { 192 | isa = PBXResourcesBuildPhase; 193 | buildActionMask = 2147483647; 194 | files = ( 195 | 11EC6AE12134CD18003C1B28 /* VideoTexturedFace.shader in Resources */, 196 | 3929C49F1E89EE4400E00B60 /* Models.scnassets in Resources */, 197 | 39D8DC1B1E8ADAE600386B05 /* LaunchScreen.storyboard in Resources */, 198 | 3929C4931E89EC2C00E00B60 /* Assets.xcassets in Resources */, 199 | 3929C4911E89EC2C00E00B60 /* Main.storyboard in Resources */, 200 | ); 201 | runOnlyForDeploymentPostprocessing = 0; 202 | }; 203 | /* End PBXResourcesBuildPhase section */ 204 | 205 | /* Begin PBXSourcesBuildPhase section */ 206 | 3929C4841E89EC2C00E00B60 /* Sources */ = { 207 | isa = PBXSourcesBuildPhase; 208 | buildActionMask = 2147483647; 209 | files = ( 210 | 116FDD742130A6BD008404D3 /* TransformVisualization.swift in Sources */, 211 | C81DA0C61F4CC79A002AF1DA /* FaceOcclusionOverlay.swift in Sources */, 212 | 11012C161F3D07BC0099F3A4 /* BlendShapeCharacter.swift in Sources */, 213 | 3929C48E1E89EC2C00E00B60 /* ViewController.swift in Sources */, 214 | 3929C48C1E89EC2C00E00B60 /* AppDelegate.swift in Sources */, 215 | C8904E551F4CFD000089E530 /* VirtualContent.swift in Sources */, 216 | 11764D981FB1344900D90F75 /* VideoTexturedFace.swift in Sources */, 217 | 11EE23D2213479CF00C0DEAD /* Utilities.swift in Sources */, 218 | C8904E571F4CFD730089E530 /* TexturedFace.swift in Sources */, 219 | ); 220 | runOnlyForDeploymentPostprocessing = 0; 221 | }; 222 | /* End PBXSourcesBuildPhase section */ 223 | 224 | /* Begin PBXVariantGroup section */ 225 | 3929C48F1E89EC2C00E00B60 /* Main.storyboard */ = { 226 | isa = PBXVariantGroup; 227 | children = ( 228 | 3929C4901E89EC2C00E00B60 /* Base */, 229 | ); 230 | name = Main.storyboard; 231 | path = ..; 232 | sourceTree = ""; 233 | }; 234 | /* End PBXVariantGroup section */ 235 | 236 | /* Begin XCBuildConfiguration section */ 237 | 3929C4981E89EC2C00E00B60 /* Debug */ = { 238 | isa = XCBuildConfiguration; 239 | baseConfigurationReference = 971FFC8F4AAE1F661DD719DD /* SampleCode.xcconfig */; 240 | buildSettings = { 241 | ALWAYS_SEARCH_USER_PATHS = NO; 242 | CLANG_ANALYZER_NONNULL = YES; 243 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 244 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 245 | CLANG_CXX_LIBRARY = "libc++"; 246 | CLANG_ENABLE_MODULES = YES; 247 | CLANG_ENABLE_OBJC_ARC = YES; 248 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 249 | CLANG_WARN_BOOL_CONVERSION = YES; 250 | CLANG_WARN_COMMA = YES; 251 | CLANG_WARN_CONSTANT_CONVERSION = YES; 252 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 253 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 254 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 255 | CLANG_WARN_EMPTY_BODY = YES; 256 | CLANG_WARN_ENUM_CONVERSION = YES; 257 | CLANG_WARN_INFINITE_RECURSION = YES; 258 | CLANG_WARN_INT_CONVERSION = YES; 259 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 260 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 261 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 262 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 263 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 264 | CLANG_WARN_STRICT_PROTOTYPES = YES; 265 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 266 | CLANG_WARN_UNREACHABLE_CODE = YES; 267 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 268 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 269 | COPY_PHASE_STRIP = NO; 270 | DEBUG_INFORMATION_FORMAT = dwarf; 271 | ENABLE_STRICT_OBJC_MSGSEND = YES; 272 | ENABLE_TESTABILITY = YES; 273 | GCC_C_LANGUAGE_STANDARD = gnu99; 274 | GCC_DYNAMIC_NO_PIC = NO; 275 | GCC_NO_COMMON_BLOCKS = YES; 276 | GCC_OPTIMIZATION_LEVEL = 0; 277 | GCC_PREPROCESSOR_DEFINITIONS = ( 278 | "DEBUG=1", 279 | "$(inherited)", 280 | ); 281 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 282 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 283 | GCC_WARN_UNDECLARED_SELECTOR = YES; 284 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 285 | GCC_WARN_UNUSED_FUNCTION = YES; 286 | GCC_WARN_UNUSED_VARIABLE = YES; 287 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 288 | MTL_ENABLE_DEBUG_INFO = YES; 289 | ONLY_ACTIVE_ARCH = YES; 290 | SDKROOT = iphoneos; 291 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 292 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 293 | TARGETED_DEVICE_FAMILY = "1,2"; 294 | }; 295 | name = Debug; 296 | }; 297 | 3929C4991E89EC2C00E00B60 /* Release */ = { 298 | isa = XCBuildConfiguration; 299 | baseConfigurationReference = 971FFC8F4AAE1F661DD719DD /* SampleCode.xcconfig */; 300 | buildSettings = { 301 | ALWAYS_SEARCH_USER_PATHS = NO; 302 | CLANG_ANALYZER_NONNULL = YES; 303 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 304 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 305 | CLANG_CXX_LIBRARY = "libc++"; 306 | CLANG_ENABLE_MODULES = YES; 307 | CLANG_ENABLE_OBJC_ARC = YES; 308 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 309 | CLANG_WARN_BOOL_CONVERSION = YES; 310 | CLANG_WARN_COMMA = YES; 311 | CLANG_WARN_CONSTANT_CONVERSION = YES; 312 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 313 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 314 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 315 | CLANG_WARN_EMPTY_BODY = YES; 316 | CLANG_WARN_ENUM_CONVERSION = YES; 317 | CLANG_WARN_INFINITE_RECURSION = YES; 318 | CLANG_WARN_INT_CONVERSION = YES; 319 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 320 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 321 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 322 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 323 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 324 | CLANG_WARN_STRICT_PROTOTYPES = YES; 325 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 326 | CLANG_WARN_UNREACHABLE_CODE = YES; 327 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 328 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 329 | COPY_PHASE_STRIP = NO; 330 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 331 | ENABLE_NS_ASSERTIONS = NO; 332 | ENABLE_STRICT_OBJC_MSGSEND = YES; 333 | GCC_C_LANGUAGE_STANDARD = gnu99; 334 | GCC_NO_COMMON_BLOCKS = YES; 335 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 336 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 337 | GCC_WARN_UNDECLARED_SELECTOR = YES; 338 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 339 | GCC_WARN_UNUSED_FUNCTION = YES; 340 | GCC_WARN_UNUSED_VARIABLE = YES; 341 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 342 | MTL_ENABLE_DEBUG_INFO = NO; 343 | SDKROOT = iphoneos; 344 | SWIFT_COMPILATION_MODE = wholemodule; 345 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 346 | TARGETED_DEVICE_FAMILY = "1,2"; 347 | VALIDATE_PRODUCT = YES; 348 | }; 349 | name = Release; 350 | }; 351 | 3929C49B1E89EC2C00E00B60 /* Debug */ = { 352 | isa = XCBuildConfiguration; 353 | baseConfigurationReference = 971FFC8F4AAE1F661DD719DD /* SampleCode.xcconfig */; 354 | buildSettings = { 355 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 356 | CODE_SIGN_IDENTITY = "-"; 357 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 358 | CODE_SIGN_STYLE = Automatic; 359 | DEVELOPMENT_TEAM = ""; 360 | INFOPLIST_FILE = "$(SRCROOT)/ARKitFaceExample/Resources/Info.plist"; 361 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 362 | PRODUCT_BUNDLE_IDENTIFIER = "com.example.apple-samplecode.${PRODUCT_NAME}${SAMPLE_CODE_DISAMBIGUATOR}"; 363 | PRODUCT_NAME = "$(TARGET_NAME)"; 364 | PROVISIONING_PROFILE_SPECIFIER = ""; 365 | SWIFT_VERSION = 4.2; 366 | TARGETED_DEVICE_FAMILY = "1,2"; 367 | }; 368 | name = Debug; 369 | }; 370 | 3929C49C1E89EC2C00E00B60 /* Release */ = { 371 | isa = XCBuildConfiguration; 372 | baseConfigurationReference = 971FFC8F4AAE1F661DD719DD /* SampleCode.xcconfig */; 373 | buildSettings = { 374 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 375 | CODE_SIGN_IDENTITY = "-"; 376 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 377 | CODE_SIGN_STYLE = Automatic; 378 | DEVELOPMENT_TEAM = ""; 379 | INFOPLIST_FILE = "$(SRCROOT)/ARKitFaceExample/Resources/Info.plist"; 380 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 381 | PRODUCT_BUNDLE_IDENTIFIER = "com.example.apple-samplecode.${PRODUCT_NAME}${SAMPLE_CODE_DISAMBIGUATOR}"; 382 | PRODUCT_NAME = "$(TARGET_NAME)"; 383 | PROVISIONING_PROFILE_SPECIFIER = ""; 384 | SWIFT_VERSION = 4.2; 385 | TARGETED_DEVICE_FAMILY = "1,2"; 386 | }; 387 | name = Release; 388 | }; 389 | /* End XCBuildConfiguration section */ 390 | 391 | /* Begin XCConfigurationList section */ 392 | 3929C4831E89EC2C00E00B60 /* Build configuration list for PBXProject "ARKitFaceExample" */ = { 393 | isa = XCConfigurationList; 394 | buildConfigurations = ( 395 | 3929C4981E89EC2C00E00B60 /* Debug */, 396 | 3929C4991E89EC2C00E00B60 /* Release */, 397 | ); 398 | defaultConfigurationIsVisible = 0; 399 | defaultConfigurationName = Release; 400 | }; 401 | 3929C49A1E89EC2C00E00B60 /* Build configuration list for PBXNativeTarget "ARKitFaceExample" */ = { 402 | isa = XCConfigurationList; 403 | buildConfigurations = ( 404 | 3929C49B1E89EC2C00E00B60 /* Debug */, 405 | 3929C49C1E89EC2C00E00B60 /* Release */, 406 | ); 407 | defaultConfigurationIsVisible = 0; 408 | defaultConfigurationName = Release; 409 | }; 410 | /* End XCConfigurationList section */ 411 | }; 412 | rootObject = 3929C4801E89EC2C00E00B60 /* Project object */; 413 | } 414 | -------------------------------------------------------------------------------- /ARKitFaceExample.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Latest 7 | 8 | 9 | -------------------------------------------------------------------------------- /ARKitFaceExample/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | /* 2 | See LICENSE folder for this sample’s licensing information. 3 | 4 | Abstract: 5 | Contains the application's delegate. 6 | */ 7 | 8 | import UIKit 9 | import ARKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | var window: UIWindow? 14 | 15 | func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool { 16 | if !ARFaceTrackingConfiguration.isSupported { 17 | /* 18 | Shipping apps cannot require a face-tracking-compatible device, and thus must 19 | offer face tracking AR as a secondary feature. In a shipping app, use the 20 | `isSupported` property to determine whether to offer face tracking AR features. 21 | This sample code has no features other than a demo of ARKit face tracking, so 22 | it replaces the AR view (the initial storyboard in the view controller) with 23 | an alternate view controller containing a static error message. 24 | */ 25 | let storyboard = UIStoryboard(name: "Main", bundle: nil) 26 | window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "unsupportedDeviceMessage") 27 | } 28 | return true 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ARKitFaceExample/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 74 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /ARKitFaceExample/Face Overlay Content/BlendShapeCharacter.swift: -------------------------------------------------------------------------------- 1 | /* 2 | See LICENSE folder for this sample’s licensing information. 3 | 4 | Abstract: 5 | A simple cartoon character animated using ARKit blend shapes. 6 | */ 7 | 8 | import Foundation 9 | import SceneKit 10 | import ARKit 11 | 12 | /// - Tag: BlendShapeCharacter 13 | class BlendShapeCharacter: NSObject, VirtualContentController { 14 | 15 | var contentNode: SCNNode? 16 | 17 | private var originalJawY: Float = 0 18 | 19 | private lazy var jawNode = contentNode!.childNode(withName: "jaw", recursively: true)! 20 | private lazy var eyeLeftNode = contentNode!.childNode(withName: "eyeLeft", recursively: true)! 21 | private lazy var eyeRightNode = contentNode!.childNode(withName: "eyeRight", recursively: true)! 22 | 23 | private lazy var jawHeight: Float = { 24 | let (min, max) = jawNode.boundingBox 25 | return max.y - min.y 26 | }() 27 | 28 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? { 29 | guard anchor is ARFaceAnchor else { return nil } 30 | 31 | contentNode = SCNReferenceNode(named: "robotHead") 32 | originalJawY = jawNode.position.y 33 | return contentNode 34 | } 35 | 36 | /// - Tag: BlendShapeAnimation 37 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) { 38 | guard let faceAnchor = anchor as? ARFaceAnchor 39 | else { return } 40 | 41 | let blendShapes = faceAnchor.blendShapes 42 | guard let eyeBlinkLeft = blendShapes[.eyeBlinkLeft] as? Float, 43 | let eyeBlinkRight = blendShapes[.eyeBlinkRight] as? Float, 44 | let jawOpen = blendShapes[.jawOpen] as? Float 45 | else { return } 46 | eyeLeftNode.scale.z = 1 - eyeBlinkLeft 47 | eyeRightNode.scale.z = 1 - eyeBlinkRight 48 | jawNode.position.y = originalJawY - jawHeight * jawOpen 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /ARKitFaceExample/Face Overlay Content/FaceOcclusionOverlay.swift: -------------------------------------------------------------------------------- 1 | /* 2 | See LICENSE folder for this sample’s licensing information. 3 | 4 | Abstract: 5 | Demonstrates how to simulate occlusion of virtual content by the real-world face. 6 | */ 7 | 8 | import ARKit 9 | import SceneKit 10 | 11 | class FaceOcclusionOverlay: NSObject, VirtualContentController { 12 | 13 | var contentNode: SCNNode? 14 | 15 | var occlusionNode: SCNNode! 16 | 17 | /// - Tag: OcclusionMaterial 18 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? { 19 | guard let sceneView = renderer as? ARSCNView, 20 | anchor is ARFaceAnchor else { return nil } 21 | 22 | #if targetEnvironment(simulator) 23 | #error("ARKit is not supported in iOS Simulator. Connect a physical iOS device and select it as your Xcode run destination, or select Generic iOS Device as a build-only destination.") 24 | #else 25 | /* 26 | Write depth but not color and render before other objects. 27 | This causes the geometry to occlude other SceneKit content 28 | while showing the camera view beneath, creating the illusion 29 | that real-world objects are obscuring virtual 3D objects. 30 | */ 31 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!)! 32 | faceGeometry.firstMaterial!.colorBufferWriteMask = [] 33 | occlusionNode = SCNNode(geometry: faceGeometry) 34 | occlusionNode.renderingOrder = -1 35 | 36 | // Add 3D asset positioned to appear as "glasses". 37 | let faceOverlayContent = SCNReferenceNode(named: "overlayModel") 38 | 39 | contentNode = SCNNode() 40 | contentNode!.addChildNode(occlusionNode) 41 | contentNode!.addChildNode(faceOverlayContent) 42 | #endif 43 | return contentNode 44 | } 45 | 46 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) { 47 | guard let faceGeometry = occlusionNode.geometry as? ARSCNFaceGeometry, 48 | let faceAnchor = anchor as? ARFaceAnchor 49 | else { return } 50 | 51 | faceGeometry.update(from: faceAnchor.geometry) 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /ARKitFaceExample/Face Overlay Content/ProjectMesh.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ProjectMesh.swift 3 | // ARKitFaceExample 4 | 5 | import Foundation 6 | 7 | /* 8 | Abstract: 9 | Project face mesh vertices on UIView. 10 | */ 11 | 12 | import ARKit 13 | import SceneKit 14 | 15 | class ProjectMesh: NSObject, VirtualContentController { 16 | 17 | var contentNode: SCNNode? 18 | var debugView: UIView? 19 | 20 | 21 | func setupDebugView(scenView: ARSCNView){ 22 | DispatchQueue.main.async { 23 | let screenSize = UIScreen.main.bounds 24 | 25 | self.debugView = UIView(frame: screenSize) 26 | self.debugView!.backgroundColor = .clear 27 | 28 | scenView.addSubview(self.debugView!) 29 | } 30 | } 31 | 32 | /// - Tag: ARNodeTracking 33 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? { 34 | // This class adds AR content only for face anchors. 35 | guard let sceneView = renderer as? ARSCNView, 36 | anchor is ARFaceAnchor else { return nil } 37 | 38 | #if targetEnvironment(simulator) 39 | #error("ARKit is not supported in iOS Simulator. Connect a physical iOS device and select it as your Xcode run destination, or select Generic iOS Device as a build-only destination.") 40 | #else 41 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!)! 42 | let material = faceGeometry.firstMaterial! 43 | 44 | material.diffuse.contents = UIColor.lightGray 45 | material.lightingModel = .physicallyBased 46 | 47 | contentNode = SCNNode(geometry: faceGeometry) 48 | #endif 49 | 50 | // add a debug view on top of the scene view to write the 2d points 51 | if(debugView == nil){ 52 | setupDebugView(scenView: sceneView) 53 | } 54 | 55 | // Provide the node to ARKit for keeping in sync with the face anchor. 56 | return contentNode 57 | } 58 | 59 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) { 60 | guard let faceGeometry = node.geometry as? ARSCNFaceGeometry, 61 | let faceAnchor = anchor as? ARFaceAnchor, 62 | let sceneView = renderer as? ARSCNView 63 | else { return } 64 | 65 | faceGeometry.update(from: faceAnchor.geometry) 66 | 67 | let points:[ARFaceAnchor.VerticesAndProjection] = faceAnchor.verticeAndProjection(to: sceneView) 68 | 69 | DispatchQueue.main.async { 70 | 71 | // draw debug points 72 | let projected = points.map{ $0.projected} 73 | 74 | self.debugView?.drawCircles(points: projected) 75 | } 76 | } 77 | } 78 | 79 | extension ARFaceAnchor{ 80 | 81 | struct VerticesAndProjection { 82 | var vertex: SIMD3 83 | var projected: CGPoint 84 | } 85 | 86 | func verticeAndProjection(to view: ARSCNView) -> [VerticesAndProjection]{ 87 | 88 | let points = geometry.vertices.compactMap({ (vertex) -> VerticesAndProjection? in 89 | 90 | let col = SIMD4(SCNVector4()) 91 | let pos = SIMD4(SCNVector4(vertex.x, vertex.y, vertex.z, 1)) 92 | 93 | let pworld = transform * simd_float4x4(col, col, col, pos) 94 | 95 | let vect = view.projectPoint(SCNVector3(pworld.position.x, pworld.position.y, pworld.position.z)) 96 | 97 | let p = CGPoint(x: CGFloat(vect.x), y: CGFloat(vect.y)) 98 | return VerticesAndProjection(vertex:vertex, projected: p) 99 | }) 100 | 101 | return points 102 | } 103 | } 104 | 105 | 106 | extension matrix_float4x4 { 107 | 108 | /// Get the position of the transform matrix. 109 | public var position: SCNVector3 { 110 | get{ 111 | return SCNVector3(self[3][0], self[3][1], self[3][2]) 112 | } 113 | } 114 | 115 | /// Retrieve translation from a quaternion matrix 116 | public var translation: SCNVector3 { 117 | get { 118 | return SCNVector3(columns.3.x, columns.3.y, columns.3.z) 119 | } 120 | } 121 | } 122 | 123 | 124 | extension UIView{ 125 | 126 | private struct drawCircleProperty{ 127 | static let circleFillColor = UIColor.green 128 | static let circleStrokeColor = UIColor.black 129 | static let circleRadius: CGFloat = 3.0 130 | } 131 | 132 | func drawCircle(point: CGPoint) { 133 | 134 | let circlePath = UIBezierPath(arcCenter: point, radius: drawCircleProperty.circleRadius, startAngle: CGFloat(0), endAngle: CGFloat(Double.pi * 2.0), clockwise: true) 135 | let shapeLayer = CAShapeLayer() 136 | shapeLayer.path = circlePath.cgPath 137 | shapeLayer.fillColor = drawCircleProperty.circleFillColor.cgColor 138 | shapeLayer.strokeColor = drawCircleProperty.circleStrokeColor.cgColor 139 | 140 | self.layer.addSublayer(shapeLayer) 141 | } 142 | 143 | func drawCircles(points: [CGPoint]){ 144 | 145 | self.clearLayers() 146 | 147 | for point in points{ 148 | self.drawCircle(point: point) 149 | } 150 | } 151 | 152 | func clearLayers(){ 153 | if let subLayers = self.layer.sublayers { 154 | for subLayer in subLayers { 155 | subLayer.removeFromSuperlayer() 156 | } 157 | } 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /ARKitFaceExample/Face Overlay Content/TexturedFace.swift: -------------------------------------------------------------------------------- 1 | /* 2 | See LICENSE folder for this sample’s licensing information. 3 | 4 | Abstract: 5 | Displays the 3D face mesh geometry provided by ARKit, with a static texture. 6 | */ 7 | 8 | import ARKit 9 | import SceneKit 10 | 11 | class TexturedFace: NSObject, VirtualContentController { 12 | 13 | var contentNode: SCNNode? 14 | 15 | /// - Tag: CreateARSCNFaceGeometry 16 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? { 17 | guard let sceneView = renderer as? ARSCNView, 18 | anchor is ARFaceAnchor else { return nil } 19 | 20 | #if targetEnvironment(simulator) 21 | #error("ARKit is not supported in iOS Simulator. Connect a physical iOS device and select it as your Xcode run destination, or select Generic iOS Device as a build-only destination.") 22 | #else 23 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!)! 24 | let material = faceGeometry.firstMaterial! 25 | 26 | material.diffuse.contents = #imageLiteral(resourceName: "wireframeTexture") // Example texture map image. 27 | material.lightingModel = .physicallyBased 28 | 29 | contentNode = SCNNode(geometry: faceGeometry) 30 | #endif 31 | return contentNode 32 | } 33 | 34 | /// - Tag: ARFaceGeometryUpdate 35 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) { 36 | guard let faceGeometry = node.geometry as? ARSCNFaceGeometry, 37 | let faceAnchor = anchor as? ARFaceAnchor 38 | else { return } 39 | 40 | faceGeometry.update(from: faceAnchor.geometry) 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /ARKitFaceExample/Face Overlay Content/TransformVisualization.swift: -------------------------------------------------------------------------------- 1 | /* 2 | See LICENSE folder for this sample’s licensing information. 3 | 4 | Abstract: 5 | Displays coordinate axes visualizing the tracked face pose (and eyes in iOS 12). 6 | */ 7 | 8 | import ARKit 9 | import SceneKit 10 | 11 | class TransformVisualization: NSObject, VirtualContentController { 12 | 13 | var contentNode: SCNNode? 14 | 15 | // Load multiple copies of the axis origin visualization for the transforms this class visualizes. 16 | lazy var rightEyeNode = SCNReferenceNode(named: "coordinateOrigin") 17 | lazy var leftEyeNode = SCNReferenceNode(named: "coordinateOrigin") 18 | 19 | /// - Tag: ARNodeTracking 20 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? { 21 | // This class adds AR content only for face anchors. 22 | guard anchor is ARFaceAnchor else { return nil } 23 | 24 | // Load an asset from the app bundle to provide visual content for the anchor. 25 | contentNode = SCNReferenceNode(named: "coordinateOrigin") 26 | 27 | // Add content for eye tracking in iOS 12. 28 | self.addEyeTransformNodes() 29 | 30 | // Provide the node to ARKit for keeping in sync with the face anchor. 31 | return contentNode 32 | } 33 | 34 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) { 35 | guard #available(iOS 12.0, *), let faceAnchor = anchor as? ARFaceAnchor 36 | else { return } 37 | 38 | rightEyeNode.simdTransform = faceAnchor.rightEyeTransform 39 | leftEyeNode.simdTransform = faceAnchor.leftEyeTransform 40 | } 41 | 42 | func addEyeTransformNodes() { 43 | guard #available(iOS 12.0, *), let anchorNode = contentNode else { return } 44 | 45 | // Scale down the coordinate axis visualizations for eyes. 46 | rightEyeNode.simdPivot = float4x4(diagonal: float4(3, 3, 3, 1)) 47 | leftEyeNode.simdPivot = float4x4(diagonal: float4(3, 3, 3, 1)) 48 | 49 | anchorNode.addChildNode(rightEyeNode) 50 | anchorNode.addChildNode(leftEyeNode) 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /ARKitFaceExample/Face Overlay Content/VideoTexturedFace.swift: -------------------------------------------------------------------------------- 1 | /* 2 | See LICENSE folder for this sample’s licensing information. 3 | 4 | Abstract: 5 | Demonstrates using video imagery to texture and modify the face mesh. 6 | */ 7 | 8 | import ARKit 9 | import SceneKit 10 | 11 | /// - Tag: VideoTexturedFace 12 | class VideoTexturedFace: TexturedFace { 13 | 14 | override func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? { 15 | guard let sceneView = renderer as? ARSCNView, 16 | let frame = sceneView.session.currentFrame, 17 | anchor is ARFaceAnchor 18 | else { return nil } 19 | 20 | #if targetEnvironment(simulator) 21 | #error("ARKit is not supported in iOS Simulator. Connect a physical iOS device and select it as your Xcode run destination, or select Generic iOS Device as a build-only destination.") 22 | #else 23 | // Show video texture as the diffuse material and disable lighting. 24 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!, fillMesh: true)! 25 | let material = faceGeometry.firstMaterial! 26 | material.diffuse.contents = sceneView.scene.background.contents 27 | material.lightingModel = .constant 28 | 29 | guard let shaderURL = Bundle.main.url(forResource: "VideoTexturedFace", withExtension: "shader"), 30 | let modifier = try? String(contentsOf: shaderURL) 31 | else { fatalError("Can't load shader modifier from bundle.") } 32 | faceGeometry.shaderModifiers = [ .geometry: modifier] 33 | 34 | // Pass view-appropriate image transform to the shader modifier so 35 | // that the mapped video lines up correctly with the background video. 36 | let affineTransform = frame.displayTransform(for: .portrait, viewportSize: sceneView.bounds.size) 37 | let transform = SCNMatrix4(affineTransform) 38 | faceGeometry.setValue(SCNMatrix4Invert(transform), forKey: "displayTransform") 39 | 40 | contentNode = SCNNode(geometry: faceGeometry) 41 | #endif 42 | return contentNode 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /ARKitFaceExample/Face Overlay Content/VirtualContent.swift: -------------------------------------------------------------------------------- 1 | /* 2 | See LICENSE folder for this sample’s licensing information. 3 | 4 | Abstract: 5 | Manages virtual overlays diplayed on the face in the AR experience. 6 | */ 7 | 8 | import ARKit 9 | import SceneKit 10 | 11 | enum VirtualContentType: Int { 12 | case transforms, texture, geometry, videoTexture, blendShape 13 | 14 | func makeController() -> VirtualContentController { 15 | switch self { 16 | case .transforms: 17 | // return TransformVisualization() 18 | return ProjectMesh() 19 | case .texture: 20 | return TexturedFace() 21 | case .geometry: 22 | return FaceOcclusionOverlay() 23 | case .videoTexture: 24 | return VideoTexturedFace() 25 | case .blendShape: 26 | return BlendShapeCharacter() 27 | } 28 | } 29 | } 30 | 31 | /// For forwarding `ARSCNViewDelegate` messages to the object controlling the currently visible virtual content. 32 | protocol VirtualContentController: ARSCNViewDelegate { 33 | /// The root node for the virtual content. 34 | var contentNode: SCNNode? { get set } 35 | 36 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? 37 | 38 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) 39 | } 40 | -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "images" : [ 7 | { 8 | "size" : "40x40", 9 | "filename" : "Icon-40.png", 10 | "scale" : "1x", 11 | "idiom" : "ipad" 12 | }, 13 | { 14 | "size" : "40x40", 15 | "filename" : "Icon-40@2x.png", 16 | "scale" : "2x", 17 | "idiom" : "ipad" 18 | }, 19 | { 20 | "size" : "60x60", 21 | "filename" : "Icon-60@2x.png", 22 | "scale" : "2x", 23 | "idiom" : "iphone" 24 | }, 25 | { 26 | "size" : "72x72", 27 | "filename" : "Icon-72.png", 28 | "scale" : "1x", 29 | "idiom" : "ipad" 30 | }, 31 | { 32 | "size" : "72x72", 33 | "filename" : "Icon-72@2x.png", 34 | "scale" : "2x", 35 | "idiom" : "ipad" 36 | }, 37 | { 38 | "size" : "76x76", 39 | "filename" : "Icon-76.png", 40 | "scale" : "1x", 41 | "idiom" : "ipad" 42 | }, 43 | { 44 | "size" : "76x76", 45 | "filename" : "Icon-76@2x.png", 46 | "scale" : "2x", 47 | "idiom" : "ipad" 48 | }, 49 | { 50 | "size" : "50x50", 51 | "filename" : "Icon-Small-50.png", 52 | "scale" : "1x", 53 | "idiom" : "ipad" 54 | }, 55 | { 56 | "size" : "50x50", 57 | "filename" : "Icon-Small-50@2x.png", 58 | "scale" : "2x", 59 | "idiom" : "ipad" 60 | }, 61 | { 62 | "size" : "29x29", 63 | "filename" : "Icon-Small.png", 64 | "scale" : "1x", 65 | "idiom" : "iphone" 66 | }, 67 | { 68 | "size" : "29x29", 69 | "filename" : "Icon-Small@2x.png", 70 | "scale" : "2x", 71 | "idiom" : "iphone" 72 | }, 73 | { 74 | "size" : "57x57", 75 | "filename" : "Icon.png", 76 | "scale" : "1x", 77 | "idiom" : "iphone" 78 | }, 79 | { 80 | "size" : "57x57", 81 | "filename" : "Icon@2x.png", 82 | "scale" : "2x", 83 | "idiom" : "iphone" 84 | }, 85 | { 86 | "size" : "29x29", 87 | "filename" : "Icon-Small@3x.png", 88 | "scale" : "3x", 89 | "idiom" : "iphone" 90 | }, 91 | { 92 | "size" : "40x40", 93 | "filename" : "Icon-40@3x.png", 94 | "scale" : "3x", 95 | "idiom" : "iphone" 96 | }, 97 | { 98 | "size" : "60x60", 99 | "filename" : "Icon-60@3x.png", 100 | "scale" : "3x", 101 | "idiom" : "iphone" 102 | }, 103 | { 104 | "size" : "40x40", 105 | "filename" : "Icon-40@2x.png", 106 | "scale" : "2x", 107 | "idiom" : "iphone" 108 | }, 109 | { 110 | "size" : "29x29", 111 | "filename" : "Icon-Small.png", 112 | "scale" : "1x", 113 | "idiom" : "ipad" 114 | }, 115 | { 116 | "size" : "29x29", 117 | "filename" : "Icon-Small@2x.png", 118 | "scale" : "2x", 119 | "idiom" : "ipad" 120 | }, 121 | { 122 | "size" : "83.5x83.5", 123 | "filename" : "Icon-83.5@2x.png", 124 | "scale" : "2x", 125 | "idiom" : "ipad" 126 | }, 127 | { 128 | "size" : "20x20", 129 | "filename" : "NotificationIcon@2x.png", 130 | "scale" : "2x", 131 | "idiom" : "iphone" 132 | }, 133 | { 134 | "size" : "20x20", 135 | "filename" : "NotificationIcon@3x.png", 136 | "scale" : "3x", 137 | "idiom" : "iphone" 138 | }, 139 | { 140 | "size" : "20x20", 141 | "filename" : "NotificationIcon~ipad.png", 142 | "scale" : "1x", 143 | "idiom" : "ipad" 144 | }, 145 | { 146 | "size" : "20x20", 147 | "filename" : "NotificationIcon~ipad@2x.png", 148 | "scale" : "2x", 149 | "idiom" : "ipad" 150 | }, 151 | { 152 | "size" : "1024x1024", 153 | "filename" : "ios-marketing.png", 154 | "scale" : "1x", 155 | "idiom" : "ios-marketing" 156 | } 157 | ] 158 | } -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-40.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-72.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon@2x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon@2x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon@3x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad@2x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/ios-marketing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/ios-marketing.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/blendShapes.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "blendShapes-1.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "blendShapes.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "template" 24 | } 25 | } -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/blendShapes.imageset/blendShapes-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/blendShapes.imageset/blendShapes-1.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/blendShapes.imageset/blendShapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/blendShapes.imageset/blendShapes.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/geometry.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "geometry-1.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "geometry.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "template" 24 | } 25 | } -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/geometry.imageset/geometry-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/geometry.imageset/geometry-1.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/geometry.imageset/geometry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/geometry.imageset/geometry.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/restart.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "refresh@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "refresh@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/restart.imageset/refresh@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/restart.imageset/refresh@2x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/restart.imageset/refresh@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/restart.imageset/refresh@3x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/restartPressed.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "refreshPressed@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "refreshPressed@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/restartPressed.imageset/refreshPressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/restartPressed.imageset/refreshPressed@2x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/restartPressed.imageset/refreshPressed@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/restartPressed.imageset/refreshPressed@3x.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/texture.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "texture-1.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "texture.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "template" 24 | } 25 | } -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/texture.imageset/texture-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/texture.imageset/texture-1.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/texture.imageset/texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/texture.imageset/texture.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/transforms.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "transforms-1.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "transforms.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "template" 24 | } 25 | } -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/transforms.imageset/transforms-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/transforms.imageset/transforms-1.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/transforms.imageset/transforms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/transforms.imageset/transforms.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/videoTexture.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "videoTexture-1.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "videoTexture.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | }, 22 | "properties" : { 23 | "template-rendering-intent" : "template" 24 | } 25 | } -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/videoTexture.imageset/videoTexture-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/videoTexture.imageset/videoTexture-1.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/videoTexture.imageset/videoTexture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/videoTexture.imageset/videoTexture.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/wireframeTexture.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "wireframeTexture.png" 6 | } 7 | ], 8 | "info" : { 9 | "version" : 1, 10 | "author" : "xcode" 11 | } 12 | } -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Assets.xcassets/wireframeTexture.imageset/wireframeTexture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/wireframeTexture.imageset/wireframeTexture.png -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | AR Faces 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | NSCameraUsageDescription 26 | The camera is used for augmenting reality 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UIRequiredDeviceCapabilities 32 | 33 | armv7 34 | 35 | UIRequiresFullScreen 36 | 37 | UIStatusBarHidden 38 | 39 | UISupportedInterfaceOrientations 40 | 41 | UIInterfaceOrientationPortrait 42 | 43 | UISupportedInterfaceOrientations~ipad 44 | 45 | UIInterfaceOrientationPortrait 46 | UIInterfaceOrientationPortraitUpsideDown 47 | UIInterfaceOrientationLandscapeLeft 48 | UIInterfaceOrientationLandscapeRight 49 | 50 | UIViewControllerBasedStatusBarAppearance 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Models.scnassets/coordinateOrigin.scn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Models.scnassets/coordinateOrigin.scn -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Models.scnassets/overlayModel.scn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Models.scnassets/overlayModel.scn -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/Models.scnassets/robotHead.scn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Models.scnassets/robotHead.scn -------------------------------------------------------------------------------- /ARKitFaceExample/Resources/VideoTexturedFace.shader: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | 4 | SceneKit shader (geometry) modifier for texture mapping ARKit camera video onto the face. 5 | 6 | 7 | */ 8 | 9 | #pragma arguments 10 | float4x4 displayTransform // from ARFrame.displayTransform(for:viewportSize:) 11 | 12 | #pragma body 13 | 14 | // Transform the vertex to the camera coordinate system. 15 | float4 vertexCamera = scn_node.modelViewTransform * _geometry.position; 16 | 17 | // Camera projection and perspective divide to get normalized viewport coordinates (clip space). 18 | float4 vertexClipSpace = scn_frame.projectionTransform * vertexCamera; 19 | vertexClipSpace /= vertexClipSpace.w; 20 | 21 | // XY in clip space is [-1,1]x[-1,1], so adjust to UV texture coordinates: [0,1]x[0,1]. 22 | // Image coordinates are Y-flipped (upper-left origin). 23 | float4 vertexImageSpace = float4(vertexClipSpace.xy * 0.5 + 0.5, 0.0, 1.0); 24 | vertexImageSpace.y = 1.0 - vertexImageSpace.y; 25 | 26 | // Apply ARKit's display transform (device orientation * front-facing camera flip). 27 | float4 transformedVertex = displayTransform * vertexImageSpace; 28 | 29 | // Output as texture coordinates for use in later rendering stages. 30 | _geometry.texcoords[0] = transformedVertex.xy; 31 | 32 | /** 33 | * MARK: Post-process special effects 34 | */ 35 | 36 | // Make head appear big. (You could also apply other geometry modifications here.) 37 | _geometry.position.xyz *= 1.5; 38 | -------------------------------------------------------------------------------- /ARKitFaceExample/Utilities.swift: -------------------------------------------------------------------------------- 1 | /* 2 | See LICENSE folder for this sample’s licensing information. 3 | 4 | Abstract: 5 | Convenience extensions for system types. 6 | */ 7 | 8 | import ARKit 9 | import SceneKit 10 | 11 | extension SCNMatrix4 { 12 | /** 13 | Create a 4x4 matrix from CGAffineTransform, which represents a 3x3 matrix 14 | but stores only the 6 elements needed for 2D affine transformations. 15 | 16 | [ a b 0 ] [ a b 0 0 ] 17 | [ c d 0 ] -> [ c d 0 0 ] 18 | [ tx ty 1 ] [ 0 0 1 0 ] 19 | . [ tx ty 0 1 ] 20 | 21 | Used for transforming texture coordinates in the shader modifier. 22 | (Needs to be SCNMatrix4, not SIMD float4x4, for passing to shader modifier via KVC.) 23 | */ 24 | init(_ affineTransform: CGAffineTransform) { 25 | self.init() 26 | m11 = Float(affineTransform.a) 27 | m12 = Float(affineTransform.b) 28 | m21 = Float(affineTransform.c) 29 | m22 = Float(affineTransform.d) 30 | m41 = Float(affineTransform.tx) 31 | m42 = Float(affineTransform.ty) 32 | m33 = 1 33 | m44 = 1 34 | } 35 | } 36 | 37 | extension SCNReferenceNode { 38 | convenience init(named resourceName: String, loadImmediately: Bool = true) { 39 | let url = Bundle.main.url(forResource: resourceName, withExtension: "scn", subdirectory: "Models.scnassets")! 40 | self.init(url: url)! 41 | if loadImmediately { 42 | self.load() 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ARKitFaceExample/ViewController.swift: -------------------------------------------------------------------------------- 1 | /* 2 | See LICENSE folder for this sample’s licensing information. 3 | 4 | Abstract: 5 | Main view controller for the AR experience. 6 | */ 7 | 8 | import ARKit 9 | import SceneKit 10 | import UIKit 11 | 12 | class ViewController: UIViewController, ARSessionDelegate { 13 | 14 | // MARK: Outlets 15 | 16 | @IBOutlet var sceneView: ARSCNView! 17 | @IBOutlet weak var tabBar: UITabBar! 18 | 19 | // MARK: Properties 20 | 21 | var contentControllers: [VirtualContentType: VirtualContentController] = [:] 22 | 23 | var selectedVirtualContent: VirtualContentType! { 24 | didSet { 25 | guard oldValue != nil, oldValue != selectedVirtualContent 26 | else { return } 27 | 28 | // Remove existing content when switching types. 29 | contentControllers[oldValue]?.contentNode?.removeFromParentNode() 30 | 31 | // If there's an anchor already (switching content), get the content controller to place initial content. 32 | // Otherwise, the content controller will place it in `renderer(_:didAdd:for:)`. 33 | if let anchor = currentFaceAnchor, let node = sceneView.node(for: anchor), 34 | let newContent = selectedContentController.renderer(sceneView, nodeFor: anchor) { 35 | node.addChildNode(newContent) 36 | } 37 | } 38 | } 39 | var selectedContentController: VirtualContentController { 40 | if let controller = contentControllers[selectedVirtualContent] { 41 | return controller 42 | } else { 43 | let controller = selectedVirtualContent.makeController() 44 | contentControllers[selectedVirtualContent] = controller 45 | return controller 46 | } 47 | } 48 | 49 | var currentFaceAnchor: ARFaceAnchor? 50 | 51 | // MARK: - View Controller Life Cycle 52 | 53 | override func viewDidLoad() { 54 | super.viewDidLoad() 55 | 56 | sceneView.delegate = self 57 | sceneView.session.delegate = self 58 | sceneView.automaticallyUpdatesLighting = true 59 | 60 | // Set the initial face content. 61 | tabBar.selectedItem = tabBar.items!.first! 62 | selectedVirtualContent = VirtualContentType(rawValue: tabBar.selectedItem!.tag) 63 | } 64 | 65 | override func viewDidAppear(_ animated: Bool) { 66 | super.viewDidAppear(animated) 67 | 68 | // AR experiences typically involve moving the device without 69 | // touch input for some time, so prevent auto screen dimming. 70 | UIApplication.shared.isIdleTimerDisabled = true 71 | 72 | // "Reset" to run the AR session for the first time. 73 | resetTracking() 74 | } 75 | 76 | // MARK: - ARSessionDelegate 77 | 78 | func session(_ session: ARSession, didFailWithError error: Error) { 79 | guard error is ARError else { return } 80 | 81 | let errorWithInfo = error as NSError 82 | let messages = [ 83 | errorWithInfo.localizedDescription, 84 | errorWithInfo.localizedFailureReason, 85 | errorWithInfo.localizedRecoverySuggestion 86 | ] 87 | let errorMessage = messages.compactMap({ $0 }).joined(separator: "\n") 88 | 89 | DispatchQueue.main.async { 90 | self.displayErrorMessage(title: "The AR session failed.", message: errorMessage) 91 | } 92 | } 93 | 94 | /// - Tag: ARFaceTrackingSetup 95 | func resetTracking() { 96 | guard ARFaceTrackingConfiguration.isSupported else { return } 97 | let configuration = ARFaceTrackingConfiguration() 98 | configuration.isLightEstimationEnabled = true 99 | sceneView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors]) 100 | } 101 | 102 | // MARK: - Error handling 103 | 104 | func displayErrorMessage(title: String, message: String) { 105 | // Present an alert informing about the error that has occurred. 106 | let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) 107 | let restartAction = UIAlertAction(title: "Restart Session", style: .default) { _ in 108 | alertController.dismiss(animated: true, completion: nil) 109 | self.resetTracking() 110 | } 111 | alertController.addAction(restartAction) 112 | present(alertController, animated: true, completion: nil) 113 | } 114 | } 115 | 116 | extension ViewController: UITabBarDelegate { 117 | func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 118 | guard let contentType = VirtualContentType(rawValue: item.tag) 119 | else { fatalError("unexpected virtual content tag") } 120 | selectedVirtualContent = contentType 121 | } 122 | } 123 | 124 | extension ViewController: ARSCNViewDelegate { 125 | 126 | func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) { 127 | guard let faceAnchor = anchor as? ARFaceAnchor else { return } 128 | currentFaceAnchor = faceAnchor 129 | 130 | // If this is the first time with this anchor, get the controller to create content. 131 | // Otherwise (switching content), will change content when setting `selectedVirtualContent`. 132 | if node.childNodes.isEmpty, let contentNode = selectedContentController.renderer(renderer, nodeFor: faceAnchor) { 133 | node.addChildNode(contentNode) 134 | } 135 | } 136 | 137 | /// - Tag: ARFaceGeometryUpdate 138 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) { 139 | guard anchor == currentFaceAnchor, 140 | let contentNode = selectedContentController.contentNode, 141 | contentNode.parent == node 142 | else { return } 143 | 144 | selectedContentController.renderer(renderer, didUpdate: contentNode, for: anchor) 145 | } 146 | } 147 | 148 | -------------------------------------------------------------------------------- /Configuration/SampleCode.xcconfig: -------------------------------------------------------------------------------- 1 | // 2 | // See LICENSE folder for this sample’s licensing information. 3 | // 4 | // SampleCode.xcconfig 5 | // 6 | 7 | // The `SAMPLE_CODE_DISAMBIGUATOR` configuration is to make it easier to build 8 | // and run a sample code project. Once you set your project's development team, 9 | // you'll have a unique bundle identifier. This is because the bundle identifier 10 | // is derived based on the 'SAMPLE_CODE_DISAMBIGUATOR' value. Do not use this 11 | // approach in your own projects—it's only useful for sample code projects because 12 | // they are frequently downloaded and don't have a development team set. 13 | SAMPLE_CODE_DISAMBIGUATOR=${DEVELOPMENT_TEAM} 14 | -------------------------------------------------------------------------------- /Documentation/FaceExampleModes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/Documentation/FaceExampleModes.png -------------------------------------------------------------------------------- /IMG_7407.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/IMG_7407.jpg -------------------------------------------------------------------------------- /LICENSE/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright © 2020 Apple Inc. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tracking and Visualizing Faces 2 | 3 | Detect faces in a front-camera AR experience, overlay virtual content, and animate facial expressions in real-time. 4 | 5 | ## Overview 6 | 7 | This sample app presents a simple interface allowing you to choose between five augmented reality (AR) visualizations on devices with a TrueDepth front-facing camera. 8 | 9 | - An overlay of x/y/z axes indicating the ARKit coordinate system tracking the face (and in iOS 12, the position and orientation of each eye). 10 | - The face mesh provided by ARKit, showing automatic estimation of the real-world directional lighting environment, as well as a texture you can use to map 2D imagery onto the face. 11 | - Virtual 3D content that appears to attach to (and interact with) the user's real face. 12 | - Live camera video texture-mapped onto the ARKit face mesh, with which you can create effects that appear to distort the user's real face in 3D. 13 | - A simple robot character whose facial expression animates to match that of the user, showing how to use ARKit's animation blend shape values to create experiences like the system Animoji app. 14 | 15 | Use the tab bar to switch between these modes. 16 | 17 | ![Screenshot of UI for choosing AR face modes](Documentation/FaceExampleModes.png) 18 | 19 | ## Getting Started 20 | 21 | This sample code project requires: 22 | 23 | - An iOS device with front-facing TrueDepth camera: 24 | - iPhone X, iPhone XS, iPhone XS Max, or iPhone XR. 25 | - iPad Pro (11-inch) or iPad Pro (12.9-inch, 3rd generation). 26 | - iOS 11.0 or later. 27 | - Xcode 10.0 or later. 28 | 29 | ARKit is not available in iOS Simulator. 30 | 31 | ## Start a Face-Tracking Session in a SceneKit View 32 | 33 | Like other uses of ARKit, face tracking requires configuring and running a session (an [`ARSession`][0] object) and rendering the camera image together with virtual content in a view. This sample uses [`ARSCNView`][1] to display 3D content with SceneKit, but you can also use SpriteKit or build your own renderer using Metal (see [ARSKView][2] and [Displaying an AR Experience with Metal][3]). 34 | 35 | [0]:https://developer.apple.com/documentation/arkit/arsession 36 | [1]:https://developer.apple.com/documentation/arkit/arscnview 37 | [2]:https://developer.apple.com/documentation/arkit/arskview 38 | [3]:https://developer.apple.com/documentation/arkit/displaying_an_ar_experience_with_metal 39 | 40 | Face tracking differs from other uses of ARKit in the class you use to configure the session. To enable face tracking, create an instance of [`ARFaceTrackingConfiguration`][5], configure its properties, and pass it to the [`run(_:options:)`][6] method of the AR session associated with your view, as shown here: 41 | 42 | [5]:https://developer.apple.com/documentation/arkit/arfacetrackingconfiguration 43 | [6]:https://developer.apple.com/documentation/arkit/arsession/2875735-run 44 | 45 | ``` swift 46 | guard ARFaceTrackingConfiguration.isSupported else { return } 47 | let configuration = ARFaceTrackingConfiguration() 48 | configuration.isLightEstimationEnabled = true 49 | sceneView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors]) 50 | ``` 51 | [View in Source](x-source-tag://ARFaceTrackingSetup) 52 | 53 | Before offering features that require a face-tracking AR session, check the [`isSupported`][7] property on the [`ARFaceTrackingConfiguration`][5] class to determine whether the current device supports ARKit face tracking. 54 | 55 | [7]:https://developer.apple.com/documentation/arkit/arconfiguration/2923553-issupported 56 | 57 | ## Track the Position and Orientation of a Face 58 | 59 | When face tracking is active, ARKit automatically adds [`ARFaceAnchor`][10] objects to the running AR session, containing information about the user's face, including its position and orientation. (ARKit detects and provides information about only face at a time. If multiple faces are present in the camera image, ARKit chooses the largest or most clearly recognizable face.) 60 | 61 | [10]:https://developer.apple.com/documentation/arkit/arfaceanchor 62 | 63 | In a SceneKit-based AR experience, you can add 3D content corresponding to a face anchor in the [`renderer(_:nodeFor:)`][11] or [`renderer(_:didAdd:for:)`][12] delegate method. ARKit manages a SceneKit node for the anchor, and updates that node's position and orientation on each frame, so any SceneKit content you add to that node automatically follows the position and orientation of the user's face. 64 | 65 | [11]:https://developer.apple.com/documentation/arkit/arscnviewdelegate/2865801-renderer 66 | [12]:https://developer.apple.com/documentation/arkit/arscnviewdelegate/2865794-renderer 67 | 68 | ``` swift 69 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? { 70 | // This class adds AR content only for face anchors. 71 | guard anchor is ARFaceAnchor else { return nil } 72 | 73 | // Load an asset from the app bundle to provide visual content for the anchor. 74 | contentNode = SCNReferenceNode(named: "coordinateOrigin") 75 | 76 | // Add content for eye tracking in iOS 12. 77 | self.addEyeTransformNodes() 78 | 79 | // Provide the node to ARKit for keeping in sync with the face anchor. 80 | return contentNode 81 | } 82 | ``` 83 | [View in Source](x-source-tag://ARNodeTracking) 84 | 85 | This example uses a convenience extension on [`SCNReferenceNode`][13] to load content from an `.scn` file in the app bundle. The [`renderer(_:nodeFor:)`][1] method provides that node to [`ARSCNView`][1], allowing ARKit to automatically adjust the node's position and orientation to match the tracked face. 86 | 87 | [13]:https://developer.apple.com/documentation/scenekit/scnreferencenode 88 | 89 | ## Use Face Geometry to Model the User's Face 90 | 91 | ARKit provides a coarse 3D mesh geometry matching the size, shape, topology, and current facial expression of the user's face. ARKit also provides the [`ARSCNFaceGeometry`][20] class, offering an easy way to visualize this mesh in SceneKit. 92 | 93 | [20]:https://developer.apple.com/documentation/arkit/arscnfacegeometry 94 | 95 | Your AR experience can use this mesh to place or draw content that appears to attach to the face. For example, by applying a semitransparent texture to this geometry you could paint virtual tattoos or makeup onto the user's skin. 96 | 97 | To create a SceneKit face geometry, initialize an [`ARSCNFaceGeometry`][20] object with the Metal device your SceneKit view uses for rendering, and assign that geometry to the SceneKit node tracking the face anchor. 98 | 99 | ``` swift 100 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? { 101 | guard let sceneView = renderer as? ARSCNView, 102 | anchor is ARFaceAnchor else { return nil } 103 | 104 | #if targetEnvironment(simulator) 105 | #error("ARKit is not supported in iOS Simulator. Connect a physical iOS device and select it as your Xcode run destination, or select Generic iOS Device as a build-only destination.") 106 | #else 107 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!)! 108 | let material = faceGeometry.firstMaterial! 109 | 110 | material.diffuse.contents = #imageLiteral(resourceName: "wireframeTexture") // Example texture map image. 111 | material.lightingModel = .physicallyBased 112 | 113 | contentNode = SCNNode(geometry: faceGeometry) 114 | #endif 115 | return contentNode 116 | } 117 | ``` 118 | [View in Source](x-source-tag://CreateARSCNFaceGeometry) 119 | 120 | - Note: This example uses a texture with transparency to create the illusion of colorful grid lines painted onto a real face. You can use the `wireframeTexture.png` image included with this sample code project as a starting point to design your own face textures. 121 | 122 | ARKit updates its face mesh conform to the shape of the user's face, even as the user blinks, talks, and makes various expressions. To make the displayed face model follow the user's expressions, retrieve an updated face meshes in the [`renderer(_:didUpdate:for:)`][21] delegate callback, then update the [`ARSCNFaceGeometry`][20] object in your scene to match by passing the new face mesh to its [`update(from:)`][22] method: 123 | 124 | [21]:https://developer.apple.com/documentation/arkit/arscnviewdelegate/2865799-renderer 125 | [22]:https://developer.apple.com/documentation/arkit/arscnfacegeometry/2928196-update 126 | 127 | ``` swift 128 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) { 129 | guard let faceGeometry = node.geometry as? ARSCNFaceGeometry, 130 | let faceAnchor = anchor as? ARFaceAnchor 131 | else { return } 132 | 133 | faceGeometry.update(from: faceAnchor.geometry) 134 | } 135 | ``` 136 | [View in Source](x-source-tag://ARFaceGeometryUpdate) 137 | 138 | ## Place 3D Content on the User's Face 139 | 140 | Another use of the face mesh that ARKit provides is to create *occlusion geometry* in your scene. An occlusion geometry is a 3D model that doesn't render any visible content (allowing the camera image to show through), but obstructs the camera's view of other virtual content in the scene. 141 | 142 | This technique creates the illusion that the real face interacts with virtual objects, even though the face is a 2D camera image and the virtual content is a rendered 3D object. For example, if you place an occlusion geometry and virtual glasses on the user's face, the face can obscure the frame of the glasses. 143 | 144 | To create an occlusion geometry for the face, start by creating an [`ARSCNFaceGeometry`][20] object as in the previous example. However, instead of configuring that object's SceneKit material with a visible appearance, set the material to render depth but not color during rendering: 145 | 146 | ``` swift 147 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!)! 148 | faceGeometry.firstMaterial!.colorBufferWriteMask = [] 149 | occlusionNode = SCNNode(geometry: faceGeometry) 150 | occlusionNode.renderingOrder = -1 151 | ``` 152 | [View in Source](x-source-tag://OcclusionMaterial) 153 | 154 | Because the material renders depth, other objects rendered by SceneKit correctly appear in front of it or behind it. But because the material doesn't render color, the camera image appears in its place. 155 | 156 | The sample app combines this technique with a SceneKit object positioned in front of the user's eyes, creating an effect where the user's nose realistically obscures the object. This object uses physically-based materials, so it automatically benefits from the real-time directional lighting information that [`ARFaceTrackingConfiguration`][5] provides. 157 | 158 | - Note: The `ARFaceGeometry.obj` file included in this sample project represents ARKit's face geometry in a neutral pose. You can use this as a template to design your own 3D art assets for placement on a real face. 159 | 160 | ## Map Camera Video onto 3D Face Geometry 161 | 162 | For additional creative uses of face tracking, you can texture-map the live 2D video feed from the camera onto the 3D geometry that ARKit provides. After mapping pixels in the camera video onto the corresponding points on ARKit's face mesh, you can modify that mesh, creating illusions such as resizing or distorting the user's face in 3D. 163 | 164 | First, create an [`ARSCNFaceGeometry`][20] for the face and assign the camera image to its main material. [`ARSCNView`][1] automatically sets the scene's [`background`][40] material to use the live video feed from the camera, so you can set the geometry to use the same material. 165 | 166 | [40]:https://developer.apple.com/documentation/scenekit/scnscene/1523665-background 167 | 168 | ``` swift 169 | // Show video texture as the diffuse material and disable lighting. 170 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!, fillMesh: true)! 171 | let material = faceGeometry.firstMaterial! 172 | material.diffuse.contents = sceneView.scene.background.contents 173 | material.lightingModel = .constant 174 | ``` 175 | [View in Source](x-source-tag://VideoTexturedFace) 176 | 177 | To correctly align the camera image to the face, you'll also need to modify the texture coordinates that SceneKit uses for rendering the image on the geometry. One easy way to perform this mapping is with a SceneKit shader modifier (see the [`SCNShadable`][41] protocol). The shader code here applies the coordinate system transformations needed to convert each vertex position in the mesh from 3D scene space to the 2D image space used by the video texture: 178 | 179 | [41]:https://developer.apple.com/documentation/scenekit/scnshadable 180 | 181 | ``` metal 182 | // Transform the vertex to the camera coordinate system. 183 | float4 vertexCamera = scn_node.modelViewTransform * _geometry.position; 184 | 185 | // Camera projection and perspective divide to get normalized viewport coordinates (clip space). 186 | float4 vertexClipSpace = scn_frame.projectionTransform * vertexCamera; 187 | vertexClipSpace /= vertexClipSpace.w; 188 | 189 | // XY in clip space is [-1,1]x[-1,1], so adjust to UV texture coordinates: [0,1]x[0,1]. 190 | // Image coordinates are Y-flipped (upper-left origin). 191 | float4 vertexImageSpace = float4(vertexClipSpace.xy * 0.5 + 0.5, 0.0, 1.0); 192 | vertexImageSpace.y = 1.0 - vertexImageSpace.y; 193 | 194 | // Apply ARKit's display transform (device orientation * front-facing camera flip). 195 | float4 transformedVertex = displayTransform * vertexImageSpace; 196 | 197 | // Output as texture coordinates for use in later rendering stages. 198 | _geometry.texcoords[0] = transformedVertex.xy; 199 | ``` 200 | 201 | When you assign a shader code string to the [`geometry`][42] entry point, SceneKit configures its renderer to automatically run that code on the GPU for each vertex in the mesh. This shader code also needs to know the intended orientation for the camera image, so the sample gets that from the ARKit [`displayTransform(for:viewportSize:)`][43] method and passes it to the shader's `displayTransform` argument: 202 | 203 | [42]:https://developer.apple.com/documentation/scenekit/scnshadermodifierentrypoint/1524108-geometry 204 | [43]:https://developer.apple.com/documentation/arkit/arframe/2923543-displaytransform 205 | 206 | ``` swift 207 | // Pass view-appropriate image transform to the shader modifier so 208 | // that the mapped video lines up correctly with the background video. 209 | let affineTransform = frame.displayTransform(for: .portrait, viewportSize: sceneView.bounds.size) 210 | let transform = SCNMatrix4(affineTransform) 211 | faceGeometry.setValue(SCNMatrix4Invert(transform), forKey: "displayTransform") 212 | ``` 213 | [View in Source](x-source-tag://VideoTexturedFace) 214 | 215 | - Note: This example's shader modifier also applies a constant scale factor to all vertices, causing the user's face to appear larger than life. Try other transformations to distort the face in other ways. 216 | 217 | ## Animate a Character with Blend Shapes 218 | 219 | In addition to the face mesh shown in the earlier examples, ARKit also provides a more abstract representation of the user's facial expressions. You can use this representation (called *blend shapes*) to control animation parameters for your own 2D or 3D assets, creating a character that follows the user's real facial movements and expressions. 220 | 221 | As a basic demonstration of blend shape animation, this sample includes a simple model of a robot character's head, created using SceneKit primitive shapes. (See the `robotHead.scn` file in the source code.) 222 | 223 | To get the user's current facial expression, read the [`blendShapes`][50] dictionary from the face anchor in the [`renderer(_:didUpdate:for:)`][21] delegate callback. Then, examine the key-value pairs in that dictionary to calculate animation parameters for your 3D content and update that content accordingly. 224 | 225 | [50]:https://developer.apple.com/documentation/arkit/arfaceanchor/2928251-blendshapes 226 | 227 | ``` swift 228 | let blendShapes = faceAnchor.blendShapes 229 | guard let eyeBlinkLeft = blendShapes[.eyeBlinkLeft] as? Float, 230 | let eyeBlinkRight = blendShapes[.eyeBlinkRight] as? Float, 231 | let jawOpen = blendShapes[.jawOpen] as? Float 232 | else { return } 233 | eyeLeftNode.scale.z = 1 - eyeBlinkLeft 234 | eyeRightNode.scale.z = 1 - eyeBlinkRight 235 | jawNode.position.y = originalJawY - jawHeight * jawOpen 236 | ``` 237 | [View in Source](x-source-tag://BlendShapeAnimation) 238 | 239 | There are more than 50 unique [`ARFaceAnchor.BlendShapeLocation`][51] coefficients, of which your app can use as few or as many as necessary to create the artistic effect you want. In this sample, the [`BlendShapeCharacter`](x-source-tag://BlendShapeCharacter) class performs this calculation, mapping the [`eyeBlinkLeft`][52] and [`eyeBlinkRight`][53] parameters to one axis of the [`scale`][54] factor of the robot's eyes, and the [`jawOpen`][55] parameter to offset the position of the robot's jaw. 240 | 241 | [51]:https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation 242 | [52]:https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928261-eyeblinkleft 243 | [53]:https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928262-eyeblinkright 244 | [54]:https://developer.apple.com/documentation/scenekit/scnnode/1408050-scale 245 | [55]:https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928236-jawopen 246 | 247 | --------------------------------------------------------------------------------