diff options
author | Kenneth Russel <[email protected]> | 2005-05-27 19:45:51 +0000 |
---|---|---|
committer | Kenneth Russel <[email protected]> | 2005-05-27 19:45:51 +0000 |
commit | 9d209d3b6ae12604e666d7b655bd1f19e70ee48b (patch) | |
tree | 5eb780835a316cbb62a9718a2757a3d51c31adb5 | |
parent | 02acfb8e24959f43cada34366598236a51b782bb (diff) |
Added Java/JOGL port of NVidia HDR demo.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/jogl-demos/trunk@80 3298f667-5e0e-4b4a-8ed4-a3559d26a5f4
26 files changed, 12107 insertions, 1 deletions
diff --git a/make/build.xml b/make/build.xml index 0a2cb2d..2f330f0 100644 --- a/make/build.xml +++ b/make/build.xml @@ -32,7 +32,7 @@ </target> <target name="setup.cg.excludes" unless="jogl.cg"> - <property name="jogl.cg.excludes" value="demos/cg/**" /> + <property name="jogl.cg.excludes" value="demos/cg/**,demos/hdr/**" /> </target> <target name="skip.cg.excludes" if="jogl.cg"> @@ -70,6 +70,11 @@ <fileset dir="${src}"> <include name="demos/cg/**/*.cg" /> </fileset> + <fileset dir="${src}"> + <include name="demos/hdr/shaders/**/*.cg" /> + <include name="demos/hdr/shaders/**/*.arbvp1" /> + <include name="demos/hdr/shaders/**/*.arbfp1" /> + </fileset> </jar> <jar destfile="${jogl.demos.util.jar}"> <fileset dir="${classes}"> diff --git a/src/demos/data/images/stpeters_cross.hdr b/src/demos/data/images/stpeters_cross.hdr Binary files differnew file mode 100755 index 0000000..66f47ae --- /dev/null +++ b/src/demos/data/images/stpeters_cross.hdr diff --git a/src/demos/data/models/teapot.obj b/src/demos/data/models/teapot.obj new file mode 100755 index 0000000..29cbc90 --- /dev/null +++ b/src/demos/data/models/teapot.obj @@ -0,0 +1,9071 @@ +# Sat Dec 17 21:31:04 2000 +# +# + +g +v 21.334499 14.872898 -0.001426 +v 20.829699 14.873169 5.140986 +v 20.543299 15.649567 5.081406 +v 21.042198 15.649300 -0.001467 +v 20.484598 16.204166 5.069176 +v 20.982399 16.203899 -0.001496 +v 20.612299 16.536867 5.095709 +v 21.112598 16.536598 -0.001514 +v 20.884899 16.647770 5.152373 +v 21.390799 16.647499 -0.001520 +v 21.261000 16.536873 5.230579 +v 21.774599 16.536598 -0.001514 +v 21.699200 16.204180 5.321706 +v 22.221798 16.203899 -0.001496 +v 22.158199 15.649585 5.417156 +v 22.690100 15.649300 -0.001467 +v 22.596399 14.873188 5.508306 +v 23.137199 14.872898 -0.001426 +v 19.378399 14.873419 9.904826 +v 19.108799 15.649815 9.790075 +v 19.053598 16.204412 9.766556 +v 19.173800 16.537115 9.817669 +v 19.430399 16.648022 9.926843 +v 19.784498 16.537128 10.077489 +v 20.196999 16.204439 10.253006 +v 20.629000 15.649849 10.436835 +v 21.041498 14.873456 10.612376 +v 17.075399 14.873645 14.195477 +v 16.832499 15.650038 14.031035 +v 16.782700 16.204636 13.997306 +v 16.890999 16.537338 14.070589 +v 17.122198 16.648247 14.226983 +v 17.441299 16.537357 14.442889 +v 17.812998 16.204672 14.694506 +v 18.202198 15.650086 14.957935 +v 18.573999 14.873698 15.209476 +v 14.015200 14.873840 17.918177 +v 13.807699 15.650231 17.710634 +v 13.765200 16.204828 17.668106 +v 13.857698 16.537533 17.760590 +v 14.055199 16.648443 17.958082 +v 14.327700 16.537558 18.230589 +v 14.645199 16.204876 18.548105 +v 14.977699 15.650293 18.880634 +v 15.295198 14.873908 19.198177 +v 10.292499 14.874002 20.978376 +v 10.128098 15.650391 20.735435 +v 10.094398 16.204988 20.685606 +v 10.167699 16.537693 20.793888 +v 10.324099 16.648605 21.025084 +v 10.539999 16.537722 21.344189 +v 10.791598 16.205042 21.715906 +v 11.054998 15.650462 22.105135 +v 11.306499 14.874081 22.476976 +v 6.001849 14.874123 23.281376 +v 5.887149 15.650510 23.011734 +v 5.863648 16.205107 22.956507 +v 5.914789 16.537811 23.076689 +v 6.023959 16.648727 23.333282 +v 6.174599 16.537844 23.687389 +v 6.350099 16.205168 24.099907 +v 6.533898 15.650590 24.531935 +v 6.709399 14.874210 24.944477 +v 1.238019 14.874199 24.732677 +v 1.178469 15.650585 24.446234 +v 1.166279 16.205183 24.387506 +v 1.192819 16.537888 24.515188 +v 1.249499 16.648804 24.787783 +v 1.327689 16.537922 25.163889 +v 1.418809 16.205246 25.602106 +v 1.514219 15.650671 26.061134 +v 1.605329 14.874292 26.499376 +v -3.904401 14.874226 25.237476 +v -3.904401 15.650612 24.945135 +v -3.904401 16.205208 24.885206 +v -3.904401 16.537914 25.015490 +v -3.904401 16.648830 25.293684 +v -3.904401 16.537949 25.677488 +v -3.904401 16.205275 26.124706 +v -3.904401 15.650699 26.593035 +v -3.904401 14.874321 27.040176 +v -9.512651 14.874199 24.732677 +v -9.299341 15.650585 24.446234 +v -9.171601 16.205183 24.387506 +v -9.115351 16.537888 24.515188 +v -9.116531 16.648804 24.787783 +v -9.161061 16.537922 25.163889 +v -9.234881 16.205246 25.602106 +v -9.323931 15.650671 26.061134 +v -9.414131 14.874292 26.499376 +v -14.495101 14.874123 23.281376 +v -14.154501 15.650510 23.011734 +v -13.961202 16.205107 22.956507 +v -13.890701 16.537811 23.076689 +v -13.918302 16.648727 23.333282 +v -14.019502 16.537844 23.687389 +v -14.169601 16.205168 24.099907 +v -14.344101 15.650590 24.531935 +v -14.518201 14.874210 24.944477 +v -18.814301 14.874002 20.978376 +v -18.414501 15.650391 20.735435 +v -18.204002 16.204988 20.685606 +v -18.150600 16.537693 20.793888 +v -18.222101 16.648605 21.025084 +v -18.386402 16.537722 21.344189 +v -18.611502 16.205042 21.715906 +v -18.865200 15.650462 22.105135 +v -19.115301 14.874081 22.476976 +v -22.432402 14.873840 17.918177 +v -22.024101 15.650231 17.710634 +v -21.830702 16.204828 17.668106 +v -21.815001 16.537533 17.760590 +v -21.940001 16.648443 17.958082 +v -22.168602 16.537558 18.230589 +v -22.463501 16.204876 18.548105 +v -22.787701 15.650293 18.880634 +v -23.104002 14.873908 19.198177 +v -25.312002 14.873645 14.195477 +v -24.927900 15.650038 14.031035 +v -24.772001 16.204636 13.997306 +v -24.804300 16.537338 14.070589 +v -24.984501 16.648247 14.226983 +v -25.272602 16.537357 14.442889 +v -25.628502 16.204672 14.694506 +v -26.011902 15.650086 14.957935 +v -26.382801 14.873698 15.209476 +v -27.415401 14.873419 9.904826 +v -27.070501 15.649815 9.790075 +v -26.958702 16.204412 9.766556 +v -27.038301 16.537115 9.817669 +v -27.267702 16.648022 9.926843 +v -27.605301 16.537128 10.077489 +v -28.009401 16.204439 10.253006 +v -28.438202 15.649849 10.436835 +v -28.850302 14.873456 10.612376 +v -28.705002 14.873169 5.140986 +v -28.396702 15.649567 5.081406 +v -28.321501 16.204166 5.069176 +v -28.437302 16.536867 5.095709 +v -28.702002 16.647770 5.152373 +v -29.073301 16.536873 5.230579 +v -29.509102 16.204180 5.321706 +v -29.967102 15.649585 5.417156 +v -30.405201 14.873188 5.508306 +v -29.143301 14.872898 -0.001426 +v -28.851002 15.649300 -0.001467 +v -28.791201 16.203899 -0.001496 +v -28.921402 16.536598 -0.001514 +v -29.199602 16.647499 -0.001520 +v -29.583401 16.536598 -0.001514 +v -30.030602 16.203899 -0.001496 +v -30.498901 15.649300 -0.001467 +v -30.946001 14.872898 -0.001426 +v -28.638502 14.872627 -5.143844 +v -28.352100 15.649033 -5.084334 +v -28.293402 16.203632 -5.072174 +v -28.421101 16.536329 -5.098731 +v -28.693701 16.647228 -5.155417 +v -29.069801 16.536324 -5.233611 +v -29.508001 16.203619 -5.324704 +v -29.967001 15.649014 -5.420084 +v -30.405201 14.872608 -5.511164 +v -27.187201 14.872377 -9.907674 +v -26.917601 15.648785 -9.793015 +v -26.862402 16.203386 -9.769544 +v -26.982601 16.536081 -9.820702 +v -27.239201 16.646976 -9.929887 +v -27.593302 16.536068 -10.080511 +v -28.005802 16.203360 -10.255994 +v -28.437801 15.648750 -10.439764 +v -28.850302 14.872340 -10.615224 +v -24.884201 14.872151 -14.198323 +v -24.641302 15.648561 -14.033964 +v -24.591501 16.203163 -14.000294 +v -24.699800 16.535858 -14.073611 +v -24.931002 16.646751 -14.230017 +v -25.250101 16.535839 -14.445911 +v -25.621801 16.203127 -14.697494 +v -26.011002 15.648513 -14.960864 +v -26.382801 14.872098 -15.212323 +v -21.824001 14.871956 -17.921024 +v -21.616501 15.648368 -17.713566 +v -21.574001 16.202971 -17.671095 +v -21.666502 16.535664 -17.763611 +v -21.864000 16.646555 -17.961117 +v -22.136501 16.535639 -18.233612 +v -22.454000 16.202923 -18.551094 +v -22.786501 15.648306 -18.883566 +v -23.104002 14.871888 -19.201023 +v -18.101301 14.871795 -20.981224 +v -17.936901 15.648209 -20.738365 +v -17.903202 16.202810 -20.688595 +v -17.976501 16.535503 -20.796911 +v -18.132900 16.646393 -21.028116 +v -18.348801 16.535475 -21.347212 +v -18.600401 16.202757 -21.718893 +v -18.863800 15.648137 -22.108065 +v -19.115301 14.871716 -22.479824 +v -13.810651 14.871674 -23.284224 +v -13.695941 15.648089 -23.014666 +v -13.672451 16.202692 -22.959494 +v -13.723581 16.535385 -23.079712 +v -13.832761 16.646271 -23.336317 +v -13.983401 16.535353 -23.690411 +v -14.158901 16.202631 -24.102894 +v -14.342701 15.648009 -24.534866 +v -14.518201 14.871586 -24.947323 +v -9.046822 14.871597 -24.735523 +v -8.987271 15.648014 -24.449165 +v -8.975081 16.202616 -24.390493 +v -9.001621 16.535309 -24.518211 +v -9.058302 16.646194 -24.790817 +v -9.136492 16.535275 -25.166912 +v -9.227612 16.202553 -25.605095 +v -9.323021 15.647928 -26.064066 +v -9.414131 14.871504 -26.502224 +v -3.904401 14.871571 -25.240324 +v -3.904401 15.647987 -24.948065 +v -3.904401 16.202591 -24.888294 +v -3.904401 16.535282 -25.018511 +v -3.904401 16.646168 -25.296717 +v -3.904401 16.535248 -25.680511 +v -3.904401 16.202524 -26.127693 +v -3.904401 15.647901 -26.595966 +v -3.904401 14.871475 -27.043024 +v 1.238019 14.871597 -24.735523 +v 1.178469 15.648014 -24.449165 +v 1.166279 16.202616 -24.390493 +v 1.192819 16.535309 -24.518211 +v 1.249499 16.646194 -24.790817 +v 1.327689 16.535275 -25.166912 +v 1.418809 16.202553 -25.605095 +v 1.514219 15.647928 -26.064066 +v 1.605329 14.871504 -26.502224 +v 6.001849 14.871674 -23.284224 +v 5.887149 15.648089 -23.014666 +v 5.863648 16.202692 -22.959494 +v 5.914789 16.535385 -23.079712 +v 6.023959 16.646271 -23.336317 +v 6.174599 16.535353 -23.690411 +v 6.350099 16.202631 -24.102894 +v 6.533898 15.648009 -24.534866 +v 6.709399 14.871586 -24.947323 +v 10.292499 14.871795 -20.981224 +v 10.128098 15.648209 -20.738365 +v 10.094398 16.202810 -20.688595 +v 10.167699 16.535503 -20.796911 +v 10.324099 16.646393 -21.028116 +v 10.539999 16.535475 -21.347212 +v 10.791598 16.202757 -21.718893 +v 11.054998 15.648137 -22.108065 +v 11.306499 14.871716 -22.479824 +v 14.015200 14.871956 -17.921024 +v 13.807699 15.648368 -17.713566 +v 13.765200 16.202971 -17.671095 +v 13.857698 16.535664 -17.763611 +v 14.055199 16.646555 -17.961117 +v 14.327700 16.535639 -18.233612 +v 14.645199 16.202923 -18.551094 +v 14.977699 15.648306 -18.883566 +v 15.295198 14.871888 -19.201023 +v 17.075399 14.872151 -14.198323 +v 16.832499 15.648561 -14.033964 +v 16.782700 16.203163 -14.000294 +v 16.890999 16.535858 -14.073611 +v 17.122198 16.646751 -14.230017 +v 17.441299 16.535839 -14.445911 +v 17.812998 16.203127 -14.697494 +v 18.202198 15.648513 -14.960864 +v 18.573999 14.872098 -15.212323 +v 19.378399 14.872377 -9.907674 +v 19.108799 15.648785 -9.793015 +v 19.053598 16.203386 -9.769544 +v 19.173800 16.536081 -9.820702 +v 19.430399 16.646976 -9.929887 +v 19.784498 16.536068 -10.080511 +v 20.196999 16.203360 -10.255994 +v 20.629000 15.648750 -10.439764 +v 21.041498 14.872340 -10.615224 +v 20.829699 14.872627 -5.143844 +v 20.543299 15.649033 -5.084334 +v 20.484598 16.203632 -5.072174 +v 20.612299 16.536329 -5.098731 +v 20.884899 16.647228 -5.155417 +v 21.261000 16.536324 -5.233611 +v 21.699200 16.203619 -5.324704 +v 22.158199 15.649014 -5.420084 +v 22.596399 14.872608 -5.511164 +v 24.244099 11.326610 5.851053 +v 24.818499 11.326302 -0.001240 +v 25.839998 7.795926 6.183049 +v 26.446999 7.795601 -0.001054 +v 27.332399 4.296942 6.493513 +v 27.969898 4.296600 -0.000869 +v 28.669500 0.845457 6.771694 +v 29.334299 0.845100 -0.000688 +v 29.799601 -2.542732 7.006823 +v 30.487398 -2.543100 -0.000509 +v 30.670900 -5.851621 7.188147 +v 31.376497 -5.851999 -0.000335 +v 31.231600 -9.065415 7.304895 +v 31.948599 -9.065800 -0.000166 +v 31.429998 -12.168313 7.346309 +v 32.151100 -12.168699 -0.000002 +v 22.592499 11.326895 11.272463 +v 24.094799 7.796227 11.911848 +v 25.499599 4.297258 12.509732 +v 26.758299 0.845787 13.045514 +v 27.822100 -2.542390 13.498292 +v 28.642199 -5.851271 13.847366 +v 29.170000 -9.065060 14.072135 +v 29.356798 -12.167954 14.151798 +v 19.971498 11.327151 16.155363 +v 21.325199 7.796499 17.071648 +v 22.591099 4.297544 17.928434 +v 23.725199 0.846084 18.696115 +v 24.683798 -2.542083 19.344893 +v 25.422798 -5.850955 19.845165 +v 25.898499 -9.064739 20.167135 +v 26.066698 -12.167632 20.281199 +v 16.488899 11.327374 20.392063 +v 17.645100 7.796734 21.548449 +v 18.726299 4.297791 22.629833 +v 19.695099 0.846342 23.598814 +v 20.513800 -2.541816 24.417692 +v 21.144999 -5.850682 25.049067 +v 21.551298 -9.064461 25.455536 +v 21.695000 -12.167353 25.599400 +v 12.252199 11.327558 23.874664 +v 13.168299 7.796928 25.228548 +v 14.024899 4.297994 26.494633 +v 14.792398 0.846554 27.628914 +v 15.440998 -2.541596 28.587692 +v 15.941099 -5.850457 29.326866 +v 16.262899 -9.064232 29.802635 +v 16.376799 -12.167123 29.971100 +v 7.369399 11.327696 26.495663 +v 8.008499 7.797074 27.998148 +v 8.606298 4.298147 29.403133 +v 9.141799 0.846713 30.662014 +v 9.594398 -2.541431 31.725893 +v 9.943298 -5.850287 32.546268 +v 10.167899 -9.064060 33.074234 +v 10.247398 -12.166949 33.261200 +v 1.947899 11.327783 28.147263 +v 2.279699 7.797165 29.743349 +v 2.589979 4.298244 31.235933 +v 2.867979 0.846814 32.573212 +v 3.102929 -2.541327 33.703491 +v 3.284079 -5.850181 34.574966 +v 3.400659 -9.063951 35.135834 +v 3.441909 -12.166841 35.334400 +v -3.904401 11.327812 28.721664 +v -3.904401 7.797197 30.350349 +v -3.904401 4.298277 31.873434 +v -3.904401 0.846849 33.238014 +v -3.904401 -2.541291 34.391293 +v -3.904401 -5.850143 35.280567 +v -3.904401 -9.063913 35.852837 +v -3.904401 -12.166802 36.055500 +v -9.756701 11.327783 28.147263 +v -10.088501 7.797165 29.743349 +v -10.398781 4.298244 31.235933 +v -10.676781 0.846814 32.573212 +v -10.911732 -2.541327 33.703491 +v -11.092881 -5.850181 34.574966 +v -11.209461 -9.063951 35.135834 +v -11.250711 -12.166841 35.334400 +v -15.178202 11.327696 26.495663 +v -15.817301 7.797074 27.998148 +v -16.415100 4.298147 29.403133 +v -16.950602 0.846713 30.662014 +v -17.403202 -2.541431 31.725893 +v -17.752102 -5.850287 32.546268 +v -17.976700 -9.064060 33.074234 +v -18.056202 -12.166949 33.261200 +v -20.061102 11.327558 23.874664 +v -20.977100 7.796928 25.228548 +v -21.833702 4.297994 26.494633 +v -22.601202 0.846554 27.628914 +v -23.249802 -2.541596 28.587692 +v -23.749901 -5.850457 29.326866 +v -24.071701 -9.064232 29.802635 +v -24.185600 -12.167123 29.971100 +v -24.297701 11.327374 20.392063 +v -25.453901 7.796734 21.548449 +v -26.535101 4.297791 22.629833 +v -27.503901 0.846342 23.598814 +v -28.322601 -2.541816 24.417692 +v -28.953802 -5.850682 25.049067 +v -29.360102 -9.064461 25.455536 +v -29.503801 -12.167353 25.599400 +v -27.780302 11.327151 16.155363 +v -29.134001 7.796499 17.071648 +v -30.399900 4.297544 17.928434 +v -31.534000 0.846084 18.696115 +v -32.492599 -2.542083 19.344893 +v -33.231602 -5.850955 19.845165 +v -33.707302 -9.064739 20.167135 +v -33.875504 -12.167632 20.281199 +v -30.401300 11.326895 11.272463 +v -31.903601 7.796227 11.911848 +v -33.308403 4.297258 12.509732 +v -34.567101 0.845787 13.045514 +v -35.630901 -2.542390 13.498292 +v -36.451004 -5.851271 13.847366 +v -36.978798 -9.065060 14.072135 +v -37.165604 -12.167954 14.151798 +v -32.052902 11.326610 5.851053 +v -33.648804 7.795926 6.183049 +v -35.141201 4.296942 6.493513 +v -36.478302 0.845457 6.771694 +v -37.608398 -2.542732 7.006823 +v -38.479698 -5.851621 7.188147 +v -39.040398 -9.065415 7.304895 +v -39.238800 -12.168313 7.346309 +v -32.627304 11.326302 -0.001240 +v -34.255802 7.795601 -0.001054 +v -35.778702 4.296600 -0.000869 +v -37.143105 0.845100 -0.000688 +v -38.296204 -2.543100 -0.000509 +v -39.185303 -5.851999 -0.000335 +v -39.757500 -9.065800 -0.000166 +v -39.959900 -12.168699 -0.000002 +v -32.052902 11.325994 -5.853537 +v -33.648804 7.795276 -6.185152 +v -35.141201 4.296259 -6.495247 +v -36.478302 0.844744 -6.773066 +v -37.608398 -2.543469 -7.007837 +v -38.479698 -5.852377 -7.188813 +v -39.040398 -9.066184 -7.305224 +v -39.238800 -12.169086 -7.346312 +v -30.401300 11.325708 -11.275038 +v -31.903601 7.794974 -11.913952 +v -33.308403 4.295942 -12.511567 +v -34.567101 0.844414 -13.046886 +v -35.630901 -2.543810 -13.499308 +v -36.451004 -5.852728 -13.848033 +v -36.978798 -9.066540 -14.072465 +v -37.165604 -12.169444 -14.151801 +v -27.780302 11.325452 -16.157936 +v -29.134001 7.794703 -17.073751 +v -30.399900 4.295657 -17.930166 +v -31.534000 0.844117 -18.697485 +v -32.492599 -2.544118 -19.345907 +v -33.231602 -5.853043 -19.845835 +v -33.707302 -9.066860 -20.167465 +v -33.875504 -12.169766 -20.281200 +v -24.297701 11.325229 -20.394537 +v -25.453901 7.794467 -21.550552 +v -26.535101 4.295410 -22.631567 +v -27.503901 0.843859 -23.600185 +v -28.322601 -2.544385 -24.418709 +v -28.953802 -5.853317 -25.049734 +v -29.360102 -9.067139 -25.455864 +v -29.503801 -12.170046 -25.599401 +v -20.061102 11.325046 -23.877136 +v -20.977100 7.794274 -25.230652 +v -21.833702 4.295207 -26.496367 +v -22.601202 0.843647 -27.630285 +v -23.249802 -2.544604 -28.588707 +v -23.749901 -5.853542 -29.327534 +v -24.071701 -9.067368 -29.803064 +v -24.185600 -12.170276 -29.971100 +v -15.178202 11.324907 -26.498137 +v -15.817301 7.794128 -28.000252 +v -16.415100 4.295053 -29.404867 +v -16.950602 0.843487 -30.663385 +v -17.403202 -2.544769 -31.727009 +v -17.752102 -5.853711 -32.546932 +v -17.976700 -9.067539 -33.074566 +v -18.056202 -12.170449 -33.261200 +v -9.756701 11.324821 -28.149736 +v -10.088501 7.794036 -29.745451 +v -10.398781 4.294957 -31.237667 +v -10.676781 0.843387 -32.574589 +v -10.911732 -2.544873 -33.704510 +v -11.092881 -5.853818 -34.575634 +v -11.209461 -9.067648 -35.136166 +v -11.250711 -12.170558 -35.334400 +v -3.904401 11.324791 -28.724136 +v -3.904401 7.794004 -30.352451 +v -3.904401 4.294924 -31.875166 +v -3.904401 0.843352 -33.239388 +v -3.904401 -2.544909 -34.392307 +v -3.904401 -5.853855 -35.281231 +v -3.904401 -9.067686 -35.853165 +v -3.904401 -12.170596 -36.055500 +v 1.947899 11.324821 -28.149736 +v 2.279699 7.794036 -29.745451 +v 2.589979 4.294957 -31.237667 +v 2.867979 0.843387 -32.574589 +v 3.102929 -2.544873 -33.704510 +v 3.284079 -5.853818 -34.575634 +v 3.400659 -9.067648 -35.136166 +v 3.441909 -12.170558 -35.334400 +v 7.369399 11.324907 -26.498137 +v 8.008499 7.794128 -28.000252 +v 8.606298 4.295053 -29.404867 +v 9.141799 0.843487 -30.663385 +v 9.594398 -2.544769 -31.727009 +v 9.943298 -5.853711 -32.546932 +v 10.167899 -9.067539 -33.074566 +v 10.247398 -12.170449 -33.261200 +v 12.252199 11.325046 -23.877136 +v 13.168299 7.794274 -25.230652 +v 14.024899 4.295207 -26.496367 +v 14.792398 0.843647 -27.630285 +v 15.440998 -2.544604 -28.588707 +v 15.941099 -5.853542 -29.327534 +v 16.262899 -9.067368 -29.803064 +v 16.376799 -12.170276 -29.971100 +v 16.488899 11.325229 -20.394537 +v 17.645100 7.794467 -21.550552 +v 18.726299 4.295410 -22.631567 +v 19.695099 0.843859 -23.600185 +v 20.513800 -2.544385 -24.418709 +v 21.144999 -5.853317 -25.049734 +v 21.551298 -9.067139 -25.455864 +v 21.695000 -12.170046 -25.599401 +v 19.971498 11.325452 -16.157936 +v 21.325199 7.794703 -17.073751 +v 22.591099 4.295657 -17.930166 +v 23.725199 0.844117 -18.697485 +v 24.683798 -2.544118 -19.345907 +v 25.422798 -5.853043 -19.845835 +v 25.898499 -9.066860 -20.167465 +v 26.066698 -12.169766 -20.281200 +v 22.592499 11.325708 -11.275038 +v 24.094799 7.794974 -11.913952 +v 25.499599 4.295942 -12.511567 +v 26.758299 0.844414 -13.046886 +v 27.822100 -2.543810 -13.499308 +v 28.642199 -5.852728 -13.848033 +v 29.170000 -9.066540 -14.072465 +v 29.356798 -12.169444 -14.151801 +v 24.244099 11.325994 -5.853537 +v 25.839998 7.795276 -6.185152 +v 27.332399 4.296259 -6.495247 +v 28.669500 0.844744 -6.773066 +v 29.799601 -2.543469 -7.007837 +v 30.670900 -5.852377 -7.188813 +v 31.231600 -9.066184 -7.305224 +v 31.429998 -12.169086 -7.346312 +v 31.050398 -15.023018 7.267539 +v 31.763800 -15.023400 0.000148 +v 30.049799 -17.513329 7.059620 +v 30.742701 -17.513700 0.000279 +v 28.635000 -19.654984 6.765593 +v 29.299097 -19.655340 0.000392 +v 27.013199 -21.463942 6.428508 +v 27.644199 -21.464279 0.000487 +v 25.391399 -22.955999 6.091406 +v 25.989298 -22.956320 0.000566 +v 23.976698 -24.147015 5.797329 +v 24.545698 -24.147320 0.000629 +v 22.975998 -25.052816 5.589326 +v 23.524498 -25.053110 0.000676 +v 22.596399 -25.689251 5.510440 +v 23.137199 -25.689541 0.000710 +v 28.999498 -15.022664 13.999949 +v 28.057499 -17.512985 13.599279 +v 26.725800 -19.654655 13.032792 +v 25.199200 -21.463627 12.383287 +v 23.672499 -22.955702 11.733866 +v 22.340799 -24.146732 11.167229 +v 21.398798 -25.052544 10.766577 +v 21.041498 -25.688982 10.614510 +v 25.744799 -15.022345 20.063549 +v 24.895998 -17.512676 19.489281 +v 23.695999 -19.654358 18.677292 +v 22.320398 -21.463346 17.746588 +v 20.944698 -22.955435 16.815765 +v 19.744699 -24.146479 16.003828 +v 18.895899 -25.052298 15.429477 +v 18.573999 -25.688740 15.211610 +v 21.419998 -15.022068 25.324549 +v 20.695000 -17.512407 24.599680 +v 19.670099 -19.654100 23.574892 +v 18.495098 -21.463100 22.399988 +v 17.320099 -22.955204 21.225065 +v 16.295099 -24.146257 20.200129 +v 15.570198 -25.052086 19.475277 +v 15.295198 -25.688530 19.200310 +v 16.158998 -15.021841 29.649347 +v 15.584599 -17.512186 28.800680 +v 14.772499 -19.653889 27.600792 +v 13.841700 -21.462900 26.225288 +v 12.910799 -22.955013 24.849667 +v 12.098799 -24.146076 23.649729 +v 11.524399 -25.051910 22.800976 +v 11.306499 -25.688358 22.479109 +v 10.095399 -15.021669 32.904049 +v 9.694599 -17.512020 31.962179 +v 9.127998 -19.653728 30.630592 +v 8.478398 -21.462748 29.104088 +v 7.828898 -22.954868 27.577465 +v 7.262198 -24.145939 26.245829 +v 6.861499 -25.051779 25.303877 +v 6.709399 -25.688229 24.946609 +v 3.362989 -15.021562 34.954948 +v 3.154949 -17.511915 33.954380 +v 2.860809 -19.653629 32.539791 +v 2.523619 -21.462652 30.918087 +v 2.186439 -22.954779 29.296366 +v 1.892299 -24.145853 27.881729 +v 1.684249 -25.051697 26.881077 +v 1.605329 -25.688135 26.501509 +v -3.904401 -15.021524 35.668346 +v -3.904401 -17.511877 34.647381 +v -3.904401 -19.653593 33.203892 +v -3.904401 -21.462620 31.549088 +v -3.904401 -22.954748 29.894266 +v -3.904401 -24.145823 28.450729 +v -3.904401 -25.051668 27.429577 +v -3.904401 -25.688107 27.042309 +v -11.171791 -15.021562 34.954948 +v -10.963751 -17.511915 33.954380 +v -10.669611 -19.653629 32.539791 +v -10.332421 -21.462652 30.918087 +v -9.995241 -22.954779 29.296366 +v -9.701101 -24.145853 27.881729 +v -9.493052 -25.051697 26.881077 +v -9.414131 -25.688135 26.501509 +v -17.904202 -15.021669 32.904049 +v -17.503401 -17.512020 31.962179 +v -16.936802 -19.653728 30.630592 +v -16.287201 -21.462748 29.104088 +v -15.637701 -22.954868 27.577465 +v -15.071001 -24.145939 26.245829 +v -14.670301 -25.051779 25.303877 +v -14.518201 -25.688229 24.946609 +v -23.967802 -15.021841 29.649347 +v -23.393402 -17.512186 28.800680 +v -22.581301 -19.653889 27.600792 +v -21.650501 -21.462900 26.225288 +v -20.719601 -22.955013 24.849667 +v -19.907600 -24.146076 23.649729 +v -19.333202 -25.051910 22.800976 +v -19.115301 -25.688358 22.479109 +v -29.228802 -15.022068 25.324549 +v -28.503801 -17.512407 24.599680 +v -27.478901 -19.654100 23.574892 +v -26.303902 -21.463100 22.399988 +v -25.128901 -22.955204 21.225065 +v -24.103901 -24.146257 20.200129 +v -23.379002 -25.052086 19.475277 +v -23.104002 -25.688530 19.200310 +v -33.553600 -15.022345 20.063549 +v -32.704803 -17.512676 19.489281 +v -31.504801 -19.654358 18.677292 +v -30.129202 -21.463346 17.746588 +v -28.753502 -22.955435 16.815765 +v -27.553501 -24.146479 16.003828 +v -26.704700 -25.052298 15.429477 +v -26.382801 -25.688740 15.211610 +v -36.808304 -15.022664 13.999949 +v -35.866302 -17.512985 13.599279 +v -34.534599 -19.654655 13.032792 +v -33.008003 -21.463627 12.383287 +v -31.481300 -22.955702 11.733866 +v -30.149601 -24.146732 11.167229 +v -29.207602 -25.052544 10.766577 +v -28.850302 -25.688982 10.614510 +v -38.859200 -15.023018 7.267539 +v -37.858604 -17.513329 7.059620 +v -36.443802 -19.654984 6.765593 +v -34.821999 -21.463942 6.428508 +v -33.200203 -22.955999 6.091406 +v -31.785501 -24.147015 5.797329 +v -30.784801 -25.052816 5.589326 +v -30.405201 -25.689251 5.510440 +v -39.572601 -15.023400 0.000148 +v -38.551498 -17.513700 0.000279 +v -37.107903 -19.655340 0.000392 +v -35.453003 -21.464279 0.000487 +v -33.798103 -22.956320 0.000566 +v -32.354500 -24.147320 0.000629 +v -31.333302 -25.053110 0.000676 +v -30.946001 -25.689541 0.000710 +v -38.859200 -15.023783 -7.267241 +v -37.858604 -17.514072 -7.059070 +v -36.443802 -19.655706 -6.764818 +v -34.821999 -21.464617 -6.427532 +v -33.200203 -22.956650 -6.090274 +v -31.785501 -24.147625 -5.796071 +v -30.784801 -25.053404 -5.587974 +v -30.405201 -25.689831 -5.509020 +v -36.808304 -15.024137 -13.999651 +v -35.866302 -17.514416 -13.598721 +v -34.534599 -19.656034 -13.032007 +v -33.008003 -21.464931 -12.382312 +v -31.481300 -22.956947 -11.732734 +v -30.149601 -24.147907 -11.165971 +v -29.207602 -25.053677 -10.765224 +v -28.850302 -25.690100 -10.613091 +v -33.553600 -15.024456 -20.063251 +v -32.704803 -17.514725 -19.488720 +v -31.504801 -19.656332 -18.676508 +v -30.129202 -21.465212 -17.745613 +v -28.753502 -22.957214 -16.814634 +v -27.553501 -24.148161 -16.002571 +v -26.704700 -25.053923 -15.428123 +v -26.382801 -25.690342 -15.210190 +v -29.228802 -15.024733 -25.324251 +v -28.503801 -17.514994 -24.599121 +v -27.478901 -19.656590 -23.574108 +v -26.303902 -21.465458 -22.399012 +v -25.128901 -22.957445 -21.223934 +v -24.103901 -24.148382 -20.198872 +v -23.379002 -25.054134 -19.473923 +v -23.104002 -25.690552 -19.198891 +v -23.967802 -15.024960 -29.649052 +v -23.393402 -17.515215 -28.800119 +v -22.581301 -19.656801 -27.600008 +v -21.650501 -21.465658 -26.224312 +v -20.719601 -22.957636 -24.848534 +v -19.907600 -24.148563 -23.648472 +v -19.333202 -25.054310 -22.799623 +v -19.115301 -25.690723 -22.477692 +v -17.904202 -15.025131 -32.903751 +v -17.503401 -17.515381 -31.961620 +v -16.936802 -19.656961 -30.629808 +v -16.287201 -21.465811 -29.103113 +v -15.637701 -22.957781 -27.576334 +v -15.071001 -24.148701 -26.244572 +v -14.670301 -25.054441 -25.302523 +v -14.518201 -25.690853 -24.945190 +v -11.171791 -15.025239 -34.954651 +v -10.963751 -17.515486 -33.953918 +v -10.669611 -19.657061 -32.539009 +v -10.332421 -21.465906 -30.917112 +v -9.995241 -22.957870 -29.295235 +v -9.701101 -24.148787 -27.880470 +v -9.493052 -25.054523 -26.879723 +v -9.414131 -25.690935 -26.500092 +v -3.904401 -15.025276 -35.668053 +v -3.904401 -17.515524 -34.646820 +v -3.904401 -19.657097 -33.203106 +v -3.904401 -21.465939 -31.548113 +v -3.904401 -22.957901 -29.893133 +v -3.904401 -24.148817 -28.449471 +v -3.904401 -25.054552 -27.428223 +v -3.904401 -25.690964 -27.040892 +v 3.362989 -15.025239 -34.954651 +v 3.154949 -17.515486 -33.953918 +v 2.860809 -19.657061 -32.539009 +v 2.523619 -21.465906 -30.917112 +v 2.186439 -22.957870 -29.295235 +v 1.892299 -24.148787 -27.880470 +v 1.684249 -25.054523 -26.879723 +v 1.605329 -25.690935 -26.500092 +v 10.095399 -15.025131 -32.903751 +v 9.694599 -17.515381 -31.961620 +v 9.127998 -19.656961 -30.629808 +v 8.478398 -21.465811 -29.103113 +v 7.828898 -22.957781 -27.576334 +v 7.262198 -24.148701 -26.244572 +v 6.861499 -25.054441 -25.302523 +v 6.709399 -25.690853 -24.945190 +v 16.158998 -15.024960 -29.649052 +v 15.584599 -17.515215 -28.800119 +v 14.772499 -19.656801 -27.600008 +v 13.841700 -21.465658 -26.224312 +v 12.910799 -22.957636 -24.848534 +v 12.098799 -24.148563 -23.648472 +v 11.524399 -25.054310 -22.799623 +v 11.306499 -25.690723 -22.477692 +v 21.419998 -15.024733 -25.324251 +v 20.695000 -17.514994 -24.599121 +v 19.670099 -19.656590 -23.574108 +v 18.495098 -21.465458 -22.399012 +v 17.320099 -22.957445 -21.223934 +v 16.295099 -24.148382 -20.198872 +v 15.570198 -25.054134 -19.473923 +v 15.295198 -25.690552 -19.198891 +v 25.744799 -15.024456 -20.063251 +v 24.895998 -17.514725 -19.488720 +v 23.695999 -19.656332 -18.676508 +v 22.320398 -21.465212 -17.745613 +v 20.944698 -22.957214 -16.814634 +v 19.744699 -24.148161 -16.002571 +v 18.895899 -25.053923 -15.428123 +v 18.573999 -25.690342 -15.210190 +v 28.999498 -15.024137 -13.999651 +v 28.057499 -17.514416 -13.598721 +v 26.725800 -19.656034 -13.032007 +v 25.199200 -21.464931 -12.382312 +v 23.672499 -22.956947 -11.732734 +v 22.340799 -24.147907 -11.165971 +v 21.398798 -25.053677 -10.765224 +v 21.041498 -25.690100 -10.613091 +v 31.050398 -15.023783 -7.267241 +v 30.049799 -17.514072 -7.059070 +v 28.635000 -19.655706 -6.764818 +v 27.013199 -21.464617 -6.427532 +v 25.391399 -22.956650 -6.090274 +v 23.976698 -24.147625 -5.796071 +v 22.975998 -25.053404 -5.587974 +v 22.596399 -25.689831 -5.509020 +v 22.490299 -26.193642 5.488407 +v 23.028999 -26.193930 0.000736 +v 21.995998 -26.682186 5.385663 +v 22.524599 -26.682470 0.000762 +v 20.849499 -27.139059 5.147326 +v 21.354698 -27.139330 0.000786 +v 18.786900 -27.548401 4.718518 +v 19.249998 -27.548649 0.000808 +v 15.544199 -27.894377 4.044346 +v 15.941099 -27.894592 0.000826 +v 10.857399 -28.161150 3.069930 +v 11.158599 -28.161312 0.000840 +v 4.462499 -28.332870 1.740399 +v 4.633259 -28.332962 0.000849 +v -3.904401 -28.393700 0.000852 +v 20.941599 -26.193373 10.572037 +v 20.476299 -26.681925 10.374163 +v 19.397099 -27.138809 9.914987 +v 17.455500 -27.548170 9.088908 +v 14.403099 -27.894180 7.790186 +v 9.991199 -28.161001 5.913080 +v 3.971589 -28.332787 3.351879 +v 18.483999 -26.193132 15.150737 +v 18.064699 -26.681688 14.867063 +v 17.092199 -27.138582 14.208986 +v 15.342699 -27.547964 13.025108 +v 12.592199 -27.894003 11.163926 +v 8.616699 -28.160864 8.473800 +v 3.192529 -28.332710 4.803279 +v 15.218298 -26.192924 19.123436 +v 14.860199 -26.681482 18.765362 +v 14.029598 -27.138386 17.934786 +v 12.535198 -27.547785 16.440409 +v 10.185899 -27.893848 14.091126 +v 6.790399 -28.160748 10.695640 +v 2.157339 -28.332644 6.062589 +v 11.245599 -26.192753 22.389135 +v 10.961899 -26.681314 21.969862 +v 10.303799 -27.138226 20.997385 +v 9.119899 -27.547636 19.247908 +v 7.258698 -27.893723 16.497425 +v 4.568559 -28.160652 12.521939 +v 0.898029 -28.332588 7.097779 +v 6.666899 -26.192623 24.846735 +v 6.468999 -26.681189 24.381462 +v 6.009799 -27.138103 23.302286 +v 5.183699 -27.547525 21.360708 +v 3.884959 -27.893627 18.308325 +v 2.007839 -28.160580 13.896440 +v -0.553371 -28.332548 7.876839 +v 1.583269 -26.192532 26.395435 +v 1.480499 -26.681108 25.901163 +v 1.242139 -27.138027 24.754684 +v 0.813309 -27.547455 22.692108 +v 0.139119 -27.893568 19.449425 +v -0.835311 -28.160534 14.762640 +v -2.164851 -28.332521 8.367749 +v -3.904401 -26.192503 26.934135 +v -3.904401 -26.681080 26.429762 +v -3.904401 -27.138000 25.259886 +v -3.904401 -27.547430 23.155209 +v -3.904401 -27.893547 19.846325 +v -3.904401 -28.160519 15.063840 +v -3.904401 -28.332514 8.538509 +v -9.392071 -26.192532 26.395435 +v -9.289301 -26.681108 25.901163 +v -9.050941 -27.138027 24.754684 +v -8.622111 -27.547455 22.692108 +v -7.947921 -27.893568 19.449425 +v -6.973491 -28.160534 14.762640 +v -5.643951 -28.332521 8.367749 +v -14.475701 -26.192623 24.846735 +v -14.277802 -26.681189 24.381462 +v -13.818602 -27.138103 23.302286 +v -12.992501 -27.547525 21.360708 +v -11.693762 -27.893627 18.308325 +v -9.816641 -28.160580 13.896440 +v -7.255431 -28.332548 7.876839 +v -19.054401 -26.192753 22.389135 +v -18.770702 -26.681314 21.969862 +v -18.112602 -27.138226 20.997385 +v -16.928701 -27.547636 19.247908 +v -15.067501 -27.893723 16.497425 +v -12.377361 -28.160652 12.521939 +v -8.706831 -28.332588 7.097779 +v -23.027102 -26.192924 19.123436 +v -22.669001 -26.681482 18.765362 +v -21.838402 -27.138386 17.934786 +v -20.344002 -27.547785 16.440409 +v -17.994701 -27.893848 14.091126 +v -14.599201 -28.160748 10.695640 +v -9.966141 -28.332644 6.062589 +v -26.292801 -26.193132 15.150737 +v -25.873501 -26.681688 14.867063 +v -24.901001 -27.138582 14.208986 +v -23.151501 -27.547964 13.025108 +v -20.401001 -27.894003 11.163926 +v -16.425501 -28.160864 8.473800 +v -11.001331 -28.332710 4.803279 +v -28.750401 -26.193373 10.572037 +v -28.285101 -26.681925 10.374163 +v -27.205902 -27.138809 9.914987 +v -25.264301 -27.548170 9.088908 +v -22.211901 -27.894180 7.790186 +v -17.800001 -28.161001 5.913080 +v -11.780392 -28.332787 3.351879 +v -30.299101 -26.193642 5.488407 +v -29.804802 -26.682186 5.385663 +v -28.658300 -27.139059 5.147326 +v -26.595701 -27.548401 4.718518 +v -23.353001 -27.894377 4.044346 +v -18.666203 -28.161150 3.069930 +v -12.271301 -28.332870 1.740399 +v -30.837801 -26.193930 0.000736 +v -30.333401 -26.682470 0.000762 +v -29.163502 -27.139330 0.000786 +v -27.058802 -27.548649 0.000808 +v -23.749901 -27.894592 0.000826 +v -18.967402 -28.161312 0.000840 +v -12.442061 -28.332962 0.000849 +v -30.299101 -26.194218 -5.486933 +v -29.804802 -26.682755 -5.384138 +v -28.658300 -27.139601 -5.145754 +v -26.595701 -27.548897 -4.716902 +v -23.353001 -27.894806 -4.042694 +v -18.666203 -28.161474 -3.068250 +v -12.271301 -28.333054 -1.738701 +v -28.750401 -26.194487 -10.570563 +v -28.285101 -26.683016 -10.372638 +v -27.205902 -27.139851 -9.913414 +v -25.264301 -27.549129 -9.087292 +v -22.211901 -27.895002 -7.788534 +v -17.800001 -28.161623 -5.911400 +v -11.780392 -28.333138 -3.350181 +v -26.292801 -26.194727 -15.149263 +v -25.873501 -26.683252 -14.865538 +v -24.901001 -27.140078 -14.207414 +v -23.151501 -27.549335 -13.023492 +v -20.401001 -27.895180 -11.162273 +v -16.425501 -28.161758 -8.472120 +v -11.001331 -28.333214 -4.801581 +v -23.027102 -26.194935 -19.121964 +v -22.669001 -26.683458 -18.763838 +v -21.838402 -27.140274 -17.933214 +v -20.344002 -27.549515 -16.438791 +v -17.994701 -27.895334 -14.089474 +v -14.599201 -28.161875 -10.693960 +v -9.966141 -28.333281 -6.060891 +v -19.054401 -26.195107 -22.387665 +v -18.770702 -26.683626 -21.968338 +v -18.112602 -27.140434 -20.995815 +v -16.928701 -27.549664 -19.246292 +v -15.067501 -27.895460 -16.495775 +v -12.377361 -28.161970 -12.520261 +v -8.706831 -28.333336 -7.096081 +v -14.475701 -26.195236 -24.845264 +v -14.277802 -26.683752 -24.379938 +v -13.818602 -27.140556 -23.300714 +v -12.992501 -27.549774 -21.359093 +v -11.693762 -27.895555 -18.306675 +v -9.816641 -28.162043 -13.894760 +v -7.255431 -28.333376 -7.875141 +v -9.392071 -26.195318 -26.393965 +v -9.289301 -26.683832 -25.899637 +v -9.050941 -27.140633 -24.753115 +v -8.622111 -27.549845 -22.690493 +v -7.947921 -27.895615 -19.447775 +v -6.973491 -28.162088 -14.760961 +v -5.643951 -28.333403 -8.366051 +v -3.904401 -26.195347 -26.932665 +v -3.904401 -26.683861 -26.428238 +v -3.904401 -27.140659 -25.258314 +v -3.904401 -27.549870 -23.153591 +v -3.904401 -27.895636 -19.844675 +v -3.904401 -28.162104 -15.062160 +v -3.904401 -28.333410 -8.536811 +v 1.583269 -26.195318 -26.393965 +v 1.480499 -26.683832 -25.899637 +v 1.242139 -27.140633 -24.753115 +v 0.813309 -27.549845 -22.690493 +v 0.139119 -27.895615 -19.447775 +v -0.835311 -28.162088 -14.760961 +v -2.164851 -28.333403 -8.366051 +v 6.666899 -26.195236 -24.845264 +v 6.468999 -26.683752 -24.379938 +v 6.009799 -27.140556 -23.300714 +v 5.183699 -27.549774 -21.359093 +v 3.884959 -27.895555 -18.306675 +v 2.007839 -28.162043 -13.894760 +v -0.553371 -28.333376 -7.875141 +v 11.245599 -26.195107 -22.387665 +v 10.961899 -26.683626 -21.968338 +v 10.303799 -27.140434 -20.995815 +v 9.119899 -27.549664 -19.246292 +v 7.258698 -27.895460 -16.495775 +v 4.568559 -28.161970 -12.520261 +v 0.898029 -28.333336 -7.096081 +v 15.218298 -26.194935 -19.121964 +v 14.860199 -26.683458 -18.763838 +v 14.029598 -27.140274 -17.933214 +v 12.535198 -27.549515 -16.438791 +v 10.185899 -27.895334 -14.089474 +v 6.790399 -28.161875 -10.693960 +v 2.157339 -28.333281 -6.060891 +v 18.483999 -26.194727 -15.149263 +v 18.064699 -26.683252 -14.865538 +v 17.092199 -27.140078 -14.207414 +v 15.342699 -27.549335 -13.023492 +v 12.592199 -27.895180 -11.162273 +v 8.616699 -28.161758 -8.472120 +v 3.192529 -28.333214 -4.801581 +v 20.941599 -26.194487 -10.570563 +v 20.476299 -26.683016 -10.372638 +v 19.397099 -27.139851 -9.913414 +v 17.455500 -27.549129 -9.087292 +v 14.403099 -27.895002 -7.788534 +v 9.991199 -28.161623 -5.911400 +v 3.971589 -28.333138 -3.350181 +v 22.490299 -26.194218 -5.486933 +v 21.995998 -26.682755 -5.384138 +v 20.849499 -27.139601 -5.145754 +v 18.786900 -27.548897 -4.716902 +v 15.544199 -27.894806 -4.042694 +v 10.857399 -28.161474 -3.068250 +v 4.462499 -28.333054 -1.738701 +v -32.748802 8.112499 -0.001070 +v -32.671303 8.286894 1.773523 +v -37.226601 8.278593 1.773523 +v -37.224098 8.104599 -0.001070 +v -41.240105 8.220793 1.773526 +v -41.171204 8.049099 -0.001067 +v -44.691704 8.063795 1.773534 +v -44.569000 7.898602 -0.001059 +v -47.561005 7.758093 1.773551 +v -47.396400 7.605499 -0.001044 +v -49.827904 7.253992 1.773587 +v -49.632202 7.122200 -0.001018 +v -51.472099 6.502092 1.773627 +v -51.255402 6.401299 -0.000980 +v -52.473404 5.452795 1.773682 +v -52.244804 5.395100 -0.000927 +v -52.811699 4.056395 1.773755 +v -52.579300 4.056301 -0.000857 +v -32.467102 8.746460 3.041078 +v -37.233398 8.737259 3.041079 +v -41.422005 8.673161 3.041082 +v -45.015099 8.499161 3.041091 +v -47.994904 8.160160 3.041109 +v -50.343605 7.601460 3.041139 +v -52.043304 6.767860 3.041183 +v -53.076103 5.604462 3.041244 +v -53.424400 4.056461 3.041325 +v -32.178402 9.396101 3.801594 +v -37.243004 9.385698 3.801595 +v -41.679199 9.312700 3.801599 +v -45.472504 9.114500 3.801609 +v -48.608498 8.728701 3.801629 +v -51.072701 8.092501 3.801663 +v -52.850800 7.143400 3.801713 +v -53.928200 5.818998 3.801782 +v -54.290604 4.056501 3.801875 +v -31.847401 10.140812 4.055065 +v -37.253998 10.128914 4.055066 +v -41.973999 10.045815 4.055070 +v -45.996704 9.820015 4.055082 +v -49.311798 9.380314 4.055105 +v -51.908600 8.655415 4.055143 +v -53.776505 7.574012 4.055200 +v -54.904999 6.064811 4.055280 +v -55.283501 4.056514 4.055386 +v -31.516401 10.885500 3.801516 +v -37.264999 10.872202 3.801517 +v -42.268700 10.778799 3.801522 +v -46.521004 10.525400 3.801535 +v -50.015099 10.031900 3.801561 +v -52.744400 9.218302 3.801604 +v -54.702202 8.004499 3.801667 +v -55.881798 6.310598 3.801757 +v -56.276398 4.056501 3.801875 +v -31.227701 11.535160 3.040932 +v -37.274605 11.520561 3.040932 +v -42.525902 11.418259 3.040938 +v -46.978302 11.140759 3.040952 +v -50.628700 10.600262 3.040981 +v -53.473602 9.709259 3.041028 +v -55.509705 8.380058 3.041098 +v -56.733803 6.524960 3.041195 +v -57.142601 4.056461 3.041325 +v -31.023500 11.994593 1.773328 +v -37.281303 11.979094 1.773328 +v -42.707802 11.870493 1.773334 +v -47.301804 11.575891 1.773350 +v -51.062599 11.002295 1.773380 +v -53.989304 10.056494 1.773430 +v -56.080902 8.645594 1.773504 +v -57.336502 6.676592 1.773617 +v -57.755302 4.056395 1.773755 +v -30.946001 12.168701 -0.001284 +v -37.283905 12.152901 -0.001283 +v -42.776703 12.042000 -0.001277 +v -47.424500 11.740898 -0.001261 +v -51.227303 11.154701 -0.001231 +v -54.184898 10.188198 -0.001180 +v -56.297600 8.746300 -0.001104 +v -57.565102 6.734001 -0.000998 +v -57.987701 4.056301 -0.000857 +v -31.023500 11.994406 -1.775882 +v -37.281303 11.978907 -1.775882 +v -42.707802 11.870306 -1.775876 +v -47.301804 11.575705 -1.775860 +v -51.062599 11.002108 -1.775830 +v -53.989304 10.056307 -1.775780 +v -56.080902 8.645407 -1.775706 +v -57.336502 6.676405 -1.775603 +v -57.755302 4.056208 -1.775465 +v -31.227701 11.534840 -3.043438 +v -37.274605 11.520241 -3.043437 +v -42.525902 11.417938 -3.043432 +v -46.978302 11.140438 -3.043417 +v -50.628700 10.599941 -3.043389 +v -53.473602 9.708939 -3.043342 +v -55.509705 8.379738 -3.043272 +v -56.733803 6.524639 -3.043175 +v -57.142601 4.056141 -3.043045 +v -31.516401 10.885099 -3.803944 +v -37.264999 10.871801 -3.803943 +v -42.268700 10.778399 -3.803938 +v -46.521004 10.525000 -3.803925 +v -50.015099 10.031500 -3.803899 +v -52.744400 9.217901 -3.803856 +v -54.702202 8.004099 -3.803792 +v -55.881798 6.310198 -3.803703 +v -56.276398 4.056101 -3.803585 +v -31.847401 10.140385 -4.057425 +v -37.253998 10.128487 -4.057424 +v -41.973999 10.045387 -4.057420 +v -45.996704 9.819588 -4.057408 +v -49.311798 9.379887 -4.057385 +v -51.908600 8.654987 -4.057347 +v -53.776505 7.573586 -4.057290 +v -54.904999 6.064385 -4.057210 +v -55.283501 4.056088 -4.057105 +v -32.178402 9.395700 -3.803866 +v -37.243004 9.385298 -3.803865 +v -41.679199 9.312300 -3.803861 +v -45.472504 9.114100 -3.803851 +v -48.608498 8.728300 -3.803831 +v -51.072701 8.092100 -3.803797 +v -52.850800 7.143000 -3.803747 +v -53.928200 5.818598 -3.803678 +v -54.290604 4.056101 -3.803585 +v -32.467102 8.746140 -3.043292 +v -37.233398 8.736938 -3.043291 +v -41.422005 8.672840 -3.043288 +v -45.015099 8.498840 -3.043278 +v -47.994904 8.159840 -3.043261 +v -50.343605 7.601139 -3.043231 +v -52.043304 6.767540 -3.043187 +v -53.076103 5.604141 -3.043126 +v -53.424400 4.056141 -3.043045 +v -32.671303 8.286707 -1.775687 +v -37.226601 8.278406 -1.775687 +v -41.240105 8.220606 -1.775684 +v -44.691704 8.063608 -1.775676 +v -47.561005 7.757906 -1.775659 +v -49.827904 7.253805 -1.775633 +v -51.472099 6.501905 -1.775593 +v -52.473404 5.452608 -1.775538 +v -52.811699 4.056208 -1.775465 +v -52.633804 2.304493 1.773847 +v -52.406799 2.360899 -0.000767 +v -52.086304 0.282793 1.773954 +v -51.875099 0.380301 -0.000663 +v -51.148598 -1.917507 1.774069 +v -50.963203 -1.790400 -0.000549 +v -49.799904 -4.205008 1.774190 +v -49.649803 -4.056200 -0.000429 +v -48.019600 -6.488407 1.774310 +v -47.914001 -6.322001 -0.000310 +v -45.787102 -8.676506 1.774425 +v -45.734398 -8.492701 -0.000196 +v -43.081604 -10.677807 1.774530 +v -43.090103 -10.473301 -0.000092 +v -39.882401 -12.401007 1.774621 +v -53.232300 2.155760 3.041425 +v -52.643204 0.025560 3.041537 +v -51.637398 -2.252640 3.041657 +v -50.195602 -4.597441 3.041780 +v -48.298203 -6.927340 3.041903 +v -45.925903 -9.161039 3.042020 +v -43.058998 -11.216940 3.042129 +v -39.678200 -13.013640 3.042223 +v -54.078499 1.945400 3.801986 +v -53.430405 -0.338101 3.802106 +v -52.328499 -2.726500 3.802232 +v -50.755005 -5.152300 3.802360 +v -48.692101 -7.548000 3.802485 +v -46.122101 -9.846199 3.802606 +v -43.027199 -11.979200 3.802719 +v -39.389503 -13.879700 3.802819 +v -55.048500 1.704214 4.055509 +v -54.332802 -0.755087 4.055638 +v -53.120705 -3.269686 4.055771 +v -51.396301 -5.788388 4.055903 +v -49.143700 -8.259487 4.056033 +v -46.347099 -10.631586 4.056158 +v -42.990700 -12.853086 4.056275 +v -39.058502 -14.872686 4.056381 +v -56.018501 1.462999 3.802011 +v -55.235298 -1.171999 3.802150 +v -53.912903 -3.813000 3.802289 +v -52.037498 -6.424500 3.802427 +v -49.595200 -8.971001 3.802560 +v -46.572098 -11.417000 3.802689 +v -42.954102 -13.727100 3.802811 +v -38.727501 -15.865600 3.802923 +v -56.864601 1.252559 3.041473 +v -56.022499 -1.535740 3.041619 +v -54.604004 -4.286940 3.041764 +v -52.596901 -6.979441 3.041906 +v -49.989098 -9.591740 3.042043 +v -46.768303 -12.102240 3.042175 +v -42.922302 -14.489440 3.042301 +v -38.438805 -16.731840 3.042419 +v -57.463104 1.103594 1.773911 +v -56.579300 -1.793106 1.774063 +v -55.092804 -4.622208 1.774212 +v -52.992599 -7.372007 1.774356 +v -50.267700 -10.030807 1.774496 +v -46.907104 -12.586906 1.774631 +v -42.899704 -15.028707 1.774759 +v -38.234604 -17.344606 1.774881 +v -57.690102 1.047100 -0.000698 +v -56.790504 -1.890800 -0.000544 +v -55.278198 -4.749401 -0.000393 +v -53.142700 -7.520901 -0.000247 +v -50.373398 -10.197401 -0.000106 +v -46.959801 -12.770801 0.000029 +v -42.891205 -15.233400 0.000159 +v -38.157104 -17.577000 0.000283 +v -57.463104 1.103407 -1.775309 +v -56.579300 -1.793293 -1.775157 +v -55.092804 -4.622395 -1.775008 +v -52.992599 -7.372194 -1.774864 +v -50.267700 -10.030994 -1.774724 +v -46.907104 -12.587093 -1.774589 +v -42.899704 -15.028893 -1.774461 +v -38.234604 -17.344793 -1.774339 +v -56.864601 1.252239 -3.042897 +v -56.022499 -1.536060 -3.042751 +v -54.604004 -4.287260 -3.042606 +v -52.596901 -6.979761 -3.042454 +v -49.989098 -9.592060 -3.042317 +v -46.768303 -12.102560 -3.042185 +v -42.922302 -14.489760 -3.042059 +v -38.438805 -16.732161 -3.041941 +v -56.018501 1.462599 -3.803448 +v -55.235298 -1.172399 -3.803310 +v -53.912903 -3.813400 -3.803171 +v -52.037498 -6.424900 -3.803033 +v -49.595200 -8.971401 -3.802900 +v -46.572098 -11.417400 -3.802771 +v -42.954102 -13.727501 -3.802649 +v -38.727501 -15.866000 -3.802537 +v -55.048500 1.703787 -4.056981 +v -54.332802 -0.755514 -4.056852 +v -53.120705 -3.270113 -4.056719 +v -51.396301 -5.788814 -4.056587 +v -49.143700 -8.259914 -4.056457 +v -46.347099 -10.632013 -4.056332 +v -42.990700 -12.853514 -4.056215 +v -39.058502 -14.873114 -4.056109 +v -54.078499 1.945000 -3.803474 +v -53.430405 -0.338501 -3.803354 +v -52.328499 -2.726900 -3.803228 +v -50.755005 -5.152700 -3.803100 +v -48.692101 -7.548401 -3.802974 +v -46.122101 -9.846600 -3.802854 +v -43.027199 -11.979601 -3.802741 +v -39.389503 -13.880200 -3.802641 +v -53.232300 2.155440 -3.042945 +v -52.643204 0.025240 -3.042833 +v -51.637398 -2.252960 -3.042713 +v -50.195602 -4.597761 -3.042580 +v -48.298203 -6.927660 -3.042457 +v -45.925903 -9.161360 -3.042340 +v -43.058998 -11.217260 -3.042231 +v -39.678200 -13.013961 -3.042137 +v -52.633804 2.304306 -1.775373 +v -52.086304 0.282606 -1.775266 +v -51.148598 -1.917694 -1.775151 +v -49.799904 -4.205194 -1.775030 +v -48.019600 -6.488594 -1.774910 +v -45.787102 -8.676693 -1.774795 +v -43.081604 -10.677994 -1.774690 +v -39.882401 -12.401194 -1.774599 +v 26.742798 -2.704201 -0.000501 +v 26.742798 -3.342995 3.903665 +v 31.995298 -2.734499 3.799422 +v 31.879999 -2.170700 -0.000529 +v 35.571999 -1.191915 3.524601 +v 35.390495 -0.718300 -0.000605 +v 37.890800 1.055865 3.136063 +v 37.675598 1.431299 -0.000718 +v 39.369301 3.780442 2.690650 +v 39.136902 4.056301 -0.000857 +v 40.425201 6.753017 2.245223 +v 40.175598 6.934700 -0.001008 +v 41.476402 9.745096 1.856636 +v 41.193199 9.844898 -0.001162 +v 42.940498 12.527984 1.581750 +v 42.590996 12.564899 -0.001305 +v 45.235298 14.872976 1.477416 +v 44.770500 14.872898 -0.001426 +v 26.742798 -5.027648 6.692423 +v 32.299202 -4.221056 6.513731 +v 36.050697 -2.441083 6.042657 +v 38.458000 0.065783 5.376655 +v 39.981895 3.053042 4.613178 +v 41.083298 6.273903 3.849689 +v 42.223099 9.481968 3.183640 +v 43.861900 12.430544 2.712505 +v 46.460602 14.873032 2.533726 +v 26.742798 -7.409560 8.365748 +v 32.728897 -6.322972 8.142382 +v 36.727402 -4.207202 7.553540 +v 39.259895 -1.334047 6.721049 +v 40.848099 2.024504 5.766722 +v 42.013802 5.596353 4.812385 +v 43.278702 9.109810 3.979859 +v 45.164497 12.292678 3.390962 +v 48.193001 14.873065 3.167516 +v 26.742798 -10.140131 8.923632 +v 33.221497 -8.732644 8.685358 +v 37.503098 -6.231777 8.057246 +v 40.179100 -2.938822 7.169243 +v 41.840996 0.845424 6.151284 +v 43.080399 4.819671 5.133315 +v 44.488899 8.683123 4.245282 +v 46.657799 12.134590 3.617120 +v 50.178902 14.873075 3.378776 +v 26.742798 -12.870761 8.366035 +v 33.714096 -11.142272 8.142635 +v 38.278801 -8.256503 7.553753 +v 41.098297 -4.543647 6.721218 +v 42.834000 -0.333696 5.766846 +v 44.147102 4.042951 4.812466 +v 45.698997 8.256508 3.979904 +v 48.151100 11.976577 3.390979 +v 52.164696 14.873065 3.167516 +v 26.742798 -15.252849 6.692961 +v 34.143799 -13.244358 6.514205 +v 38.955498 -10.022782 6.043056 +v 41.900200 -5.943618 5.376971 +v 43.700096 -1.362358 4.613410 +v 45.077499 3.365403 3.849842 +v 46.754601 7.884265 3.183724 +v 49.453697 11.838644 2.712536 +v 53.897102 14.873032 2.533726 +v 26.742798 -16.937794 3.904390 +v 34.447701 -14.731300 3.800053 +v 39.434196 -11.272116 3.525131 +v 42.467400 -6.933936 3.136483 +v 44.312798 -2.090059 2.690958 +v 45.735703 2.886118 2.245427 +v 47.501297 7.620898 1.856748 +v 50.375099 11.741084 1.581791 +v 55.122398 14.872976 1.477416 +v 26.742798 -17.577000 0.000283 +v 34.562996 -15.295401 0.000162 +v 39.615700 -11.746201 -0.000025 +v 42.682602 -7.309700 -0.000258 +v 44.545197 -2.366100 -0.000519 +v 45.985298 2.704201 -0.000786 +v 47.784599 7.521000 -0.001039 +v 50.724602 11.703999 -0.001259 +v 55.587196 14.872898 -0.001426 +v 26.742798 -16.938206 -3.903890 +v 34.447701 -14.731701 -3.799787 +v 39.434196 -11.272486 -3.525229 +v 42.467400 -6.934266 -3.137037 +v 44.312798 -2.090342 -2.692022 +v 45.735703 2.885881 -2.247013 +v 47.501297 7.620702 -1.858832 +v 50.375099 11.740918 -1.584309 +v 55.122398 14.872820 -1.480264 +v 26.742798 -15.253552 -6.692639 +v 34.143799 -13.245043 -6.514105 +v 38.955498 -10.023417 -6.043284 +v 41.900200 -5.944184 -5.377629 +v 43.700096 -1.362843 -4.614550 +v 45.077499 3.364997 -3.851478 +v 46.754601 7.883931 -3.185846 +v 49.453697 11.838358 -2.715064 +v 53.897102 14.872765 -2.536584 +v 26.742798 -12.871640 -8.365974 +v 33.714096 -11.143128 -8.142745 +v 38.278801 -8.257298 -7.554177 +v 41.098297 -4.544354 -6.722023 +v 42.834000 -0.334303 -5.768104 +v 44.147102 4.042445 -4.814184 +v 45.698997 8.256088 -3.982056 +v 48.151100 11.976220 -3.393521 +v 52.164696 14.872731 -3.170364 +v 26.742798 -10.141069 -8.923848 +v 33.221497 -8.733558 -8.685721 +v 37.503098 -6.232625 -8.057874 +v 40.179100 -2.939577 -7.170217 +v 41.840996 0.844777 -6.152656 +v 43.080399 4.819131 -5.135115 +v 44.488899 8.682676 -4.247478 +v 46.657799 12.134209 -3.619690 +v 50.178902 14.872721 -3.381634 +v 26.742798 -7.410440 -8.366261 +v 32.728897 -6.323829 -8.142999 +v 36.727402 -4.207997 -7.554390 +v 39.259895 -1.334754 -6.722191 +v 40.848099 2.023897 -5.768228 +v 42.013802 5.595847 -4.814266 +v 43.278702 9.109390 -3.982101 +v 45.164497 12.292321 -3.393538 +v 48.193001 14.872731 -3.170364 +v 26.742798 -5.028352 -6.693187 +v 32.299202 -4.221742 -6.514579 +v 36.050697 -2.441718 -6.043683 +v 38.458000 0.065217 -5.377945 +v 39.981895 3.052557 -4.614782 +v 41.083298 6.273498 -3.851631 +v 42.223099 9.481632 -3.185930 +v 43.861900 12.430258 -2.715095 +v 46.460602 14.872765 -2.536584 +v 26.742798 -3.343406 -3.904605 +v 31.995298 -2.734899 -3.800428 +v 35.571999 -1.192286 -3.525759 +v 37.890800 1.055535 -3.137457 +v 39.369301 3.780159 -2.692330 +v 40.425201 6.752781 -2.247217 +v 41.476402 9.744902 -1.858944 +v 42.940498 12.527818 -1.584350 +v 45.235298 14.872820 -1.480264 +v 45.930199 15.321976 1.451973 +v 45.439499 15.316601 -0.001450 +v 46.563995 15.643772 1.384946 +v 46.066299 15.633499 -0.001466 +v 47.097496 15.837668 1.290195 +v 46.608498 15.823601 -0.001476 +v 47.491196 15.903363 1.181592 +v 47.024002 15.887001 -0.001480 +v 47.705902 15.840255 1.072995 +v 47.270500 15.823601 -0.001476 +v 47.702400 15.647852 0.978263 +v 47.305702 15.633499 -0.001466 +v 47.441200 15.325548 0.911270 +v 47.087402 15.316601 -0.001450 +v 46.883202 14.872945 0.885877 +v 46.573296 14.872898 -0.001426 +v 47.223900 15.336232 2.490132 +v 47.876297 15.670726 2.375234 +v 48.386497 15.874815 2.212814 +v 48.722900 15.946507 2.026640 +v 48.853996 15.883997 1.840463 +v 48.748199 15.685487 1.678074 +v 48.374100 15.349180 1.563211 +v 47.699997 14.872978 1.519666 +v 49.052795 15.356163 3.113021 +v 49.731598 15.708855 2.969412 +v 50.209000 15.927144 2.766391 +v 50.464302 16.007435 2.533666 +v 50.477097 15.945922 2.300950 +v 50.226799 15.738811 2.097951 +v 49.692902 15.382504 1.954379 +v 48.854996 14.872998 1.899936 +v 51.149399 15.379176 3.320650 +v 51.858398 15.752467 3.167470 +v 52.298096 15.987155 2.950908 +v 52.460495 16.077242 2.702673 +v 52.337700 16.016830 2.454446 +v 51.921799 15.799919 2.237907 +v 51.204796 15.420611 2.084768 +v 50.178902 14.873005 2.026696 +v 53.245895 15.402065 3.113019 +v 53.985199 15.796055 2.969408 +v 54.387199 16.047146 2.766384 +v 54.456696 16.147034 2.533659 +v 54.198296 16.087721 2.300942 +v 53.616798 15.861012 2.097944 +v 52.716698 15.458801 1.954376 +v 51.502800 14.872998 1.899936 +v 55.074898 15.421929 2.490127 +v 55.840500 15.834125 2.375226 +v 56.209702 16.099417 2.212802 +v 56.198097 16.207905 2.026626 +v 55.821396 16.149595 1.840449 +v 55.095299 15.914289 1.678061 +v 54.035500 15.492083 1.563204 +v 52.657700 14.872978 1.519666 +v 56.368500 15.436077 1.451967 +v 57.152802 15.860973 1.384934 +v 57.498695 16.136368 1.290180 +v 57.429802 16.250963 1.181574 +v 56.969498 16.193256 1.072977 +v 56.141197 15.951952 0.978247 +v 54.968399 15.515646 0.911260 +v 53.474602 14.872945 0.885877 +v 56.859200 15.441299 -0.001456 +v 57.650497 15.871101 -0.001479 +v 57.987701 16.150398 -0.001494 +v 57.896996 16.267200 -0.001500 +v 57.404900 16.209801 -0.001497 +v 56.537895 15.966198 -0.001484 +v 55.322197 15.524498 -0.001461 +v 53.784401 14.872898 -0.001426 +v 56.368500 15.435925 -1.454873 +v 57.152802 15.860828 -1.387886 +v 57.498695 16.136230 -1.293170 +v 57.429802 16.250837 -1.184566 +v 56.969498 16.193142 -1.075963 +v 56.141197 15.951849 -0.981215 +v 54.968399 15.515551 -0.914182 +v 53.474602 14.872851 -0.888730 +v 55.074898 15.421668 -2.493033 +v 55.840500 15.833875 -2.378185 +v 56.209702 16.099184 -2.215788 +v 56.198097 16.207691 -2.029614 +v 55.821396 16.149401 -1.843441 +v 55.095299 15.914111 -1.681018 +v 54.035500 15.491919 -1.566126 +v 52.657700 14.872818 -1.522514 +v 53.245895 15.401737 -3.115932 +v 53.985199 15.795742 -2.972362 +v 54.387199 16.046856 -2.769356 +v 54.456696 16.146767 -2.536651 +v 54.198296 16.087481 -2.303928 +v 53.616798 15.860790 -2.100906 +v 52.716698 15.458595 -1.957285 +v 51.502800 14.872798 -1.902794 +v 51.149399 15.378827 -3.323560 +v 51.858398 15.752133 -3.170410 +v 52.298096 15.986844 -2.953882 +v 52.460495 16.076956 -2.705657 +v 52.337700 16.016571 -2.457414 +v 51.921799 15.799683 -2.240863 +v 51.204796 15.420392 -2.087672 +v 50.178902 14.872791 -2.029554 +v 49.052795 15.355835 -3.115929 +v 49.731598 15.708542 -2.972358 +v 50.209000 15.926852 -2.769349 +v 50.464302 16.007168 -2.536644 +v 50.477097 15.945680 -2.303920 +v 50.226799 15.738590 -2.100899 +v 49.692902 15.382298 -1.957281 +v 48.854996 14.872798 -1.902794 +v 47.223900 15.335971 -2.493028 +v 47.876297 15.670476 -2.378176 +v 48.386497 15.874582 -2.215776 +v 48.722900 15.946293 -2.029600 +v 48.853996 15.883802 -1.843427 +v 48.748199 15.685309 -1.681006 +v 48.374100 15.349016 -1.566119 +v 47.699997 14.872818 -1.522514 +v 45.930199 15.321823 -1.454867 +v 46.563995 15.643627 -1.387874 +v 47.097496 15.837533 -1.293155 +v 47.491196 15.903239 -1.184548 +v 47.705902 15.840142 -1.075945 +v 47.702400 15.647749 -0.981199 +v 47.441200 15.325453 -0.914172 +v 46.883202 14.872851 -0.888730 +v -3.904401 28.393700 -0.002138 +v 0.160859 28.156145 0.845958 +v 0.243389 28.156101 -0.002126 +v 2.114109 27.506468 1.253442 +v 2.236299 27.506401 -0.002092 +v 2.493709 26.539968 1.332592 +v 2.623619 26.539898 -0.002041 +v 1.837989 25.351564 1.195675 +v 1.954619 25.351501 -0.001978 +v 0.685319 24.036449 0.954980 +v 0.778589 24.036400 -0.001909 +v -0.425961 22.689636 0.722770 +v -0.355191 22.689598 -0.001838 +v -0.957511 21.406233 0.611325 +v -0.897431 21.406200 -0.001770 +v -0.370961 20.281239 0.732920 +v -0.298851 20.281200 -0.001711 +v -0.076611 28.156187 1.630247 +v 1.762539 27.506529 2.414552 +v 2.119929 26.540033 2.566892 +v 1.502449 25.351624 2.303395 +v 0.416999 24.036497 1.840174 +v -0.629541 22.689671 1.393365 +v -1.130261 21.406263 1.179093 +v -0.578281 20.281275 1.413472 +v -0.453821 28.156223 2.335557 +v 1.204069 27.506582 3.458742 +v 1.526189 26.540091 3.676932 +v 0.969479 25.351675 3.299665 +v -0.009161 24.036539 2.636454 +v -0.952781 22.689703 1.996825 +v -1.404461 21.406290 1.690302 +v -0.907291 20.281307 2.026412 +v -0.955591 28.156256 2.946687 +v 0.461199 27.506630 4.363512 +v 0.736439 26.540142 4.638793 +v 0.260579 25.351721 4.162995 +v -0.575911 24.036575 3.326584 +v -1.382561 22.689732 2.520005 +v -1.768891 21.406313 2.133733 +v -1.344461 20.281336 2.558232 +v -1.566721 28.156282 3.448457 +v -0.443571 27.506670 5.106382 +v -0.225431 26.540184 5.428553 +v -0.602761 25.351757 4.871895 +v -1.266041 24.036604 3.893334 +v -1.905741 22.689753 2.949785 +v -2.212331 21.406332 2.498163 +v -1.876281 20.281359 2.995402 +v -2.272021 28.156303 3.825668 +v -1.487761 27.506699 5.664852 +v -1.335471 26.540215 6.022283 +v -1.599031 25.351786 5.404865 +v -2.062321 24.036627 4.319484 +v -2.509191 22.689770 3.273025 +v -2.723541 21.406347 2.772372 +v -2.489221 20.281376 3.324412 +v -3.056316 28.156315 4.063138 +v -2.648861 27.506718 6.016422 +v -2.569771 26.540234 6.396072 +v -2.706741 25.351803 5.740415 +v -2.947512 24.036642 4.587814 +v -3.179793 22.689781 3.476595 +v -3.291306 21.406355 2.945122 +v -3.169770 20.281385 3.531732 +v -3.904401 28.156319 4.145668 +v -3.904401 27.506723 6.138612 +v -3.904401 26.540241 6.525982 +v -3.904401 25.351810 5.857045 +v -3.904401 24.036646 4.681084 +v -3.904401 22.689785 3.547375 +v -3.904401 21.406359 3.005203 +v -3.904401 20.281389 3.603842 +v -4.752486 28.156315 4.063138 +v -5.159941 27.506718 6.016422 +v -5.239031 26.540234 6.396072 +v -5.102061 25.351803 5.740415 +v -4.861290 24.036642 4.587814 +v -4.629009 22.689781 3.476595 +v -4.517496 21.406355 2.945122 +v -4.639032 20.281385 3.531732 +v -5.536781 28.156303 3.825668 +v -6.321041 27.506699 5.664852 +v -6.473331 26.540215 6.022283 +v -6.209771 25.351786 5.404865 +v -5.746481 24.036627 4.319484 +v -5.299611 22.689770 3.273025 +v -5.085261 21.406347 2.772372 +v -5.319581 20.281376 3.324412 +v -6.242081 28.156282 3.448457 +v -7.365232 27.506670 5.106382 +v -7.583371 26.540184 5.428553 +v -7.206041 25.351757 4.871895 +v -6.542761 24.036604 3.893334 +v -5.903061 22.689753 2.949785 +v -5.596471 21.406332 2.498163 +v -5.932521 20.281359 2.995402 +v -6.853211 28.156256 2.946687 +v -8.270001 27.506630 4.363512 +v -8.545241 26.540142 4.638793 +v -8.069382 25.351721 4.162995 +v -7.232891 24.036575 3.326584 +v -6.426241 22.689732 2.520005 +v -6.039911 21.406313 2.133733 +v -6.464341 20.281336 2.558232 +v -7.354981 28.156223 2.335557 +v -9.012871 27.506582 3.458742 +v -9.334991 26.540091 3.676932 +v -8.778281 25.351675 3.299665 +v -7.799641 24.036539 2.636454 +v -6.856021 22.689703 1.996825 +v -6.404341 21.406290 1.690302 +v -6.901511 20.281307 2.026412 +v -7.732191 28.156187 1.630247 +v -9.571341 27.506529 2.414552 +v -9.928732 26.540033 2.566892 +v -9.311251 25.351624 2.303395 +v -8.225801 24.036497 1.840174 +v -7.179261 22.689671 1.393365 +v -6.678541 21.406263 1.179093 +v -7.230521 20.281275 1.413472 +v -7.969661 28.156145 0.845958 +v -9.922911 27.506468 1.253442 +v -10.302511 26.539968 1.332592 +v -9.646791 25.351564 1.195675 +v -8.494122 24.036449 0.954980 +v -7.382841 22.689636 0.722770 +v -6.851291 21.406233 0.611325 +v -7.437841 20.281239 0.732920 +v -8.052191 28.156101 -0.002126 +v -10.045101 27.506401 -0.002092 +v -10.432421 26.539898 -0.002041 +v -9.763421 25.351501 -0.001978 +v -8.587391 24.036400 -0.001909 +v -7.453611 22.689598 -0.001838 +v -6.911371 21.406200 -0.001770 +v -7.509951 20.281200 -0.001711 +v -7.969661 28.156057 -0.850211 +v -9.922911 27.506334 -1.257628 +v -10.302511 26.539827 -1.336677 +v -9.646791 25.351439 -1.199635 +v -8.494122 24.036350 -0.958798 +v -7.382841 22.689560 -0.726446 +v -6.851291 21.406168 -0.614865 +v -7.437841 20.281162 -0.736342 +v -7.732191 28.156015 -1.634503 +v -9.571341 27.506273 -2.418738 +v -9.928732 26.539762 -2.570978 +v -9.311251 25.351379 -2.307345 +v -8.225801 24.036303 -1.843996 +v -7.179261 22.689526 -1.397045 +v -6.678541 21.406137 -1.182627 +v -7.230521 20.281126 -1.416888 +v -7.354981 28.155979 -2.339813 +v -9.012871 27.506220 -3.462918 +v -9.334991 26.539705 -3.681018 +v -8.778281 25.351328 -3.303615 +v -7.799641 24.036261 -2.640266 +v -6.856021 22.689493 -2.000495 +v -6.404341 21.406111 -1.693847 +v -6.901511 20.281094 -2.029838 +v -6.853211 28.155947 -2.950943 +v -8.270001 27.506172 -4.367698 +v -8.545241 26.539654 -4.642878 +v -8.069382 25.351282 -4.166955 +v -7.232891 24.036224 -3.330396 +v -6.426241 22.689465 -2.523685 +v -6.039911 21.406088 -2.137277 +v -6.464341 20.281065 -2.561648 +v -6.242081 28.155920 -3.452713 +v -7.365232 27.506132 -5.110558 +v -7.583371 26.539612 -5.432638 +v -7.206041 25.351246 -4.875855 +v -6.542761 24.036196 -3.897156 +v -5.903061 22.689444 -2.953455 +v -5.596471 21.406069 -2.501708 +v -5.932521 20.281042 -2.998828 +v -5.536781 28.155899 -3.829922 +v -6.321041 27.506104 -5.669028 +v -6.473331 26.539581 -6.026368 +v -6.209771 25.351217 -5.408825 +v -5.746481 24.036173 -4.323306 +v -5.299611 22.689426 -3.276705 +v -5.085261 21.406054 -2.775908 +v -5.319581 20.281025 -3.327828 +v -4.752486 28.155888 -4.067382 +v -5.159941 27.506084 -6.020608 +v -5.239031 26.539562 -6.400147 +v -5.102061 25.351200 -5.744375 +v -4.861290 24.036158 -4.591626 +v -4.629009 22.689415 -3.480275 +v -4.517496 21.406046 -2.948668 +v -4.639032 20.281015 -3.535148 +v -3.904401 28.155884 -4.149922 +v -3.904401 27.506079 -6.142798 +v -3.904401 26.539555 -6.530057 +v -3.904401 25.351192 -5.860995 +v -3.904401 24.036154 -4.684896 +v -3.904401 22.689411 -3.551055 +v -3.904401 21.406042 -3.008748 +v -3.904401 20.281012 -3.607258 +v -3.056316 28.155888 -4.067382 +v -2.648861 27.506084 -6.020608 +v -2.569771 26.539562 -6.400147 +v -2.706741 25.351200 -5.744375 +v -2.947512 24.036158 -4.591626 +v -3.179793 22.689415 -3.480275 +v -3.291306 21.406046 -2.948668 +v -3.169770 20.281015 -3.535148 +v -2.272021 28.155899 -3.829922 +v -1.487761 27.506104 -5.669028 +v -1.335471 26.539581 -6.026368 +v -1.599031 25.351217 -5.408825 +v -2.062321 24.036173 -4.323306 +v -2.509191 22.689426 -3.276705 +v -2.723541 21.406054 -2.775908 +v -2.489221 20.281025 -3.327828 +v -1.566721 28.155920 -3.452713 +v -0.443571 27.506132 -5.110558 +v -0.225431 26.539612 -5.432638 +v -0.602761 25.351246 -4.875855 +v -1.266041 24.036196 -3.897156 +v -1.905741 22.689444 -2.953455 +v -2.212331 21.406069 -2.501708 +v -1.876281 20.281042 -2.998828 +v -0.955591 28.155947 -2.950943 +v 0.461199 27.506172 -4.367698 +v 0.736439 26.539654 -4.642878 +v 0.260579 25.351282 -4.166955 +v -0.575911 24.036224 -3.330396 +v -1.382561 22.689465 -2.523685 +v -1.768891 21.406088 -2.137277 +v -1.344461 20.281065 -2.561648 +v -0.453821 28.155979 -2.339813 +v 1.204069 27.506220 -3.462918 +v 1.526189 26.539705 -3.681018 +v 0.969479 25.351328 -3.303615 +v -0.009161 24.036261 -2.640266 +v -0.952781 22.689493 -2.000495 +v -1.404461 21.406111 -1.693847 +v -0.907291 20.281094 -2.029838 +v -0.076611 28.156015 -1.634503 +v 1.762539 27.506273 -2.418738 +v 2.119929 26.539762 -2.570978 +v 1.502449 25.351379 -2.307345 +v 0.416999 24.036303 -1.843996 +v -0.629541 22.689526 -1.397045 +v -1.130261 21.406137 -1.182627 +v -0.578281 20.281126 -1.416888 +v 0.160859 28.156057 -0.850211 +v 2.114109 27.506334 -1.257628 +v 2.493709 26.539827 -1.336677 +v 1.837989 25.351439 -1.199635 +v 0.685319 24.036350 -0.958798 +v -0.425961 22.689560 -0.726446 +v -0.957511 21.406168 -0.614865 +v -0.370961 20.281162 -0.736342 +v 1.478579 19.383459 1.117499 +v 1.588429 19.383400 -0.001664 +v 4.156259 18.675686 1.674246 +v 4.320759 18.675598 -0.001627 +v 7.330799 18.094822 2.334297 +v 7.560099 18.094700 -0.001596 +v 10.670999 17.577259 3.028784 +v 10.968499 17.577099 -0.001569 +v 13.845598 17.059696 3.688831 +v 14.207899 17.059502 -0.001542 +v 16.523298 16.478724 4.245572 +v 16.940199 16.478500 -0.001511 +v 18.372799 15.771045 4.630149 +v 18.827499 15.770802 -0.001474 +v 19.062998 14.873149 4.773676 +v 19.531698 14.872898 -0.001426 +v 1.162739 19.383512 2.154269 +v 3.683309 18.675768 3.226746 +v 6.671598 18.094936 4.498227 +v 9.815799 17.577406 5.836044 +v 12.804199 17.059875 7.107521 +v 15.324699 16.478931 8.179992 +v 17.065800 15.771271 8.920789 +v 17.715399 14.873382 9.197237 +v 0.661519 19.383562 3.088049 +v 2.932769 18.675842 4.625026 +v 5.625489 18.095039 6.447197 +v 8.458699 17.577539 8.364433 +v 11.151399 17.060038 10.186562 +v 13.422699 16.479116 11.723592 +v 14.991499 15.771474 12.785229 +v 15.576799 14.873591 13.181376 +v -0.004491 19.383606 3.898249 +v 1.935469 18.675905 5.838236 +v 4.235409 18.095127 8.138217 +v 6.655398 17.577654 10.558233 +v 8.955298 17.060179 12.858161 +v 10.895299 16.479279 14.798192 +v 12.235199 15.771650 16.138128 +v 12.735199 14.873774 16.638176 +v -0.814681 19.383640 4.564249 +v 0.722249 18.675959 6.835536 +v 2.544399 18.095201 9.528287 +v 4.461609 17.577749 12.361533 +v 6.283699 17.060293 15.054261 +v 7.820699 16.479412 17.325592 +v 8.882298 15.771795 18.894428 +v 9.278399 14.873923 19.479776 +v -1.748461 19.383667 5.065469 +v -0.676021 18.675997 7.586086 +v 0.595429 18.095257 10.574407 +v 1.933209 17.577820 13.718634 +v 3.204659 17.060381 16.707062 +v 4.277099 16.479511 19.227592 +v 5.017859 15.771905 20.968630 +v 5.294259 14.874036 21.618376 +v -2.785241 19.383682 5.381309 +v -2.228521 18.676022 8.059036 +v -1.568501 18.095291 11.233606 +v -0.874051 17.577866 14.573833 +v -0.214031 17.060436 17.748463 +v 0.342689 16.479574 20.426193 +v 0.727219 15.771974 22.275728 +v 0.870699 14.874106 22.965977 +v -3.904401 19.383688 5.491169 +v -3.904401 18.676031 8.223536 +v -3.904401 18.095303 11.462907 +v -3.904401 17.577881 14.871333 +v -3.904401 17.060455 18.110762 +v -3.904401 16.479597 20.843092 +v -3.904401 15.771997 22.730429 +v -3.904401 14.874131 23.434677 +v -5.023561 19.383682 5.381309 +v -5.580281 18.676022 8.059036 +v -6.240301 18.095291 11.233606 +v -6.934752 17.577866 14.573833 +v -7.594771 17.060436 17.748463 +v -8.151491 16.479574 20.426193 +v -8.536021 15.771974 22.275728 +v -8.679501 14.874106 22.965977 +v -6.060341 19.383667 5.065469 +v -7.132781 18.675997 7.586086 +v -8.404231 18.095257 10.574407 +v -9.742011 17.577820 13.718634 +v -11.013461 17.060381 16.707062 +v -12.085901 16.479511 19.227592 +v -12.826661 15.771905 20.968630 +v -13.103062 14.874036 21.618376 +v -6.994122 19.383640 4.564249 +v -8.531052 18.675959 6.835536 +v -10.353201 18.095201 9.528287 +v -12.270411 17.577749 12.361533 +v -14.092502 17.060293 15.054261 +v -15.629501 16.479412 17.325592 +v -16.691101 15.771795 18.894428 +v -17.087200 14.873923 19.479776 +v -7.804311 19.383606 3.898249 +v -9.744271 18.675905 5.838236 +v -12.044211 18.095127 8.138217 +v -14.464201 17.577654 10.558233 +v -16.764101 17.060179 12.858161 +v -18.704102 16.479279 14.798192 +v -20.044001 15.771650 16.138128 +v -20.544001 14.873774 16.638176 +v -8.470322 19.383562 3.088049 +v -10.741571 18.675842 4.625026 +v -13.434291 18.095039 6.447197 +v -16.267502 17.577539 8.364433 +v -18.960201 17.060038 10.186562 +v -21.231501 16.479116 11.723592 +v -22.800301 15.771474 12.785229 +v -23.385601 14.873591 13.181376 +v -8.971541 19.383512 2.154269 +v -11.492111 18.675768 3.226746 +v -14.480401 18.094936 4.498227 +v -17.624601 17.577406 5.836044 +v -20.613001 17.059875 7.107521 +v -23.133501 16.478931 8.179992 +v -24.874601 15.771271 8.920789 +v -25.524200 14.873382 9.197237 +v -9.287381 19.383459 1.117499 +v -11.965061 18.675686 1.674246 +v -15.139601 18.094822 2.334297 +v -18.479801 17.577259 3.028784 +v -21.654402 17.059696 3.688831 +v -24.332102 16.478724 4.245572 +v -26.181601 15.771045 4.630149 +v -26.871801 14.873149 4.773676 +v -9.397231 19.383400 -0.001664 +v -12.129561 18.675598 -0.001627 +v -15.368901 18.094700 -0.001596 +v -18.777302 17.577099 -0.001569 +v -22.016701 17.059502 -0.001542 +v -24.749001 16.478500 -0.001511 +v -26.636301 15.770802 -0.001474 +v -27.340502 14.872898 -0.001426 +v -9.287381 19.383341 -1.120831 +v -11.965061 18.675510 -1.677504 +v -15.139601 18.094578 -2.337493 +v -18.479801 17.576939 -3.031926 +v -21.654402 17.059307 -3.691919 +v -24.332102 16.478277 -4.248598 +v -26.181601 15.770558 -4.633091 +v -26.871801 14.872647 -4.776524 +v -8.971541 19.383287 -2.157601 +v -11.492111 18.675428 -3.230004 +v -14.480401 18.094463 -4.501423 +v -17.624601 17.576792 -5.839176 +v -20.613001 17.059128 -7.110599 +v -23.133501 16.478069 -8.183008 +v -24.874601 15.770332 -8.923731 +v -25.524200 14.872415 -9.200084 +v -8.470322 19.383238 -3.091381 +v -10.741571 18.675354 -4.628284 +v -13.434291 18.094360 -6.450393 +v -16.267502 17.576658 -8.367577 +v -18.960201 17.058966 -10.189639 +v -21.231501 16.477884 -11.726608 +v -22.800301 15.770129 -12.788171 +v -23.385601 14.872205 -13.184223 +v -7.804311 19.383194 -3.901571 +v -9.744271 18.675291 -5.841494 +v -12.044211 18.094273 -8.141413 +v -14.464201 17.576544 -10.561366 +v -16.764101 17.058825 -12.861238 +v -18.704102 16.477722 -14.801208 +v -20.044001 15.769953 -16.141071 +v -20.544001 14.872023 -16.641024 +v -6.994122 19.383160 -4.567581 +v -8.531052 18.675238 -6.838794 +v -10.353201 18.094198 -9.531484 +v -12.270411 17.576448 -12.364667 +v -14.092502 17.058710 -15.057339 +v -15.629501 16.477589 -17.328608 +v -16.691101 15.769808 -18.897371 +v -17.087200 14.871873 -19.482624 +v -6.060341 19.383133 -5.068801 +v -7.132781 18.675200 -7.589344 +v -8.404231 18.094143 -10.577593 +v -9.742011 17.576378 -13.721867 +v -11.013461 17.058622 -16.710138 +v -12.085901 16.477489 -19.230608 +v -12.826661 15.769698 -20.971672 +v -13.103062 14.871760 -21.621223 +v -5.023561 19.383118 -5.384641 +v -5.580281 18.675175 -8.062284 +v -6.240301 18.094109 -11.236794 +v -6.934752 17.576332 -14.576966 +v -7.594771 17.058567 -17.751537 +v -8.151491 16.477427 -20.429207 +v -8.536021 15.769629 -22.278671 +v -8.679501 14.871690 -22.968822 +v -3.904401 19.383112 -5.494491 +v -3.904401 18.675165 -8.226793 +v -3.904401 18.094097 -11.466093 +v -3.904401 17.576317 -14.874467 +v -3.904401 17.058548 -18.113838 +v -3.904401 16.477404 -20.846107 +v -3.904401 15.769606 -22.733372 +v -3.904401 14.871665 -23.437523 +v -2.785241 19.383118 -5.384641 +v -2.228521 18.675175 -8.062284 +v -1.568501 18.094109 -11.236794 +v -0.874051 17.576332 -14.576966 +v -0.214031 17.058567 -17.751537 +v 0.342689 16.477427 -20.429207 +v 0.727219 15.769629 -22.278671 +v 0.870699 14.871690 -22.968822 +v -1.748461 19.383133 -5.068801 +v -0.676021 18.675200 -7.589344 +v 0.595429 18.094143 -10.577593 +v 1.933209 17.576378 -13.721867 +v 3.204659 17.058622 -16.710138 +v 4.277099 16.477489 -19.230608 +v 5.017859 15.769698 -20.971672 +v 5.294259 14.871760 -21.621223 +v -0.814681 19.383160 -4.567581 +v 0.722249 18.675238 -6.838794 +v 2.544399 18.094198 -9.531484 +v 4.461609 17.576448 -12.364667 +v 6.283699 17.058710 -15.057339 +v 7.820699 16.477589 -17.328608 +v 8.882298 15.769808 -18.897371 +v 9.278399 14.871873 -19.482624 +v -0.004491 19.383194 -3.901571 +v 1.935469 18.675291 -5.841494 +v 4.235409 18.094273 -8.141413 +v 6.655398 17.576544 -10.561366 +v 8.955298 17.058825 -12.861238 +v 10.895299 16.477722 -14.801208 +v 12.235199 15.769953 -16.141071 +v 12.735199 14.872023 -16.641024 +v 0.661519 19.383238 -3.091381 +v 2.932769 18.675354 -4.628284 +v 5.625489 18.094360 -6.450393 +v 8.458699 17.576658 -8.367577 +v 11.151399 17.058966 -10.189639 +v 13.422699 16.477884 -11.726608 +v 14.991499 15.770129 -12.788171 +v 15.576799 14.872205 -13.184223 +v 1.162739 19.383287 -2.157601 +v 3.683309 18.675428 -3.230004 +v 6.671598 18.094463 -4.501423 +v 9.815799 17.576792 -5.839176 +v 12.804199 17.059128 -7.110599 +v 15.324699 16.478069 -8.183008 +v 17.065800 15.770332 -8.923731 +v 17.715399 14.872415 -9.200084 +v 1.478579 19.383341 -1.120831 +v 4.156259 18.675510 -1.677504 +v 7.330799 18.094578 -2.337493 +v 10.670999 17.576939 -3.031926 +v 13.845598 17.059307 -3.691919 +v 16.523298 16.478277 -4.248598 +v 18.372799 15.770558 -4.633091 +v 19.062998 14.872647 -4.776524 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn 0.000000 0.000000 0.000000 +vn -0.935440 -0.352160 -0.030587 +vn -0.911208 -0.352493 -0.213189 +vn -0.953787 -0.231875 -0.191113 +vn -0.972794 -0.231669 -0.000943 +vn -0.972233 0.132720 -0.192738 +vn -0.991181 0.132508 0.001046 +vn -0.918700 0.364634 -0.151763 +vn -0.930763 0.364353 0.030438 +vn -0.851604 -0.352981 -0.387524 +vn -0.897718 -0.232198 -0.374416 +vn -0.915537 0.132883 -0.379650 +vn -0.870845 0.365184 -0.329044 +vn -0.759771 -0.353314 -0.545818 +vn -0.807471 -0.232487 -0.542162 +vn -0.823973 0.132953 -0.550811 +vn -0.789755 0.365578 -0.492585 +vn -0.639610 -0.353415 -0.682640 +vn -0.687043 -0.232591 -0.688384 +vn -0.701570 0.132965 -0.700085 +vn -0.679177 0.365729 -0.636365 +vn -0.495091 -0.353231 -0.793796 +vn -0.540580 -0.232530 -0.808519 +vn -0.552571 0.132875 -0.822806 +vn -0.543047 0.365649 -0.755911 +vn -0.330713 -0.352849 -0.875287 +vn -0.372641 -0.232273 -0.898436 +vn -0.381612 0.132740 -0.914742 +vn -0.385570 0.365323 -0.847275 +vn -0.152518 -0.352382 -0.923345 +vn -0.189228 -0.231981 -0.954137 +vn -0.194821 0.132549 -0.971841 +vn -0.212112 0.364836 -0.906589 +vn 0.026159 -0.356917 -0.933770 +vn -0.001514 -0.234830 -0.972035 +vn -0.002471 0.129038 -0.991637 +vn -0.031107 0.364455 -0.930701 +vn 0.200127 -0.393641 -0.897216 +vn 0.182237 -0.268527 -0.945877 +vn 0.189931 0.090060 -0.977658 +vn 0.151366 0.338314 -0.928780 +vn 0.365325 -0.445736 -0.817225 +vn 0.358027 -0.328907 -0.873863 +vn 0.380490 0.016138 -0.924644 +vn 0.338851 0.265113 -0.902715 +vn 0.516345 -0.479717 -0.709408 +vn 0.518720 -0.375917 -0.767864 +vn 0.557766 -0.044391 -0.828810 +vn 0.520444 0.189795 -0.832536 +vn 0.651932 -0.481944 -0.585418 +vn 0.661827 -0.387887 -0.641504 +vn 0.712330 -0.060029 -0.699273 +vn 0.679495 0.155426 -0.717028 +vn 0.770333 -0.453691 -0.448052 +vn 0.786513 -0.362754 -0.499808 +vn 0.838345 -0.027020 -0.544469 +vn 0.804596 0.177773 -0.566588 +vn 0.863585 -0.407618 -0.296762 +vn 0.886050 -0.312548 -0.342387 +vn 0.928274 0.035978 -0.370152 +vn 0.887373 0.241429 -0.392787 +vn 0.920215 -0.367320 -0.135209 +vn 0.949693 -0.261639 -0.172131 +vn 0.977902 0.096960 -0.185218 +vn 0.926608 0.312299 -0.209445 +vn 0.935320 -0.352105 0.034613 +vn 0.971843 -0.235555 0.005941 +vn 0.991816 0.127658 0.002299 +vn 0.934615 0.354547 -0.028136 +vn 0.911207 -0.352473 0.213226 +vn 0.953787 -0.231854 0.191138 +vn 0.972233 0.132742 0.192724 +vn 0.918704 0.364641 0.151725 +vn 0.851605 -0.352939 0.387561 +vn 0.897718 -0.232160 0.374439 +vn 0.915537 0.132926 0.379636 +vn 0.870843 0.365224 0.329005 +vn 0.759772 -0.353256 0.545855 +vn 0.807471 -0.232429 0.542187 +vn 0.823973 0.133010 0.550796 +vn 0.789752 0.365633 0.492548 +vn 0.639610 -0.353342 0.682677 +vn 0.687043 -0.232518 0.688409 +vn 0.701570 0.133038 0.700071 +vn 0.679177 0.365799 0.636325 +vn 0.495092 -0.353150 0.793832 +vn 0.540580 -0.232443 0.808544 +vn 0.552572 0.132959 0.822792 +vn 0.543049 0.365728 0.755871 +vn 0.330714 -0.352757 0.875323 +vn 0.372642 -0.232179 0.898460 +vn 0.381611 0.132835 0.914728 +vn 0.385571 0.365403 0.847240 +vn 0.152518 -0.352282 0.923383 +vn 0.189233 -0.231852 0.954168 +vn 0.194828 0.132607 0.971832 +vn 0.212113 0.364932 0.906550 +vn -0.030606 -0.352104 0.935460 +vn -0.000955 -0.231616 0.972807 +vn 0.001053 0.132553 0.991175 +vn 0.030456 0.364395 0.930746 +vn -0.213208 -0.352432 0.911227 +vn -0.191125 -0.231815 0.953799 +vn -0.192731 0.132781 0.972226 +vn -0.151744 0.364680 0.918685 +vn -0.387543 -0.352913 0.851623 +vn -0.374427 -0.232131 0.897730 +vn -0.379644 0.132953 0.915529 +vn -0.329025 0.365254 0.870823 +vn -0.545837 -0.353245 0.759789 +vn -0.542175 -0.232415 0.807484 +vn -0.550803 0.133023 0.823966 +vn -0.492565 0.365647 0.789735 +vn -0.682658 -0.353345 0.639629 +vn -0.688396 -0.232517 0.687056 +vn -0.700079 0.133038 0.701563 +vn -0.636346 0.365799 0.679157 +vn -0.793815 -0.353163 0.495110 +vn -0.808531 -0.232459 0.540592 +vn -0.822799 0.132949 0.552564 +vn -0.755892 0.365716 0.543027 +vn -0.875306 -0.352783 0.330731 +vn -0.898448 -0.232209 0.372653 +vn -0.914735 0.132808 0.381604 +vn -0.847255 0.365390 0.385550 +vn -0.923363 -0.352325 0.152536 +vn -0.954156 -0.231891 0.189244 +vn -0.971839 0.132565 0.194820 +vn -0.906570 0.364895 0.212093 +vn -0.360406 0.928973 -0.084354 +vn -0.370286 0.928838 -0.012165 +vn -0.365347 0.928911 -0.060374 +vn -0.370288 0.928839 0.012067 +vn -0.336462 0.929161 -0.153147 +vn -0.345945 0.929102 -0.130734 +vn -0.299958 0.929286 -0.215529 +vn -0.313467 0.929247 -0.195544 +vn -0.252443 0.929325 -0.269493 +vn -0.269439 0.929327 -0.252496 +vn -0.195500 0.929240 -0.313518 +vn -0.215480 0.929281 -0.300008 +vn -0.130689 0.929088 -0.346000 +vn -0.153101 0.929149 -0.336516 +vn -0.060326 0.928894 -0.365399 +vn -0.084307 0.928957 -0.360459 +vn 0.011921 0.927971 -0.372462 +vn -0.012251 0.928816 -0.370337 +vn 0.088387 0.921444 -0.378324 +vn 0.061824 0.925443 -0.373808 +vn 0.171528 0.910579 -0.376063 +vn 0.142667 0.915384 -0.376455 +vn 0.252700 0.902184 -0.349581 +vn 0.227238 0.903908 -0.362372 +vn 0.316752 0.901840 -0.293859 +vn 0.301680 0.898263 -0.319552 +vn 0.354398 0.909314 -0.218060 +vn 0.351805 0.901984 -0.250314 +vn 0.368842 0.919351 -0.136932 +vn 0.374157 0.911970 -0.168280 +vn 0.371542 0.926475 -0.060001 +vn 0.377193 0.922034 -0.087054 +vn 0.370286 0.928834 0.012459 +vn 0.373422 0.927586 -0.011876 +vn 0.360408 0.928982 0.084257 +vn 0.365349 0.928917 0.060277 +vn 0.336463 0.929176 0.153051 +vn 0.345947 0.929115 0.130640 +vn 0.299962 0.929307 0.215434 +vn 0.313468 0.929267 0.195450 +vn 0.252450 0.929352 0.269394 +vn 0.269443 0.929353 0.252397 +vn 0.195501 0.929272 0.313423 +vn 0.215485 0.929311 0.299911 +vn 0.130684 0.929127 0.345898 +vn 0.153098 0.929186 0.336413 +vn 0.060325 0.928934 0.365299 +vn 0.084306 0.928998 0.360355 +vn -0.012116 0.928858 0.370237 +vn 0.012115 0.928859 0.370234 +vn -0.084305 0.928997 0.360358 +vn -0.060325 0.928934 0.365297 +vn -0.153099 0.929186 0.336414 +vn -0.130687 0.929127 0.345896 +vn -0.215482 0.929312 0.299911 +vn -0.195499 0.929274 0.313417 +vn -0.269444 0.929352 0.252398 +vn -0.252449 0.929354 0.269390 +vn -0.313469 0.929267 0.195450 +vn -0.299961 0.929308 0.215431 +vn -0.345947 0.929115 0.130638 +vn -0.336463 0.929176 0.153049 +vn -0.365349 0.928917 0.060277 +vn -0.360408 0.928982 0.084257 +vn 0.270142 0.960748 0.063137 +vn 0.277591 0.960657 0.009033 +vn 0.434329 0.896047 0.091972 +vn 0.444255 0.895885 0.005254 +vn 0.670868 0.728906 0.136502 +vn 0.684945 0.728590 0.002701 +vn 0.802176 0.574804 0.161596 +vn 0.818551 0.574432 0.001641 +vn 0.868410 0.464425 0.173703 +vn 0.885794 0.464079 0.000576 +vn 0.252126 0.960876 0.114672 +vn 0.407361 0.896319 0.175127 +vn 0.630586 0.729405 0.265198 +vn 0.754520 0.575408 0.315604 +vn 0.817201 0.465007 0.340517 +vn 0.224748 0.960956 0.161405 +vn 0.365087 0.896522 0.250918 +vn 0.566449 0.729807 0.382776 +vn 0.678279 0.575849 0.456437 +vn 0.734959 0.465464 0.493131 +vn 0.189167 0.960975 0.201849 +vn 0.309442 0.896582 0.316838 +vn 0.481382 0.729962 0.485209 +vn 0.576844 0.576024 0.579178 +vn 0.625362 0.465625 0.626191 +vn 0.146476 0.960940 0.234819 +vn 0.242203 0.896511 0.370953 +vn 0.378264 0.729816 0.569460 +vn 0.453680 0.575864 0.680113 +vn 0.492149 0.465490 0.735601 +vn 0.097943 0.960838 0.259225 +vn 0.165355 0.896307 0.411451 +vn 0.260133 0.729443 0.632648 +vn 0.312525 0.575412 0.755797 +vn 0.339411 0.465064 0.817628 +vn 0.045222 0.960716 0.273825 +vn 0.081524 0.896045 0.436415 +vn 0.131104 0.728927 0.671920 +vn 0.158300 0.574843 0.802805 +vn 0.172529 0.464481 0.868614 +vn -0.009013 0.960453 0.278297 +vn -0.005245 0.895770 0.444487 +vn -0.002714 0.728550 0.684987 +vn -0.001668 0.574462 0.818530 +vn -0.000600 0.464127 0.885768 +vn -0.064578 0.958916 0.276242 +vn -0.092731 0.894238 0.437881 +vn -0.136813 0.727477 0.672354 +vn -0.161679 0.574380 0.802464 +vn -0.173731 0.464413 0.868411 +vn -0.120844 0.956566 0.265288 +vn -0.179177 0.891153 0.416824 +vn -0.266998 0.724966 0.634931 +vn -0.316020 0.573906 0.755488 +vn -0.340574 0.464846 0.817268 +vn -0.173585 0.954901 0.240898 +vn -0.260030 0.888442 0.378228 +vn -0.387000 0.722688 0.572672 +vn -0.457426 0.573362 0.679719 +vn -0.493246 0.465165 0.735072 +vn -0.217282 0.954861 0.202554 +vn -0.329676 0.887612 0.321651 +vn -0.491341 0.721883 0.487307 +vn -0.580643 0.573127 0.578255 +vn -0.626352 0.465256 0.625476 +vn -0.248432 0.956353 0.153851 +vn -0.383658 0.888988 0.250015 +vn -0.575733 0.722831 0.382160 +vn -0.681652 0.573295 0.454625 +vn -0.735778 0.465130 0.492225 +vn -0.267059 0.958482 0.099958 +vn -0.420151 0.891703 0.168340 +vn -0.637175 0.724931 0.261692 +vn -0.756949 0.573690 0.312903 +vn -0.817763 0.464815 0.339427 +vn -0.276039 0.960092 0.045013 +vn -0.439920 0.894304 0.081795 +vn -0.673889 0.727082 0.131244 +vn -0.803360 0.574060 0.158328 +vn -0.868682 0.464362 0.172508 +vn -0.277591 0.960654 -0.009283 +vn -0.444764 0.895631 -0.005468 +vn -0.685258 0.728295 -0.002857 +vn -0.818652 0.574287 -0.001722 +vn -0.885801 0.464066 -0.000626 +vn -0.270140 0.960742 -0.063238 +vn -0.434330 0.896036 -0.092066 +vn -0.670868 0.728891 -0.136579 +vn -0.802176 0.574787 -0.161657 +vn -0.868410 0.464408 -0.173751 +vn -0.252126 0.960864 -0.114771 +vn -0.407361 0.896300 -0.175221 +vn -0.630587 0.729376 -0.265276 +vn -0.754520 0.575374 -0.315664 +vn -0.817198 0.464977 -0.340564 +vn -0.224749 0.960939 -0.161503 +vn -0.365087 0.896496 -0.251009 +vn -0.566449 0.729766 -0.382853 +vn -0.678280 0.575799 -0.456499 +vn -0.734957 0.465416 -0.493180 +vn -0.189169 0.960953 -0.201951 +vn -0.309443 0.896548 -0.316934 +vn -0.481381 0.729911 -0.485286 +vn -0.576844 0.575963 -0.579239 +vn -0.625363 0.465561 -0.626238 +vn -0.146475 0.960915 -0.234920 +vn -0.242204 0.896470 -0.371050 +vn -0.378263 0.729756 -0.569537 +vn -0.453681 0.575794 -0.680173 +vn -0.492146 0.465417 -0.735649 +vn -0.097941 0.960812 -0.259324 +vn -0.165354 0.896263 -0.411546 +vn -0.260132 0.729375 -0.632727 +vn -0.312525 0.575333 -0.755858 +vn -0.339412 0.464976 -0.817678 +vn -0.045221 0.960688 -0.273922 +vn -0.081523 0.895999 -0.436508 +vn -0.131104 0.728856 -0.671997 +vn -0.158300 0.574759 -0.802866 +vn -0.172529 0.464389 -0.868664 +vn 0.009084 0.960642 -0.277639 +vn 0.005301 0.895862 -0.444301 +vn 0.002739 0.728554 -0.684983 +vn 0.001671 0.574389 -0.818581 +vn 0.000600 0.464032 -0.885818 +vn 0.063188 0.960731 -0.270191 +vn 0.092019 0.896019 -0.434377 +vn 0.136540 0.728862 -0.670907 +vn 0.161627 0.574754 -0.802206 +vn 0.173727 0.464371 -0.868434 +vn 0.114720 0.960858 -0.252174 +vn 0.175173 0.896288 -0.407408 +vn 0.265237 0.729358 -0.630624 +vn 0.315634 0.575351 -0.754550 +vn 0.340542 0.464949 -0.817223 +vn 0.161454 0.960936 -0.224797 +vn 0.250962 0.896490 -0.365135 +vn 0.382814 0.729757 -0.566488 +vn 0.456468 0.575787 -0.678311 +vn 0.493156 0.465399 -0.734984 +vn 0.201901 0.960954 -0.189216 +vn 0.316886 0.896549 -0.309489 +vn 0.485247 0.729911 -0.481420 +vn 0.579208 0.575963 -0.576874 +vn 0.626214 0.465561 -0.625388 +vn 0.234868 0.960920 -0.146523 +vn 0.371002 0.896478 -0.242249 +vn 0.569499 0.729767 -0.378302 +vn 0.680143 0.575805 -0.453711 +vn 0.735624 0.465429 -0.492171 +vn 0.259274 0.960820 -0.097992 +vn 0.411498 0.896276 -0.165403 +vn 0.632687 0.729396 -0.260171 +vn 0.755826 0.575357 -0.312555 +vn 0.817653 0.465002 -0.339436 +vn 0.273875 0.960699 -0.045272 +vn 0.436463 0.896017 -0.081571 +vn 0.671960 0.728884 -0.131143 +vn 0.802835 0.574794 -0.158331 +vn 0.868639 0.464426 -0.172553 +vn 0.888208 0.423935 0.177106 +vn 0.905847 0.423605 0.000050 +vn 0.894774 0.409294 0.178490 +vn 0.912544 0.408978 0.000124 +vn 0.905595 0.383714 0.180724 +vn 0.923580 0.383406 0.000193 +vn 0.920334 0.345298 0.183725 +vn 0.938600 0.345008 0.000252 +vn 0.938131 0.291244 0.187317 +vn 0.956723 0.290999 0.000293 +vn 0.957106 0.217778 0.191105 +vn 0.976041 0.217584 0.000293 +vn 0.973517 0.120483 0.194291 +vn 0.992728 0.120379 0.000211 +vn 0.980128 -0.034895 0.195275 +vn 0.999393 -0.034841 -0.000109 +vn 0.835984 0.424492 0.347760 +vn 0.842168 0.409839 0.350407 +vn 0.852369 0.384234 0.354728 +vn 0.866263 0.345790 0.360579 +vn 0.883059 0.291667 0.367609 +vn 0.900976 0.218108 0.375062 +vn 0.916487 0.120681 0.381428 +vn 0.922797 -0.034927 0.383701 +vn 0.752011 0.424902 0.503922 +vn 0.757558 0.410255 0.507736 +vn 0.766743 0.384630 0.513970 +vn 0.779261 0.346150 0.522430 +vn 0.794387 0.291995 0.532623 +vn 0.810544 0.218372 0.543445 +vn 0.824556 0.120831 0.552727 +vn 0.830313 -0.034952 0.556201 +vn 0.640012 0.425053 0.640090 +vn 0.644727 0.410397 0.644904 +vn 0.652525 0.384778 0.652807 +vn 0.663172 0.346291 0.663540 +vn 0.676056 0.292111 0.676476 +vn 0.689814 0.218470 0.690238 +vn 0.701765 0.120907 0.702073 +vn 0.706756 -0.034954 0.706594 +vn 0.503826 0.424916 0.752068 +vn 0.507513 0.410269 0.757700 +vn 0.513641 0.384643 0.766957 +vn 0.521997 0.346169 0.779542 +vn 0.532114 0.292017 0.794720 +vn 0.542948 0.218386 0.810873 +vn 0.552371 0.120872 0.824788 +vn 0.556387 -0.034904 0.830190 +vn 0.347647 0.424513 0.836020 +vn 0.350162 0.409870 0.842255 +vn 0.354350 0.384268 0.852510 +vn 0.360091 0.345814 0.866457 +vn 0.367048 0.291711 0.883278 +vn 0.374506 0.218158 0.901195 +vn 0.381029 0.120741 0.916645 +vn 0.383910 -0.034850 0.922713 +vn 0.176984 0.423974 0.888213 +vn 0.178227 0.409338 0.894806 +vn 0.180324 0.383754 0.905658 +vn 0.183204 0.345344 0.920420 +vn 0.186718 0.291301 0.938232 +vn 0.190511 0.217836 0.957211 +vn 0.193868 0.120556 0.973592 +vn 0.195502 -0.034799 0.980086 +vn -0.000073 0.423652 0.905825 +vn -0.000146 0.409026 0.912523 +vn -0.000213 0.383454 0.923560 +vn -0.000270 0.345057 0.938582 +vn -0.000308 0.291049 0.956708 +vn -0.000304 0.217636 0.976030 +vn -0.000217 0.120431 0.992722 +vn 0.000112 -0.034789 0.999395 +vn -0.177127 0.423971 0.888186 +vn -0.178511 0.409333 0.894752 +vn -0.180743 0.383751 0.905576 +vn -0.183746 0.345332 0.920317 +vn -0.187337 0.291288 0.938113 +vn -0.191117 0.217819 0.957094 +vn -0.194298 0.120524 0.973510 +vn -0.195273 -0.034854 0.980129 +vn -0.347781 0.424516 0.835963 +vn -0.350429 0.409865 0.842146 +vn -0.354749 0.384260 0.852348 +vn -0.360595 0.345806 0.866250 +vn -0.367624 0.291695 0.883044 +vn -0.375078 0.218139 0.900962 +vn -0.381437 0.120714 0.916479 +vn -0.383699 -0.034898 0.922799 +vn -0.503947 0.424917 0.751986 +vn -0.507759 0.410262 0.757539 +vn -0.513992 0.384645 0.766721 +vn -0.522450 0.346162 0.779242 +vn -0.532636 0.292005 0.794375 +vn -0.543454 0.218382 0.810535 +vn -0.552734 0.120845 0.824549 +vn -0.556201 -0.034928 0.830314 +vn -0.640114 0.425055 0.639986 +vn -0.644927 0.410395 0.644705 +vn -0.652828 0.384778 0.652505 +vn -0.663558 0.346291 0.663154 +vn -0.676491 0.292111 0.676040 +vn -0.690247 0.218474 0.689803 +vn -0.702075 0.120899 0.701765 +vn -0.706591 -0.034949 0.706759 +vn -0.752091 0.424904 0.503801 +vn -0.757723 0.410255 0.507491 +vn -0.766977 0.384632 0.513619 +vn -0.779558 0.346159 0.521980 +vn -0.794734 0.291999 0.532103 +vn -0.810884 0.218380 0.542934 +vn -0.824795 0.120858 0.552365 +vn -0.830187 -0.034927 0.556390 +vn -0.836043 0.424488 0.347624 +vn -0.842277 0.409844 0.350140 +vn -0.852531 0.384242 0.354329 +vn -0.866473 0.345798 0.360068 +vn -0.883294 0.291683 0.367032 +vn -0.901208 0.218122 0.374497 +vn -0.916653 0.120717 0.381018 +vn -0.922711 -0.034884 0.383910 +vn -0.888236 0.423936 0.176963 +vn -0.894827 0.409301 0.178206 +vn -0.905678 0.383715 0.180305 +vn -0.920438 0.345307 0.183187 +vn -0.938247 0.291265 0.186699 +vn -0.957222 0.217797 0.190499 +vn -0.973598 0.120510 0.193865 +vn -0.980084 -0.034841 0.195504 +vn -0.905847 0.423605 -0.000095 +vn -0.912544 0.408978 -0.000167 +vn -0.923580 0.383406 -0.000233 +vn -0.938600 0.345007 -0.000288 +vn -0.956724 0.290998 -0.000324 +vn -0.976039 0.217594 -0.000318 +vn -0.992728 0.120379 -0.000223 +vn -0.999393 -0.034851 0.000115 +vn -0.888208 0.423915 -0.177150 +vn -0.894773 0.409276 -0.178533 +vn -0.905596 0.383694 -0.180763 +vn -0.920334 0.345278 -0.183761 +vn -0.938131 0.291223 -0.187348 +vn -0.957106 0.217758 -0.191128 +vn -0.973515 0.120468 -0.194308 +vn -0.980127 -0.034921 -0.195273 +vn -0.835985 0.424454 -0.347804 +vn -0.842168 0.409802 -0.350451 +vn -0.852368 0.384197 -0.354769 +vn -0.866264 0.345750 -0.360615 +vn -0.883059 0.291629 -0.367639 +vn -0.900976 0.218068 -0.375085 +vn -0.916488 0.120641 -0.381440 +vn -0.922797 -0.034967 -0.383697 +vn -0.752008 0.424851 -0.503970 +vn -0.757561 0.410196 -0.507781 +vn -0.766741 0.384578 -0.514012 +vn -0.779260 0.346093 -0.522468 +vn -0.794387 0.291939 -0.532654 +vn -0.810543 0.218315 -0.543468 +vn -0.824556 0.120772 -0.552740 +vn -0.830313 -0.035010 -0.556197 +vn -0.640012 0.424985 -0.640135 +vn -0.644727 0.410327 -0.644949 +vn -0.652525 0.384709 -0.652848 +vn -0.663172 0.346222 -0.663576 +vn -0.676055 0.292041 -0.676507 +vn -0.689814 0.218401 -0.690259 +vn -0.701768 0.120829 -0.702084 +vn -0.706756 -0.035028 -0.706590 +vn -0.503827 0.424837 -0.752112 +vn -0.507516 0.410186 -0.757743 +vn -0.513641 0.384562 -0.766997 +vn -0.521998 0.346091 -0.779576 +vn -0.532119 0.291929 -0.794750 +vn -0.542945 0.218309 -0.810896 +vn -0.552371 0.120784 -0.824801 +vn -0.556388 -0.035000 -0.830185 +vn -0.347645 0.424427 -0.836065 +vn -0.350161 0.409780 -0.842299 +vn -0.354350 0.384178 -0.852551 +vn -0.360088 0.345731 -0.866491 +vn -0.367048 0.291618 -0.883309 +vn -0.374508 0.218055 -0.901219 +vn -0.381025 0.120649 -0.916659 +vn -0.383908 -0.034952 -0.922710 +vn -0.176984 0.423881 -0.888258 +vn -0.178227 0.409244 -0.894849 +vn -0.180324 0.383659 -0.905698 +vn -0.183204 0.345248 -0.920457 +vn -0.186714 0.291206 -0.938263 +vn -0.190509 0.217731 -0.957235 +vn -0.193867 0.120453 -0.973605 +vn -0.195503 -0.034903 -0.980082 +vn 0.000073 0.423557 -0.905869 +vn 0.000146 0.408930 -0.912566 +vn 0.000213 0.383357 -0.923600 +vn 0.000270 0.344959 -0.938618 +vn 0.000309 0.290948 -0.956739 +vn 0.000304 0.217533 -0.976053 +vn 0.000217 0.120327 -0.992734 +vn -0.000111 -0.034893 -0.999391 +vn 0.177127 0.423877 -0.888231 +vn 0.178511 0.409238 -0.894795 +vn 0.180742 0.383656 -0.905616 +vn 0.183743 0.345240 -0.920352 +vn 0.187333 0.291184 -0.938146 +vn 0.191117 0.217718 -0.957117 +vn 0.194297 0.120421 -0.973523 +vn 0.195273 -0.034957 -0.980126 +vn 0.347783 0.424430 -0.836006 +vn 0.350429 0.409776 -0.842189 +vn 0.354748 0.384171 -0.852389 +vn 0.360597 0.345723 -0.866283 +vn 0.367624 0.291601 -0.883075 +vn 0.375074 0.218041 -0.900987 +vn 0.381434 0.120613 -0.916494 +vn 0.383699 -0.034996 -0.922795 +vn 0.503946 0.424838 -0.752031 +vn 0.507760 0.410187 -0.757580 +vn 0.513992 0.384564 -0.766762 +vn 0.522450 0.346080 -0.779279 +vn 0.532639 0.291926 -0.794402 +vn 0.543457 0.218301 -0.810555 +vn 0.552733 0.120758 -0.824562 +vn 0.556199 -0.035025 -0.830311 +vn 0.640110 0.424983 -0.640037 +vn 0.644925 0.410329 -0.644749 +vn 0.652828 0.384709 -0.652545 +vn 0.663558 0.346222 -0.663190 +vn 0.676491 0.292040 -0.676071 +vn 0.690247 0.218401 -0.689826 +vn 0.702078 0.120829 -0.701775 +vn 0.706592 -0.035028 -0.706754 +vn 0.752089 0.424850 -0.503849 +vn 0.757722 0.410199 -0.507537 +vn 0.766977 0.384576 -0.513662 +vn 0.779558 0.346105 -0.522016 +vn 0.794734 0.291943 -0.532134 +vn 0.810884 0.218323 -0.542957 +vn 0.824795 0.120799 -0.552378 +vn 0.830187 -0.034985 -0.556386 +vn 0.836043 0.424453 -0.347667 +vn 0.842277 0.409806 -0.350182 +vn 0.852531 0.384204 -0.354371 +vn 0.866473 0.345757 -0.360106 +vn 0.883294 0.291645 -0.367063 +vn 0.901207 0.218083 -0.374520 +vn 0.916653 0.120677 -0.381031 +vn 0.922711 -0.034925 -0.383906 +vn 0.888236 0.423918 -0.177006 +vn 0.894828 0.409281 -0.178248 +vn 0.905678 0.383697 -0.180344 +vn 0.920439 0.345286 -0.183222 +vn 0.938247 0.291246 -0.186729 +vn 0.957224 0.217772 -0.190520 +vn 0.973599 0.120494 -0.193874 +vn 0.980084 -0.034861 -0.195501 +vn 0.947377 -0.259270 0.187765 +vn 0.965867 -0.259035 -0.001061 +vn 0.864903 -0.471979 0.170816 +vn 0.881787 -0.471644 -0.001543 +vn 0.770508 -0.619024 0.152074 +vn 0.785643 -0.618679 -0.001456 +vn 0.690835 -0.709995 0.136583 +vn 0.704525 -0.709678 -0.001074 +vn 0.640332 -0.757508 0.127106 +vn 0.653161 -0.757219 -0.000502 +vn 0.637133 -0.760138 0.127484 +vn 0.650089 -0.759858 0.000482 +vn 0.751673 -0.641522 0.153093 +vn 0.767373 -0.641193 0.003169 +vn 0.910544 -0.370393 0.183626 +vn 0.928989 -0.370101 0.002055 +vn 0.892069 -0.259638 0.369868 +vn 0.814334 -0.472536 0.337003 +vn 0.725300 -0.619601 0.300057 +vn 0.650127 -0.710540 0.269199 +vn 0.602432 -0.758012 0.249988 +vn 0.599224 -0.760635 0.249729 +vn 0.706638 -0.642065 0.297347 +vn 0.856677 -0.370877 0.358545 +vn 0.802807 -0.259880 0.536622 +vn 0.732840 -0.472950 0.489146 +vn 0.652612 -0.620038 0.435489 +vn 0.584840 -0.710942 0.390543 +vn 0.541781 -0.758389 0.362381 +vn 0.538697 -0.761001 0.361501 +vn 0.634857 -0.642473 0.429168 +vn 0.770257 -0.371218 0.518558 +vn 0.683551 -0.259959 0.682040 +vn 0.624069 -0.473078 0.621880 +vn 0.555729 -0.620183 0.553659 +vn 0.497937 -0.711085 0.496404 +vn 0.461148 -0.758520 0.460424 +vn 0.458300 -0.761125 0.458966 +vn 0.539543 -0.642611 0.544008 +vn 0.655090 -0.371365 0.657985 +vn 0.538403 -0.259836 0.801628 +vn 0.491742 -0.472924 0.731118 +vn 0.437941 -0.620018 0.650988 +vn 0.392351 -0.710933 0.583639 +vn 0.363240 -0.758379 0.541219 +vn 0.360720 -0.760998 0.539224 +vn 0.423916 -0.642466 0.638383 +vn 0.515140 -0.371225 0.772543 +vn 0.371866 -0.259548 0.891263 +vn 0.339901 -0.472486 0.813157 +vn 0.302798 -0.619573 0.724184 +vn 0.271233 -0.710515 0.649308 +vn 0.250954 -0.757996 0.602049 +vn 0.248865 -0.760616 0.599608 +vn 0.291468 -0.642064 0.709084 +vn 0.354731 -0.370899 0.858254 +vn 0.189886 -0.259182 0.946978 +vn 0.173905 -0.471920 0.864320 +vn 0.155003 -0.618977 0.769962 +vn 0.138752 -0.709963 0.690435 +vn 0.128138 -0.757483 0.640156 +vn 0.126562 -0.760115 0.637344 +vn 0.146833 -0.641494 0.752944 +vn 0.179568 -0.370403 0.911349 +vn 0.001072 -0.258989 0.965880 +vn 0.001568 -0.471598 0.881812 +vn 0.001491 -0.618633 0.785678 +vn 0.001112 -0.709640 0.704563 +vn 0.000542 -0.757184 0.653201 +vn -0.000441 -0.759824 0.650129 +vn -0.003136 -0.641157 0.767404 +vn -0.002036 -0.370058 0.929006 +vn -0.187748 -0.259241 0.947388 +vn -0.170791 -0.471943 0.864928 +vn -0.152045 -0.618984 0.770546 +vn -0.136546 -0.709966 0.690872 +vn -0.127067 -0.757480 0.640373 +vn -0.127444 -0.760110 0.637173 +vn -0.153057 -0.641493 0.751705 +vn -0.183605 -0.370363 0.910560 +vn -0.369854 -0.259610 0.892082 +vn -0.336973 -0.472516 0.814357 +vn -0.300024 -0.619575 0.725336 +vn -0.269162 -0.710520 0.650164 +vn -0.249947 -0.757994 0.602471 +vn -0.249689 -0.760616 0.599265 +vn -0.297313 -0.642043 0.706672 +vn -0.358525 -0.370854 0.856695 +vn -0.536609 -0.259866 0.802821 +vn -0.489121 -0.472937 0.732865 +vn -0.435456 -0.620026 0.652645 +vn -0.390505 -0.710931 0.584878 +vn -0.362341 -0.758380 0.541820 +vn -0.361461 -0.760992 0.538737 +vn -0.429134 -0.642463 0.634890 +vn -0.518540 -0.371204 0.770275 +vn -0.682026 -0.259959 0.683565 +vn -0.621855 -0.473078 0.624094 +vn -0.553626 -0.620183 0.555762 +vn -0.496367 -0.711085 0.497974 +vn -0.460385 -0.758519 0.461188 +vn -0.458926 -0.761125 0.458340 +vn -0.543974 -0.642612 0.539576 +vn -0.657966 -0.371366 0.655109 +vn -0.801615 -0.259850 0.538416 +vn -0.731092 -0.472937 0.491766 +vn -0.650955 -0.620029 0.437973 +vn -0.583602 -0.710943 0.392389 +vn -0.541179 -0.758388 0.363280 +vn -0.539184 -0.761007 0.360761 +vn -0.638349 -0.642477 0.423950 +vn -0.772524 -0.371239 0.515159 +vn -0.891250 -0.259571 0.371882 +vn -0.813128 -0.472516 0.339929 +vn -0.724151 -0.619596 0.302831 +vn -0.649271 -0.710535 0.271271 +vn -0.602009 -0.758015 0.250994 +vn -0.599568 -0.760634 0.248906 +vn -0.709051 -0.642085 0.291502 +vn -0.858235 -0.370925 0.354750 +vn -0.946968 -0.259211 0.189898 +vn -0.864296 -0.471955 0.173930 +vn -0.769923 -0.619017 0.155037 +vn -0.690397 -0.709992 0.138789 +vn -0.640116 -0.757510 0.128178 +vn -0.637304 -0.760142 0.126602 +vn -0.752913 -0.641523 0.146867 +vn -0.911331 -0.370437 0.179588 +vn -0.965868 -0.259034 0.001088 +vn -0.881788 -0.471644 0.001593 +vn -0.785643 -0.618679 0.001522 +vn -0.704526 -0.709677 0.001149 +vn -0.653161 -0.757219 0.000582 +vn -0.650089 -0.759858 -0.000401 +vn -0.767373 -0.641193 -0.003102 +vn -0.928989 -0.370102 -0.002016 +vn -0.947378 -0.259288 -0.187738 +vn -0.864904 -0.471997 -0.170766 +vn -0.770507 -0.619042 -0.152009 +vn -0.690835 -0.710009 -0.136508 +vn -0.640332 -0.757522 -0.127027 +vn -0.637132 -0.760153 -0.127403 +vn -0.751673 -0.641538 -0.153025 +vn -0.910542 -0.370417 -0.183586 +vn -0.892068 -0.259677 -0.369840 +vn -0.814334 -0.472571 -0.336953 +vn -0.725300 -0.619633 -0.299992 +vn -0.650127 -0.710568 -0.269125 +vn -0.602431 -0.758039 -0.249907 +vn -0.599223 -0.760663 -0.249649 +vn -0.706638 -0.642096 -0.297280 +vn -0.856676 -0.370917 -0.358506 +vn -0.802807 -0.259936 -0.536595 +vn -0.732840 -0.473001 -0.489097 +vn -0.652613 -0.620083 -0.435423 +vn -0.584841 -0.710982 -0.390469 +vn -0.541780 -0.758428 -0.362301 +vn -0.538696 -0.761041 -0.361420 +vn -0.634857 -0.642518 -0.429101 +vn -0.770256 -0.371270 -0.518521 +vn -0.683551 -0.260031 -0.682013 +vn -0.624069 -0.473142 -0.621831 +vn -0.555729 -0.620242 -0.553593 +vn -0.497937 -0.711137 -0.496329 +vn -0.461148 -0.758568 -0.460344 +vn -0.458299 -0.761175 -0.458885 +vn -0.539543 -0.642667 -0.543941 +vn -0.655090 -0.371433 -0.657947 +vn -0.538403 -0.259920 -0.801601 +vn -0.491742 -0.473000 -0.731068 +vn -0.437941 -0.620087 -0.650923 +vn -0.392351 -0.710994 -0.583565 +vn -0.363240 -0.758436 -0.541139 +vn -0.360720 -0.761056 -0.539142 +vn -0.423916 -0.642533 -0.638316 +vn -0.515139 -0.371306 -0.772505 +vn -0.371869 -0.259636 -0.891237 +vn -0.339905 -0.472575 -0.813104 +vn -0.302798 -0.619649 -0.724119 +vn -0.271234 -0.710583 -0.649233 +vn -0.250954 -0.758060 -0.601969 +vn -0.248865 -0.760681 -0.599526 +vn -0.291469 -0.642138 -0.709017 +vn -0.354731 -0.370988 -0.858215 +vn -0.189885 -0.259271 -0.946954 +vn -0.173905 -0.472009 -0.864271 +vn -0.155004 -0.619066 -0.769890 +vn -0.138752 -0.710036 -0.690360 +vn -0.128138 -0.757551 -0.640076 +vn -0.126562 -0.760183 -0.637262 +vn -0.146833 -0.641569 -0.752881 +vn -0.179569 -0.370495 -0.911311 +vn -0.001074 -0.259085 -0.965854 +vn -0.001568 -0.471690 -0.881763 +vn -0.001489 -0.618720 -0.785610 +vn -0.001112 -0.709715 -0.704489 +vn -0.000542 -0.757253 -0.653121 +vn 0.000441 -0.759894 -0.650047 +vn 0.003136 -0.641233 -0.767340 +vn 0.002036 -0.370150 -0.928970 +vn 0.187751 -0.259329 -0.947364 +vn 0.170791 -0.472033 -0.864879 +vn 0.152042 -0.619073 -0.770475 +vn 0.136546 -0.710038 -0.690797 +vn 0.127066 -0.757549 -0.640292 +vn 0.127444 -0.760179 -0.637091 +vn 0.153059 -0.641569 -0.751639 +vn 0.183606 -0.370453 -0.910524 +vn 0.369854 -0.259704 -0.892055 +vn 0.336978 -0.472595 -0.814309 +vn 0.300024 -0.619655 -0.725268 +vn 0.269162 -0.710588 -0.650090 +vn 0.249947 -0.758057 -0.602391 +vn 0.249688 -0.760681 -0.599183 +vn 0.297313 -0.642117 -0.706604 +vn 0.358527 -0.370941 -0.856657 +vn 0.536608 -0.259950 -0.802793 +vn 0.489122 -0.473013 -0.732815 +vn 0.435456 -0.620095 -0.652580 +vn 0.390506 -0.710993 -0.584803 +vn 0.362341 -0.758437 -0.541741 +vn 0.361460 -0.761050 -0.538656 +vn 0.429134 -0.642529 -0.634824 +vn 0.518540 -0.371284 -0.770237 +vn 0.682026 -0.260031 -0.683538 +vn 0.621855 -0.473142 -0.624045 +vn 0.553626 -0.620241 -0.555697 +vn 0.496366 -0.711138 -0.497899 +vn 0.460384 -0.758568 -0.461108 +vn 0.458925 -0.761175 -0.458259 +vn 0.543974 -0.642667 -0.539510 +vn 0.657966 -0.371434 -0.655071 +vn 0.801615 -0.259906 -0.538389 +vn 0.731093 -0.472988 -0.491717 +vn 0.650955 -0.620075 -0.437908 +vn 0.583602 -0.710984 -0.392314 +vn 0.541179 -0.758427 -0.363200 +vn 0.539183 -0.761047 -0.360680 +vn 0.638349 -0.642522 -0.423883 +vn 0.772524 -0.371293 -0.515120 +vn 0.891251 -0.259608 -0.371855 +vn 0.813128 -0.472551 -0.339880 +vn 0.724151 -0.619627 -0.302766 +vn 0.649271 -0.710563 -0.271196 +vn 0.602009 -0.758042 -0.250914 +vn 0.599566 -0.760662 -0.248825 +vn 0.709051 -0.642115 -0.291435 +vn 0.858235 -0.370961 -0.354712 +vn 0.946968 -0.259231 -0.189871 +vn 0.864296 -0.471973 -0.173880 +vn 0.769923 -0.619034 -0.154971 +vn 0.690397 -0.710007 -0.138714 +vn 0.640116 -0.757524 -0.128098 +vn 0.637303 -0.760156 -0.126522 +vn 0.752913 -0.641538 -0.146800 +vn 0.911332 -0.370454 -0.179550 +vn 0.964663 -0.209837 0.159355 +vn 0.977248 -0.209679 -0.031962 +vn 0.914551 -0.210214 0.345552 +vn 0.829488 -0.210458 0.517355 +vn 0.713372 -0.210604 0.668391 +vn 0.570377 -0.210515 0.793948 +vn 0.404939 -0.210299 0.889831 +vn 0.222750 -0.209963 0.951997 +vn 0.031973 -0.209627 0.977259 +vn -0.159344 -0.209796 0.964674 +vn -0.345540 -0.210189 0.914562 +vn -0.517346 -0.210444 0.829498 +vn -0.668381 -0.210602 0.713382 +vn -0.793937 -0.210530 0.570387 +vn -0.889819 -0.210326 0.404952 +vn -0.951986 -0.209999 0.222762 +vn -0.977248 -0.209676 0.031985 +vn -0.964663 -0.209856 -0.159331 +vn -0.914549 -0.210260 -0.345529 +vn -0.829487 -0.210516 -0.517334 +vn -0.713371 -0.210672 -0.668371 +vn -0.570377 -0.210601 -0.793925 +vn -0.404938 -0.210392 -0.889809 +vn -0.222750 -0.210063 -0.951975 +vn -0.031972 -0.209731 -0.977236 +vn 0.159342 -0.209898 -0.964652 +vn 0.345541 -0.210284 -0.914539 +vn 0.517346 -0.210529 -0.829476 +vn 0.668380 -0.210677 -0.713360 +vn 0.793936 -0.210590 -0.570366 +vn 0.889820 -0.210366 -0.404928 +vn 0.951986 -0.210021 -0.222739 +vn 0.677217 -0.718515 0.158472 +vn 0.695547 -0.718119 0.022797 +vn 0.530580 -0.841704 0.100097 +vn 0.540210 -0.841513 -0.005481 +vn 0.273421 -0.960509 0.051615 +vn 0.278439 -0.960450 -0.002787 +vn 0.144899 -0.989065 0.027461 +vn 0.147582 -0.989049 -0.001371 +vn 0.078407 -0.996811 0.014863 +vn 0.079856 -0.996806 -0.000737 +vn 0.040266 -0.999160 0.007581 +vn 0.040994 -0.999159 -0.000428 +vn 0.018354 -0.999826 0.003179 +vn 0.018624 -0.999826 -0.000464 +vn 0.000000 -1.000000 0.000052 +vn 0.632536 -0.719047 0.287869 +vn 0.500143 -0.842047 0.202022 +vn 0.257629 -0.960620 0.104099 +vn 0.136498 -0.989098 0.055267 +vn 0.073864 -0.996820 0.029909 +vn 0.037947 -0.999162 0.015310 +vn 0.017357 -0.999827 0.006708 +vn 0.564082 -0.719422 0.405270 +vn 0.450801 -0.842317 0.295434 +vn 0.232133 -0.960707 0.152171 +vn 0.122965 -0.989122 0.080731 +vn 0.066543 -0.996827 0.043688 +vn 0.034201 -0.999164 0.022391 +vn 0.015704 -0.999827 0.009956 +vn 0.474820 -0.719500 0.506819 +vn 0.384860 -0.842408 0.377136 +vn 0.198148 -0.960738 0.194218 +vn 0.104939 -0.989131 0.102995 +vn 0.056792 -0.996829 0.055738 +vn 0.029206 -0.999165 0.028585 +vn 0.013477 -0.999827 0.012807 +vn 0.367606 -0.719305 0.589463 +vn 0.304541 -0.842323 0.444687 +vn 0.156804 -0.960709 0.229021 +vn 0.083023 -0.989122 0.121430 +vn 0.044938 -0.996826 0.065714 +vn 0.023130 -0.999164 0.033717 +vn 0.010753 -0.999827 0.015180 +vn 0.245671 -0.718837 0.650323 +vn 0.212224 -0.842056 0.495885 +vn 0.109295 -0.960624 0.255453 +vn 0.057844 -0.989097 0.135432 +vn 0.031317 -0.996819 0.073295 +vn 0.016145 -0.999162 0.037622 +vn 0.007610 -0.999826 0.017003 +vn 0.113359 -0.718294 0.686443 +vn 0.111002 -0.841701 0.528411 +vn 0.057180 -0.960508 0.272313 +vn 0.030224 -0.989063 0.144367 +vn 0.016374 -0.996808 0.078135 +vn 0.008480 -0.999159 0.040121 +vn 0.004147 -0.999826 0.018194 +vn -0.022759 -0.718075 0.695593 +vn 0.005525 -0.841481 0.540259 +vn 0.002838 -0.960435 0.278489 +vn 0.001423 -0.989041 0.147634 +vn 0.000791 -0.996802 0.079908 +vn 0.000481 -0.999157 0.041047 +vn 0.000516 -0.999825 0.018677 +vn -0.158436 -0.718479 0.677263 +vn -0.100053 -0.841678 0.530629 +vn -0.051564 -0.960497 0.273470 +vn -0.027409 -0.989059 0.144950 +vn -0.014810 -0.996807 0.078460 +vn -0.007528 -0.999159 0.040318 +vn -0.003126 -0.999826 0.018407 +vn -0.287830 -0.719028 0.632576 +vn -0.201979 -0.842030 0.500190 +vn -0.104048 -0.960612 0.257679 +vn -0.055214 -0.989093 0.136550 +vn -0.029856 -0.996817 0.073916 +vn -0.015257 -0.999161 0.037999 +vn -0.006656 -0.999826 0.017409 +vn -0.405232 -0.719412 0.564121 +vn -0.295390 -0.842309 0.450845 +vn -0.152120 -0.960703 0.232183 +vn -0.080679 -0.989120 0.123017 +vn -0.043635 -0.996826 0.066596 +vn -0.022337 -0.999163 0.034254 +vn -0.009903 -0.999827 0.015756 +vn -0.506780 -0.719502 0.474859 +vn -0.377091 -0.842408 0.384904 +vn -0.194168 -0.960737 0.198198 +vn -0.102942 -0.989131 0.104991 +vn -0.055685 -0.996829 0.056845 +vn -0.028533 -0.999165 0.029259 +vn -0.012753 -0.999827 0.013531 +vn -0.589426 -0.719315 0.367645 +vn -0.444642 -0.842331 0.304586 +vn -0.228972 -0.960713 0.156855 +vn -0.121378 -0.989124 0.083075 +vn -0.065661 -0.996827 0.044990 +vn -0.033665 -0.999164 0.023183 +vn -0.015128 -0.999827 0.010807 +vn -0.650284 -0.718859 0.245709 +vn -0.495843 -0.842070 0.212269 +vn -0.255403 -0.960632 0.109346 +vn -0.135380 -0.989101 0.057896 +vn -0.073243 -0.996821 0.031369 +vn -0.037569 -0.999163 0.016198 +vn -0.016951 -0.999827 0.007662 +vn -0.686396 -0.718333 0.113395 +vn -0.528364 -0.841724 0.111046 +vn -0.272263 -0.960519 0.057231 +vn -0.144314 -0.989069 0.030276 +vn -0.078083 -0.996812 0.016426 +vn -0.040068 -0.999161 0.008532 +vn -0.018142 -0.999827 0.004200 +vn -0.695546 -0.718122 -0.022722 +vn -0.540209 -0.841512 0.005570 +vn -0.278439 -0.960450 0.002888 +vn -0.147582 -0.989049 0.001475 +vn -0.079856 -0.996806 0.000844 +vn -0.040994 -0.999159 0.000534 +vn -0.018624 -0.999826 0.000569 +vn -0.677219 -0.718529 -0.158399 +vn -0.530581 -0.841714 -0.100008 +vn -0.273421 -0.960514 -0.051514 +vn -0.144899 -0.989068 -0.027357 +vn -0.078407 -0.996812 -0.014758 +vn -0.040265 -0.999161 -0.007476 +vn -0.018354 -0.999827 -0.003073 +vn -0.632535 -0.719079 -0.287794 +vn -0.500143 -0.842069 -0.201934 +vn -0.257629 -0.960631 -0.103998 +vn -0.136498 -0.989103 -0.055162 +vn -0.073864 -0.996823 -0.029803 +vn -0.037947 -0.999164 -0.015205 +vn -0.017356 -0.999828 -0.006604 +vn -0.564083 -0.719464 -0.405194 +vn -0.450800 -0.842348 -0.295345 +vn -0.232134 -0.960723 -0.152070 +vn -0.122965 -0.989130 -0.080627 +vn -0.066543 -0.996831 -0.043583 +vn -0.034201 -0.999167 -0.022284 +vn -0.015704 -0.999828 -0.009849 +vn -0.474821 -0.719554 -0.506742 +vn -0.384860 -0.842448 -0.377047 +vn -0.198148 -0.960758 -0.194117 +vn -0.104939 -0.989142 -0.102891 +vn -0.056793 -0.996835 -0.055633 +vn -0.029206 -0.999168 -0.028481 +vn -0.013477 -0.999829 -0.012701 +vn -0.367606 -0.719367 -0.589387 +vn -0.304542 -0.842370 -0.444598 +vn -0.156804 -0.960733 -0.228922 +vn -0.083023 -0.989135 -0.121326 +vn -0.044938 -0.996833 -0.065609 +vn -0.023130 -0.999167 -0.033612 +vn -0.010753 -0.999829 -0.015076 +vn -0.245670 -0.718908 -0.650244 +vn -0.212224 -0.842107 -0.495799 +vn -0.109295 -0.960651 -0.255352 +vn -0.057844 -0.989111 -0.135328 +vn -0.031316 -0.996826 -0.073190 +vn -0.016146 -0.999166 -0.037516 +vn -0.007610 -0.999828 -0.016898 +vn -0.113358 -0.718377 -0.686356 +vn -0.111002 -0.841759 -0.528319 +vn -0.057181 -0.960537 -0.272213 +vn -0.030224 -0.989078 -0.144262 +vn -0.016373 -0.996817 -0.078030 +vn -0.008479 -0.999163 -0.040015 +vn -0.004147 -0.999828 -0.018089 +vn 0.022759 -0.718156 -0.695510 +vn -0.005525 -0.841541 -0.540165 +vn -0.002838 -0.960464 -0.278389 +vn -0.001423 -0.989057 -0.147530 +vn -0.000791 -0.996810 -0.079803 +vn -0.000481 -0.999161 -0.040942 +vn -0.000516 -0.999827 -0.018571 +vn 0.158435 -0.718557 -0.677181 +vn 0.100053 -0.841737 -0.530536 +vn 0.051565 -0.960526 -0.273371 +vn 0.027409 -0.989074 -0.144847 +vn 0.014810 -0.996816 -0.078354 +vn 0.007529 -0.999163 -0.040213 +vn 0.003125 -0.999828 -0.018301 +vn 0.287830 -0.719097 -0.632498 +vn 0.201978 -0.842085 -0.500098 +vn 0.104049 -0.960639 -0.257578 +vn 0.055214 -0.989107 -0.136446 +vn 0.029856 -0.996825 -0.073811 +vn 0.015257 -0.999165 -0.037894 +vn 0.006656 -0.999828 -0.017304 +vn 0.405233 -0.719472 -0.564044 +vn 0.295389 -0.842356 -0.450757 +vn 0.152121 -0.960727 -0.232083 +vn 0.080679 -0.989133 -0.122913 +vn 0.043635 -0.996832 -0.066491 +vn 0.022337 -0.999167 -0.034149 +vn 0.009903 -0.999828 -0.015652 +vn 0.506781 -0.719552 -0.474782 +vn 0.377092 -0.842448 -0.384816 +vn 0.194167 -0.960758 -0.198098 +vn 0.102943 -0.989142 -0.104886 +vn 0.055685 -0.996835 -0.056740 +vn 0.028532 -0.999168 -0.029153 +vn 0.012754 -0.999829 -0.013425 +vn 0.589425 -0.719355 -0.367569 +vn 0.444642 -0.842362 -0.304498 +vn 0.228972 -0.960729 -0.156753 +vn 0.121378 -0.989132 -0.082971 +vn 0.065661 -0.996832 -0.044885 +vn 0.033665 -0.999167 -0.023077 +vn 0.015128 -0.999828 -0.010700 +vn 0.650281 -0.718887 -0.245632 +vn 0.495841 -0.842093 -0.212180 +vn 0.255403 -0.960643 -0.109244 +vn 0.135381 -0.989107 -0.057792 +vn 0.073243 -0.996824 -0.031264 +vn 0.037568 -0.999164 -0.016093 +vn 0.016951 -0.999828 -0.007557 +vn 0.686396 -0.718344 -0.113321 +vn 0.528363 -0.841737 -0.110957 +vn 0.272262 -0.960526 -0.057130 +vn 0.144315 -0.989072 -0.030172 +vn 0.078083 -0.996813 -0.016321 +vn 0.040068 -0.999161 -0.008427 +vn 0.018142 -0.999827 -0.004095 +vn 0.475316 0.879191 -0.033128 +vn 0.001783 -0.999464 0.032700 +vn 0.001793 -0.965247 0.261331 +vn 0.007988 -0.975411 0.220247 +vn 0.007979 -0.999968 -0.000097 +vn 0.029459 -0.975197 0.219370 +vn 0.029413 -0.999567 -0.000273 +vn 0.074514 -0.972772 0.219460 +vn 0.074382 -0.997230 -0.000474 +vn 0.158885 -0.961744 0.223168 +vn 0.158866 -0.987300 -0.000550 +vn 0.310920 -0.920814 0.235439 +vn 0.312837 -0.949807 -0.000273 +vn 0.560196 -0.786437 0.260185 +vn 0.572881 -0.819638 0.000330 +vn 0.839028 -0.463925 0.284263 +vn 0.874005 -0.485917 -0.000111 +vn 0.955339 -0.069288 0.287273 +vn 0.997511 -0.070515 -0.000425 +vn 0.001639 -0.832459 0.554084 +vn 0.007382 -0.864765 0.502123 +vn 0.027400 -0.864992 0.501037 +vn 0.069469 -0.861921 0.502261 +vn 0.147369 -0.847177 0.510463 +vn 0.282660 -0.797574 0.532896 +vn 0.488270 -0.659198 0.571884 +vn 0.701177 -0.377918 0.604590 +vn 0.792369 -0.057207 0.607354 +vn 0.001563 -0.760649 0.649162 +vn 0.005184 -0.760811 0.648953 +vn 0.021274 -0.760828 0.648605 +vn 0.053522 -0.666235 0.743819 +vn 0.097050 -0.542554 0.834396 +vn 0.180541 -0.496886 0.848828 +vn 0.296369 -0.393968 0.870031 +vn 0.409704 -0.220686 0.885122 +vn 0.462899 -0.036703 0.885651 +vn -0.000728 0.322723 0.946493 +vn -0.004151 0.323486 0.946224 +vn -0.014363 0.323663 0.946064 +vn -0.034884 0.319071 0.947089 +vn -0.019180 0.062109 0.997885 +vn -0.013157 -0.008301 0.999879 +vn -0.014699 -0.016206 0.999761 +vn -0.009317 -0.019765 0.999761 +vn -0.001174 -0.012693 0.999919 +vn -0.001495 0.634894 0.772598 +vn -0.006622 0.562349 0.826874 +vn -0.023803 0.561936 0.826838 +vn -0.059181 0.555055 0.829706 +vn -0.121937 0.530473 0.838886 +vn -0.219565 0.466904 0.856617 +vn -0.339228 0.340428 0.876945 +vn -0.433225 0.163791 0.886278 +vn -0.465115 0.008328 0.885211 +vn -0.002176 0.893206 0.449643 +vn -0.009797 0.864626 0.502320 +vn -0.036126 0.863806 0.502528 +vn -0.091445 0.856734 0.507586 +vn -0.192620 0.830081 0.523319 +vn -0.358060 0.751194 0.554527 +vn -0.571349 0.568006 0.592393 +vn -0.739665 0.283872 0.610174 +vn -0.794404 0.021656 0.607003 +vn -0.002442 0.983715 0.179720 +vn -0.011067 0.975323 0.220505 +vn -0.041197 0.974466 0.220724 +vn -0.105103 0.968945 0.223829 +vn -0.223980 0.946209 0.233498 +vn -0.423836 0.869641 0.253154 +vn -0.688265 0.670031 0.278118 +vn -0.894896 0.339030 0.290205 +vn -0.957401 0.027548 0.287446 +vn -0.002486 0.999462 -0.032702 +vn -0.011308 0.999936 0.000045 +vn -0.042289 0.999105 0.000065 +vn -0.108225 0.994126 -0.000056 +vn -0.231432 0.972851 -0.000427 +vn -0.440178 0.897910 -0.000918 +vn -0.718601 0.695422 -0.000551 +vn -0.935683 0.352841 0.000648 +vn -0.999571 0.029291 0.000301 +vn -0.002371 0.965259 -0.261283 +vn -0.010806 0.975362 -0.220348 +vn -0.040520 0.974543 -0.220508 +vn -0.103739 0.969088 -0.223843 +vn -0.221384 0.946646 -0.234202 +vn -0.419545 0.871227 -0.254843 +vn -0.683957 0.673965 -0.279238 +vn -0.893723 0.343100 -0.289036 +vn -0.957493 0.030296 -0.286861 +vn -0.001984 0.832464 -0.554075 +vn -0.009115 0.864684 -0.502233 +vn -0.034397 0.863990 -0.502332 +vn -0.088001 0.857227 -0.507363 +vn -0.186261 0.831526 -0.523328 +vn -0.347636 0.755733 -0.554993 +vn -0.559950 0.578771 -0.592857 +vn -0.734778 0.296672 -0.609989 +vn -0.794244 0.030432 -0.606837 +vn -0.001760 0.760632 -0.649181 +vn -0.005933 0.760795 -0.648965 +vn -0.024728 0.760272 -0.649134 +vn -0.062264 0.662558 -0.746419 +vn -0.109982 0.533760 -0.838453 +vn -0.201255 0.476764 -0.855683 +vn -0.318890 0.360739 -0.876457 +vn -0.421524 0.188788 -0.886948 +vn -0.463855 0.025739 -0.885537 +vn -0.062440 0.302587 -0.951074 +vn -0.101145 0.272011 -0.956964 +vn -0.069678 0.119363 -0.990403 +vn 0.008037 0.015049 -0.999854 +vn 0.001159 0.011440 -0.999934 +vn 0.378336 -0.117000 -0.918244 +vn 0.464735 -0.012548 -0.885361 +vn 0.753258 0.007710 -0.657680 +vn 0.001785 -0.995229 -0.097548 +vn 0.010046 -0.995211 -0.097234 +vn 0.034537 -0.994713 -0.096717 +vn 0.084466 -0.991739 -0.096540 +vn 0.177469 -0.979233 -0.098021 +vn 0.345981 -0.932498 -0.103655 +vn 0.622731 -0.773804 -0.115904 +vn 0.908278 -0.398300 -0.128014 +vn 0.989269 -0.067557 -0.129549 +vn 0.942224 0.173810 0.286363 +vn 0.980055 0.197027 0.025946 +vn 0.906108 0.314725 0.282694 +vn 0.945646 0.325196 -0.001291 +vn 0.858393 0.434963 0.271972 +vn 0.894434 0.447193 -0.002629 +vn 0.798718 0.545114 0.254755 +vn 0.829712 0.558180 -0.003677 +vn 0.724398 0.648222 0.234640 +vn 0.749587 0.661894 -0.003986 +vn 0.632943 0.742765 0.218364 +vn 0.652416 0.757854 -0.003225 +vn 0.524026 0.824138 0.214926 +vn 0.538166 0.842838 -0.001152 +vn 0.467561 0.866428 0.175180 +vn 0.782329 0.143944 0.606004 +vn 0.752541 0.266675 0.602134 +vn 0.716682 0.374553 0.588283 +vn 0.674459 0.476781 0.563725 +vn 0.621021 0.575125 0.532508 +vn 0.550807 0.664792 0.504641 +vn 0.461090 0.735987 0.495700 +vn 0.422247 0.790753 0.443191 +vn 0.458383 0.081343 0.885024 +vn 0.440500 0.157205 0.883882 +vn 0.421784 0.226122 0.878048 +vn 0.403217 0.294640 0.866374 +vn 0.380703 0.364498 0.849827 +vn 0.347488 0.430528 0.833005 +vn 0.297646 0.480036 0.825210 +vn 0.297140 0.564757 0.769907 +vn 0.001351 -0.007912 0.999968 +vn 0.001057 -0.008236 0.999966 +vn 0.000333 -0.009622 0.999954 +vn 0.000031 -0.011438 0.999935 +vn 0.000745 -0.012543 0.999921 +vn 0.002777 -0.011146 0.999934 +vn 0.005465 -0.005795 0.999968 +vn 0.051627 0.098812 0.993766 +vn -0.455324 -0.096718 0.885057 +vn -0.433218 -0.179280 0.883279 +vn -0.408042 -0.255211 0.876567 +vn -0.382037 -0.326740 0.864459 +vn -0.353427 -0.393479 0.848683 +vn -0.318803 -0.450640 0.833839 +vn -0.275287 -0.489119 0.827635 +vn -0.219333 -0.431936 0.874828 +vn -0.778917 -0.159117 0.606606 +vn -0.736873 -0.303132 0.604259 +vn -0.681088 -0.430077 0.592581 +vn -0.619182 -0.538897 0.571142 +vn -0.554529 -0.629699 0.544037 +vn -0.488168 -0.701658 0.519006 +vn -0.420540 -0.752721 0.506514 +vn -0.372811 -0.742693 0.556254 +vn -0.938973 -0.189484 0.287099 +vn -0.885683 -0.365618 0.286163 +vn -0.809071 -0.517303 0.278930 +vn -0.721686 -0.639393 0.265229 +vn -0.633097 -0.733207 0.248183 +vn -0.548815 -0.802904 0.232695 +vn -0.471281 -0.852985 0.224299 +vn -0.429740 -0.863533 0.263883 +vn -0.980522 -0.196410 0.000078 +vn -0.924435 -0.381337 0.000965 +vn -0.841685 -0.539965 0.002116 +vn -0.746509 -0.665369 0.002926 +vn -0.650812 -0.759233 0.003080 +vn -0.561608 -0.827400 0.002443 +vn -0.481761 -0.876302 0.001023 +vn -0.443739 -0.895522 0.033718 +vn -0.939734 -0.185941 -0.286927 +vn -0.887674 -0.362290 -0.284221 +vn -0.811830 -0.515269 -0.274645 +vn -0.724356 -0.638886 -0.259100 +vn -0.635015 -0.733773 -0.241522 +vn -0.549725 -0.803823 -0.227313 +vn -0.471226 -0.853559 -0.222222 +vn -0.437015 -0.881160 -0.180485 +vn -0.780707 -0.150456 -0.606515 +vn -0.740729 -0.295103 -0.603518 +vn -0.686243 -0.424276 -0.590813 +vn -0.624479 -0.535897 -0.568190 +vn -0.558938 -0.629048 -0.540266 +vn -0.491008 -0.702141 -0.515664 +vn -0.421607 -0.752804 -0.505503 +vn -0.398274 -0.798456 -0.451493 +vn -0.457936 -0.082823 -0.885119 +vn -0.436665 -0.166017 -0.884173 +vn -0.411199 -0.242738 -0.878632 +vn -0.384790 -0.315190 -0.867521 +vn -0.356192 -0.383386 -0.852140 +vn -0.321974 -0.442806 -0.836813 +vn -0.279143 -0.484344 -0.829150 +vn -0.284632 -0.565293 -0.774228 +vn -0.001231 0.007448 -0.999971 +vn -0.000255 0.006517 -0.999979 +vn 0.001651 0.006711 -0.999976 +vn 0.003309 0.007990 -0.999963 +vn 0.003746 0.009559 -0.999947 +vn 0.001986 0.009596 -0.999952 +vn -0.002157 0.005765 -0.999981 +vn -0.049663 -0.098260 -0.993921 +vn 0.456536 0.092470 -0.884887 +vn 0.439144 0.166804 -0.882796 +vn 0.421163 0.236103 -0.875715 +vn 0.402306 0.305679 -0.862966 +vn 0.377936 0.375963 -0.846059 +vn 0.341517 0.440738 -0.830131 +vn 0.288063 0.486651 -0.824737 +vn 0.224817 0.431951 -0.873427 +vn 0.781331 0.148949 -0.606082 +vn 0.750792 0.269839 -0.602909 +vn 0.713793 0.376991 -0.590235 +vn 0.670173 0.478693 -0.567205 +vn 0.615426 0.576636 -0.537347 +vn 0.544335 0.666388 -0.509534 +vn 0.454210 0.738519 -0.498280 +vn 0.390247 0.738176 -0.550276 +vn 0.933835 0.213685 -0.286862 +vn 0.905291 0.314851 -0.285163 +vn 0.856812 0.434786 -0.277190 +vn 0.796474 0.544823 -0.262293 +vn 0.721674 0.648107 -0.243196 +vn 0.629960 0.743141 -0.225593 +vn 0.520820 0.825435 -0.217725 +vn 0.456575 0.851372 -0.258273 +vn 0.000686 -0.322637 0.946522 +vn 0.003897 -0.323446 0.946239 +vn 0.013468 -0.323971 0.945971 +vn 0.029142 -0.318723 0.947400 +vn 0.000710 -0.322492 0.946572 +vn 0.002352 -0.322662 0.946511 +vn 0.009669 -0.322606 0.946484 +vn 0.025421 -0.319236 0.947334 +vn 0.041200 -0.310575 0.949656 +vn -0.000728 0.322628 -0.946526 +vn -0.004163 0.323358 -0.946268 +vn -0.014477 0.323423 -0.946144 +vn -0.030300 0.317993 -0.947609 +vn 0.000232 -0.113012 -0.993594 +vn 0.000810 -0.000457 -1.000000 +vn 0.001947 -0.000722 -0.999998 +vn 0.003672 -0.000770 -0.999993 +vn 0.041773 -0.156892 -0.986732 +vn 0.119648 -0.265223 -0.956735 +vn 0.169138 -0.204139 -0.964220 +vn 0.001272 -0.634878 -0.772612 +vn 0.005610 -0.562429 -0.826827 +vn 0.020241 -0.562919 -0.826264 +vn 0.050528 -0.559192 -0.827497 +vn 0.105392 -0.542162 -0.833638 +vn 0.195678 -0.491703 -0.848492 +vn 0.318512 -0.375044 -0.870570 +vn 0.471537 -0.253988 -0.844478 +vn 0.001690 -0.893187 -0.449682 +vn 0.007527 -0.864690 -0.502250 +vn 0.027725 -0.864817 -0.501320 +vn 0.070087 -0.861739 -0.502487 +vn 0.148764 -0.847046 -0.510277 +vn 0.286748 -0.796752 -0.531942 +vn 0.499111 -0.651697 -0.571120 +vn 0.713084 -0.353733 -0.605297 +vn 0.828304 -0.086086 -0.553626 +vn 0.001713 -0.940241 -0.340506 +vn 0.005690 -0.940302 -0.340295 +vn 0.023554 -0.940221 -0.339750 +vn 0.062588 -0.938096 -0.340674 +vn 0.136375 -0.928168 -0.346275 +vn 0.269118 -0.892195 -0.362717 +vn 0.489302 -0.777067 -0.395918 +vn 0.755282 -0.493134 -0.431704 +vn 0.929279 -0.055888 -0.365125 +vn 0.986522 0.100169 -0.129389 +vn 0.953627 0.096822 -0.284994 +vn -0.106027 0.993098 0.050151 +vn -0.104360 0.913734 0.392682 +vn -0.227054 0.918683 0.323215 +vn -0.247581 0.968862 -0.003204 +vn -0.500604 0.809913 0.305674 +vn -0.543280 0.839548 -0.002443 +vn -0.738172 0.611760 0.284347 +vn -0.788111 0.615532 -0.001267 +vn -0.859181 0.430191 0.277027 +vn -0.908855 0.417106 0.002320 +vn -0.883747 0.357762 0.301659 +vn -0.940512 0.339678 0.007463 +vn -0.842491 0.408072 0.351690 +vn -0.915901 0.401220 0.012129 +vn -0.731153 0.558098 0.392355 +vn -0.811395 0.584396 0.010893 +vn -0.574898 0.723608 0.381947 +vn -0.638425 0.769683 0.001224 +vn -0.082324 0.687969 0.721056 +vn -0.163649 0.735593 0.657360 +vn -0.360639 0.681303 0.636998 +vn -0.556181 0.560610 0.613497 +vn -0.670121 0.434647 0.601680 +vn -0.685800 0.375761 0.623284 +vn -0.627983 0.397527 0.669036 +vn -0.523307 0.478509 0.705109 +vn -0.411083 0.591465 0.693671 +vn -0.028672 0.337043 0.941052 +vn -0.051426 0.416168 0.907832 +vn -0.117010 0.422795 0.898639 +vn -0.209048 0.401899 0.891502 +vn -0.291355 0.361653 0.885618 +vn -0.326255 0.329855 0.885863 +vn -0.310234 0.322816 0.894173 +vn -0.264574 0.332603 0.905194 +vn -0.213353 0.384050 0.898324 +vn 0.052110 -0.068860 0.996265 +vn 0.092630 0.020212 0.995495 +vn 0.175126 0.074285 0.981740 +vn 0.216550 0.138893 0.966341 +vn 0.191893 0.182726 0.964255 +vn 0.121239 0.191087 0.974057 +vn 0.049575 0.169094 0.984352 +vn 0.006512 0.111456 0.993748 +vn -0.002572 0.086468 0.996251 +vn 0.144082 -0.458276 0.877054 +vn 0.237810 -0.369765 0.898176 +vn 0.433051 -0.269028 0.860285 +vn 0.565425 -0.131688 0.814219 +vn 0.590834 -0.029037 0.806271 +vn 0.522195 0.000961 0.852825 +vn 0.400923 -0.045336 0.914989 +vn 0.281151 -0.177609 0.943085 +vn 0.212192 -0.291567 0.932718 +vn 0.223455 -0.760179 0.610079 +vn 0.351958 -0.676563 0.646830 +vn 0.605832 -0.525249 0.597562 +vn 0.773056 -0.327601 0.543196 +vn 0.824535 -0.192327 0.532121 +vn 0.790783 -0.170360 0.587911 +vn 0.685758 -0.266117 0.677435 +vn 0.519900 -0.469168 0.713852 +vn 0.380425 -0.634338 0.672973 +vn 0.269212 -0.923612 0.272884 +vn 0.415593 -0.851257 0.320380 +vn 0.689511 -0.664265 0.288666 +vn 0.864741 -0.432236 0.255727 +vn 0.926471 -0.283749 0.247263 +vn 0.920045 -0.276527 0.277579 +vn 0.845724 -0.416616 0.333441 +vn 0.659954 -0.660252 0.358509 +vn 0.462126 -0.825866 0.323085 +vn 0.278792 -0.959035 -0.050279 +vn 0.433030 -0.901375 0.002953 +vn 0.710353 -0.703842 0.002468 +vn 0.886550 -0.462632 0.000373 +vn 0.950419 -0.310949 -0.003671 +vn 0.951156 -0.308599 -0.008268 +vn 0.886624 -0.462379 -0.010140 +vn 0.696937 -0.717128 -0.002590 +vn 0.480552 -0.876965 0.001046 +vn 0.256459 -0.885700 -0.386995 +vn 0.414091 -0.854042 -0.314865 +vn 0.688784 -0.667174 -0.283647 +vn 0.864206 -0.433703 -0.255050 +vn 0.924626 -0.282661 -0.255284 +vn 0.916143 -0.272117 -0.294336 +vn 0.842019 -0.408733 -0.352054 +vn 0.661527 -0.656293 -0.362853 +vn 0.464054 -0.825436 -0.321418 +vn 0.197123 -0.671514 -0.714291 +vn 0.345150 -0.681380 -0.645440 +vn 0.601301 -0.532795 -0.595455 +vn 0.770781 -0.332598 -0.543392 +vn 0.820901 -0.191908 -0.537859 +vn 0.785884 -0.164262 -0.596158 +vn 0.685500 -0.255045 -0.681940 +vn 0.528863 -0.459863 -0.713323 +vn 0.386386 -0.629440 -0.674175 +vn 0.111200 -0.329456 -0.937600 +vn 0.222783 -0.372654 -0.900831 +vn 0.419978 -0.279867 -0.863303 +vn 0.559279 -0.142294 -0.816676 +vn 0.589839 -0.033718 -0.806817 +vn 0.528255 0.001777 -0.849084 +vn 0.416152 -0.040627 -0.908387 +vn 0.299851 -0.168687 -0.938954 +vn 0.221446 -0.281471 -0.933668 +vn 0.023152 0.074121 -0.996980 +vn 0.070667 0.019492 -0.997310 +vn 0.151681 0.062319 -0.986463 +vn 0.204238 0.122210 -0.971263 +vn 0.199072 0.169826 -0.965158 +vn 0.145220 0.185122 -0.971926 +vn 0.078457 0.168447 -0.982583 +vn 0.029858 0.117085 -0.992673 +vn 0.008247 0.093518 -0.995583 +vn -0.046332 0.467819 -0.882609 +vn -0.075240 0.413273 -0.907493 +vn -0.143789 0.409202 -0.901043 +vn -0.224630 0.382701 -0.896148 +vn -0.285317 0.347583 -0.893186 +vn -0.304125 0.325345 -0.895354 +vn -0.284172 0.324478 -0.902197 +vn -0.243300 0.339103 -0.908743 +vn -0.202720 0.387829 -0.899163 +vn -0.087039 0.780413 -0.619177 +vn -0.182827 0.729410 -0.659193 +vn -0.380315 0.668056 -0.639580 +vn -0.567399 0.545649 -0.616705 +vn -0.673272 0.425800 -0.604483 +vn -0.684306 0.374605 -0.625616 +vn -0.620774 0.403827 -0.671985 +vn -0.510726 0.490920 -0.705802 +vn -0.402008 0.596820 -0.694403 +vn -0.102139 0.954656 -0.279641 +vn -0.236975 0.914113 -0.328999 +vn -0.509738 0.802401 -0.310355 +vn -0.742954 0.604604 -0.287183 +vn -0.862537 0.425883 -0.273227 +vn -0.888452 0.356308 -0.289306 +vn -0.847178 0.412667 -0.334658 +vn -0.728847 0.570715 -0.378242 +vn -0.569092 0.728973 -0.380438 +vn -0.452274 0.830440 0.325297 +vn -0.498456 0.866910 -0.002818 +vn -0.353551 0.899372 0.257159 +vn -0.388726 0.921338 -0.005364 +vn -0.223213 0.963356 0.148732 +vn -0.240650 0.970555 -0.010497 +vn 0.012405 0.997803 -0.065077 +vn 0.046568 0.998561 -0.026598 +vn 0.366008 0.810303 -0.457653 +vn 0.242926 0.969421 0.034780 +vn 0.650351 -0.220370 -0.726967 +vn 0.778003 -0.551208 -0.301466 +vn 0.641926 -0.576842 -0.505157 +vn 0.689368 -0.712137 -0.132788 +vn 0.599836 -0.706575 -0.375430 +vn 0.645561 -0.759552 0.079577 +vn -0.333037 0.718123 0.611052 +vn -0.263595 0.832227 0.487766 +vn -0.173192 0.940262 0.293107 +vn -0.023758 0.998447 -0.050386 +vn 0.225016 0.784304 -0.578130 +vn 0.409742 0.168455 -0.896512 +vn 0.413188 -0.325215 -0.850595 +vn 0.428421 -0.515324 -0.742224 +vn -0.180712 0.533889 0.826018 +vn -0.149796 0.724188 0.673136 +vn -0.108435 0.903721 0.414161 +vn -0.040877 0.999145 -0.006235 +vn 0.061652 0.838435 -0.541504 +vn 0.151549 0.393653 -0.906681 +vn 0.185815 -0.034452 -0.981981 +vn 0.224647 -0.250663 -0.941648 +vn -0.001506 0.245390 0.969423 +vn -0.009296 0.545623 0.837979 +vn -0.026342 0.845595 0.533175 +vn -0.040573 0.997976 0.048968 +vn -0.036246 0.885149 -0.463895 +vn -0.019304 0.579127 -0.815009 +vn -0.005850 0.259459 -0.965737 +vn 0.030735 0.055902 -0.997963 +vn 0.204933 -0.181777 0.961748 +vn 0.192223 0.210277 0.958558 +vn 0.106713 0.733626 0.671123 +vn -0.020480 0.993428 0.112608 +vn -0.103276 0.924387 -0.367209 +vn -0.143075 0.735286 -0.662483 +vn -0.165102 0.541098 -0.824593 +vn -0.147060 0.387389 -0.910112 +vn 0.369412 -0.611146 0.700025 +vn 0.431497 -0.317833 0.844270 +vn 0.365055 0.495932 0.787900 +vn 0.039346 0.982540 0.181841 +vn -0.152327 0.955833 -0.251357 +vn -0.233196 0.857305 -0.458963 +vn -0.282494 0.766303 -0.577042 +vn -0.287557 0.680140 -0.674330 +vn 0.434576 -0.840976 0.322341 +vn 0.549000 -0.721348 0.422204 +vn 0.776588 0.115917 0.619252 +vn 0.186106 0.960126 0.208619 +vn -0.183748 0.975586 -0.120289 +vn -0.288103 0.930774 -0.225070 +vn -0.347557 0.894716 -0.280512 +vn -0.366822 0.859595 -0.355721 +vn 0.445538 -0.895242 -0.006129 +vn 0.565434 -0.824694 -0.012815 +vn 0.995431 -0.094540 -0.013388 +vn 0.356146 0.932652 0.057615 +vn -0.193662 0.981013 0.010379 +vn -0.306158 0.951969 0.004762 +vn -0.366582 0.930383 0.001994 +vn -0.390734 0.919264 -0.047743 +vn 0.436753 -0.833015 -0.339606 +vn 0.554791 -0.695425 -0.456717 +vn 0.783899 0.085536 -0.614968 +vn 0.280964 0.944166 -0.172073 +vn -0.180203 0.973149 0.143208 +vn -0.288541 0.927350 0.238258 +vn -0.348830 0.891875 0.287884 +vn -0.378693 0.892717 0.244230 +vn 0.369262 -0.593131 -0.715430 +vn 0.429743 -0.290680 -0.854884 +vn 0.405974 0.429319 -0.806765 +vn 0.093380 0.975169 -0.200810 +vn -0.145135 0.951230 0.272207 +vn -0.231561 0.848176 0.476422 +vn -0.282157 0.756803 0.589607 +vn -0.320101 0.759237 0.566652 +vn 0.205773 -0.175616 -0.962713 +vn 0.198765 0.198989 -0.959633 +vn 0.134018 0.697715 -0.703728 +vn 0.005283 0.991329 -0.131295 +vn -0.093193 0.919087 0.382877 +vn -0.138004 0.721069 0.678981 +vn -0.161337 0.525070 0.835627 +vn -0.198654 0.497359 0.844494 +vn 0.003687 0.236750 -0.971564 +vn -0.000526 0.531019 -0.847360 +vn -0.012242 0.832553 -0.553811 +vn -0.023879 0.997864 -0.060799 +vn -0.023080 0.879670 0.475025 +vn -0.011567 0.563682 0.825911 +vn -0.001095 0.244598 0.969624 +vn -0.029170 0.161268 0.986479 +vn -0.175140 0.525847 -0.832353 +vn -0.142623 0.716257 -0.683107 +vn -0.097890 0.898701 -0.427498 +vn -0.023852 0.999714 -0.001815 +vn 0.081625 0.831282 0.549825 +vn 0.160364 0.380236 0.910881 +vn 0.187892 -0.041850 0.981298 +vn 0.159851 -0.166488 0.973000 +vn -0.328462 0.713969 -0.618353 +vn -0.257420 0.828091 -0.497996 +vn -0.162932 0.937585 -0.307224 +vn -0.000526 0.999341 0.036308 +vn 0.263710 0.770912 0.579785 +vn 0.415816 0.157856 0.895644 +vn 0.409166 -0.323133 0.853327 +vn 0.356642 -0.447739 0.819962 +vn -0.449693 0.829139 -0.332123 +vn -0.349621 0.897585 -0.268525 +vn -0.215590 0.961836 -0.168503 +vn 0.036827 0.998957 0.026978 +vn 0.272927 0.885257 0.376604 +vn 0.544289 0.163320 0.822846 +vn 0.598082 -0.564119 0.569270 +vn 0.542654 -0.662532 0.516312 +vn 0.912912 0.166796 -0.372520 +vn 0.912809 0.167894 -0.372278 +vn 0.912809 0.167894 -0.372278 +vn 0.912706 0.168992 -0.372035 +vn 0.912553 0.169030 0.372392 +vn 0.912825 0.167842 0.372264 +vn 0.912825 0.167842 0.372264 +vn 0.913095 0.166655 0.372135 +vn 0.783156 -0.539468 0.309258 +vn 0.777478 -0.551941 0.301478 +vn 0.777478 -0.551941 0.301478 +vn 0.771606 -0.564278 0.293624 +vn 0.000000 1.000000 -0.000053 +vn 0.205012 0.977639 0.046817 +vn 0.210494 0.977577 0.006031 +vn 0.305793 0.950780 0.050086 +vn 0.309936 0.950704 -0.010103 +vn 0.191502 0.977727 0.085887 +vn 0.289530 0.950968 0.108777 +vn 0.170787 0.977791 0.121478 +vn 0.262233 0.951130 0.163053 +vn 0.143780 0.977809 0.152367 +vn 0.225239 0.951204 0.210901 +vn 0.111383 0.977779 0.177602 +vn 0.179884 0.951171 0.250830 +vn 0.074602 0.977707 0.196273 +vn 0.127576 0.951040 0.281509 +vn 0.034790 0.977623 0.207470 +vn 0.070107 0.950854 0.301598 +vn -0.006080 0.977587 0.210443 +vn 0.010053 0.950721 0.309885 +vn -0.046868 0.977647 0.204961 +vn -0.050135 0.950793 0.305745 +vn -0.085937 0.977733 0.191450 +vn -0.108827 0.950977 0.289480 +vn -0.121529 0.977793 0.170737 +vn -0.163103 0.951135 0.262183 +vn -0.152420 0.977809 0.143729 +vn -0.210952 0.951204 0.225189 +vn -0.177653 0.977775 0.111333 +vn -0.250880 0.951167 0.179833 +vn -0.196324 0.977701 0.074551 +vn -0.281559 0.951032 0.127526 +vn -0.207521 0.977613 0.034739 +vn -0.301648 0.950842 0.070057 +vn -0.210494 0.977576 -0.006131 +vn -0.309935 0.950705 0.010004 +vn -0.205013 0.977634 -0.046920 +vn -0.305794 0.950774 -0.050185 +vn -0.191502 0.977718 -0.085988 +vn -0.289531 0.950956 -0.108878 +vn -0.170788 0.977778 -0.121579 +vn -0.262234 0.951113 -0.163151 +vn -0.143780 0.977793 -0.152471 +vn -0.225239 0.951181 -0.211002 +vn -0.111382 0.977760 -0.177706 +vn -0.179884 0.951145 -0.250930 +vn -0.074601 0.977686 -0.196377 +vn -0.127576 0.951010 -0.281610 +vn -0.034792 0.977601 -0.207573 +vn -0.070108 0.950822 -0.301698 +vn 0.006080 0.977565 -0.210545 +vn -0.010055 0.950688 -0.309986 +vn 0.046869 0.977626 -0.205064 +vn 0.050137 0.950761 -0.305843 +vn 0.085937 0.977712 -0.191555 +vn 0.108828 0.950946 -0.289582 +vn 0.121528 0.977775 -0.170840 +vn 0.163103 0.951107 -0.262285 +vn 0.152419 0.977794 -0.143833 +vn 0.210951 0.951180 -0.225291 +vn 0.177654 0.977764 -0.111434 +vn 0.250880 0.951148 -0.179936 +vn 0.196325 0.977693 -0.074652 +vn 0.281560 0.951019 -0.127623 +vn 0.207522 0.977610 -0.034843 +vn 0.301649 0.950834 -0.070159 +vn 0.904021 0.372257 0.210166 +vn 0.927820 0.371813 0.030085 +vn 0.915968 0.372064 0.150236 +vn 0.927820 0.371810 -0.030118 +vn 0.845146 0.372873 0.383006 +vn 0.868601 0.372678 0.326562 +vn 0.753916 0.373313 0.540599 +vn 0.787781 0.373197 0.490026 +vn 0.634137 0.373439 0.677062 +vn 0.677083 0.373436 0.634116 +vn 0.490043 0.373212 0.787763 +vn 0.540626 0.373324 0.753892 +vn 0.326575 0.372701 0.868587 +vn 0.383036 0.372893 0.845124 +vn 0.150245 0.372103 0.915951 +vn 0.210193 0.372290 0.904001 +vn -0.030104 0.371859 0.927801 +vn 0.030099 0.371860 0.927801 +vn -0.210189 0.372290 0.904003 +vn -0.150258 0.372103 0.915949 +vn -0.383024 0.372892 0.845130 +vn -0.326582 0.372700 0.868584 +vn -0.540619 0.373324 0.753897 +vn -0.490043 0.373210 0.787764 +vn -0.677083 0.373436 0.634117 +vn -0.634136 0.373439 0.677063 +vn -0.787781 0.373199 0.490024 +vn -0.753910 0.373313 0.540608 +vn -0.868605 0.372680 0.326551 +vn -0.845142 0.372875 0.383014 +vn -0.915970 0.372064 0.150226 +vn -0.904020 0.372259 0.210170 +vn -0.927820 0.371810 -0.030123 +vn -0.927820 0.371813 0.030079 +vn -0.904021 0.372236 -0.210205 +vn -0.915968 0.372048 -0.150275 +vn -0.845145 0.372835 -0.383045 +vn -0.868601 0.372645 -0.326601 +vn -0.753916 0.373260 -0.540636 +vn -0.787779 0.373150 -0.490064 +vn -0.634136 0.373370 -0.677101 +vn -0.677085 0.373372 -0.634153 +vn -0.490039 0.373135 -0.787802 +vn -0.540623 0.373249 -0.753931 +vn -0.326574 0.372613 -0.868625 +vn -0.383032 0.372812 -0.845161 +vn -0.150248 0.371999 -0.915992 +vn -0.210194 0.372194 -0.904041 +vn 0.030104 0.371754 -0.927843 +vn -0.030099 0.371754 -0.927843 +vn 0.210189 0.372194 -0.904042 +vn 0.150256 0.371999 -0.915991 +vn 0.383025 0.372811 -0.845165 +vn 0.326582 0.372612 -0.868622 +vn 0.540615 0.373249 -0.753936 +vn 0.490043 0.373135 -0.787800 +vn 0.677081 0.373371 -0.634157 +vn 0.634134 0.373369 -0.677104 +vn 0.787781 0.373150 -0.490062 +vn 0.753911 0.373259 -0.540644 +vn 0.868605 0.372645 -0.326592 +vn 0.845141 0.372835 -0.383055 +vn 0.915970 0.372048 -0.150263 +vn 0.904020 0.372236 -0.210210 +vn 0.848541 -0.490953 0.197340 +vn 0.871057 -0.490367 0.028300 +vn 0.797722 -0.582509 0.155959 +vn 0.813154 -0.582045 -0.001996 +vn 0.740404 -0.655851 0.147178 +vn 0.755290 -0.655391 0.000387 +vn 0.835447 -0.523059 0.168635 +vn 0.852587 -0.522578 0.002656 +vn 0.908820 -0.389360 0.149817 +vn 0.920722 -0.389067 -0.029952 +vn 0.793052 -0.491780 0.359474 +vn 0.751201 -0.583337 0.308894 +vn 0.696579 -0.656688 0.289030 +vn 0.785720 -0.523959 0.328801 +vn 0.861458 -0.390246 0.324960 +vn 0.707305 -0.492370 0.507240 +vn 0.675966 -0.583985 0.449480 +vn 0.626224 -0.657349 0.419208 +vn 0.706070 -0.524682 0.475578 +vn 0.781125 -0.391063 0.486737 +vn 0.594914 -0.492520 0.635217 +vn 0.575344 -0.584215 0.572427 +vn 0.532496 -0.657586 0.532943 +vn 0.600042 -0.524947 0.603639 +vn 0.671565 -0.391457 0.629096 +vn 0.459801 -0.492184 0.739147 +vn 0.452919 -0.583961 0.673687 +vn 0.418676 -0.657331 0.626599 +vn 0.471325 -0.524674 0.708921 +vn 0.536740 -0.391300 0.747526 +vn 0.306514 -0.491459 0.815180 +vn 0.312723 -0.583292 0.749650 +vn 0.288413 -0.656657 0.696864 +vn 0.323996 -0.523940 0.787727 +vn 0.380866 -0.390627 0.838064 +vn 0.141060 -0.490635 0.859871 +vn 0.159991 -0.582455 0.796962 +vn 0.146479 -0.655814 0.740575 +vn 0.163449 -0.523033 0.836493 +vn 0.209355 -0.389683 0.896838 +vn -0.028274 -0.490322 0.871082 +vn 0.002027 -0.582002 0.813185 +vn -0.000354 -0.655351 0.755324 +vn -0.002629 -0.522533 0.852615 +vn 0.029978 -0.389015 0.920743 +vn -0.197321 -0.490918 0.848566 +vn -0.155931 -0.582476 0.797751 +vn -0.147144 -0.655820 0.740438 +vn -0.168608 -0.523023 0.835475 +vn -0.149802 -0.389317 0.908841 +vn -0.359449 -0.491758 0.793076 +vn -0.308866 -0.583313 0.751231 +vn -0.288997 -0.656665 0.696614 +vn -0.328774 -0.523936 0.785747 +vn -0.324940 -0.390217 0.861478 +vn -0.507210 -0.492361 0.707332 +vn -0.449445 -0.583973 0.675999 +vn -0.419171 -0.657338 0.626261 +vn -0.475548 -0.524671 0.706098 +vn -0.486718 -0.391052 0.781143 +vn -0.635191 -0.492521 0.594941 +vn -0.572394 -0.584215 0.575376 +vn -0.532909 -0.657586 0.532531 +vn -0.603612 -0.524946 0.600071 +vn -0.629071 -0.391456 0.671589 +vn -0.739121 -0.492196 0.459829 +vn -0.673655 -0.583973 0.452951 +vn -0.626561 -0.657344 0.418712 +vn -0.708897 -0.524684 0.471350 +vn -0.747508 -0.391307 0.536760 +vn -0.815154 -0.491487 0.306537 +vn -0.749621 -0.583314 0.312751 +vn -0.696827 -0.656680 0.288449 +vn -0.787696 -0.523966 0.324027 +vn -0.838048 -0.390647 0.380881 +vn -0.859846 -0.490674 0.141084 +vn -0.796932 -0.582489 0.160018 +vn -0.740543 -0.655844 0.146508 +vn -0.836464 -0.523071 0.163476 +vn -0.896815 -0.389722 0.209380 +vn -0.871057 -0.490370 -0.028248 +vn -0.813154 -0.582044 0.002058 +vn -0.755290 -0.655391 -0.000318 +vn -0.852587 -0.522578 -0.002602 +vn -0.920722 -0.389064 0.029996 +vn -0.848541 -0.490974 -0.197290 +vn -0.797722 -0.582526 -0.155896 +vn -0.740404 -0.655867 -0.147109 +vn -0.835447 -0.523077 -0.168581 +vn -0.908820 -0.389376 -0.149777 +vn -0.793050 -0.491820 -0.359423 +vn -0.751200 -0.583370 -0.308833 +vn -0.696578 -0.656718 -0.288963 +vn -0.785720 -0.523994 -0.328747 +vn -0.861458 -0.390281 -0.324918 +vn -0.707305 -0.492425 -0.507186 +vn -0.675967 -0.584035 -0.449414 +vn -0.626225 -0.657393 -0.419138 +vn -0.706071 -0.524731 -0.475522 +vn -0.781126 -0.391112 -0.486696 +vn -0.594914 -0.492587 -0.635166 +vn -0.575345 -0.584276 -0.572364 +vn -0.532496 -0.657643 -0.532873 +vn -0.600042 -0.525009 -0.603586 +vn -0.671566 -0.391521 -0.629055 +vn -0.459801 -0.492263 -0.739094 +vn -0.452918 -0.584032 -0.673626 +vn -0.418678 -0.657398 -0.626527 +vn -0.471325 -0.524748 -0.708867 +vn -0.536735 -0.391375 -0.747490 +vn -0.306512 -0.491542 -0.815130 +vn -0.312722 -0.583371 -0.749589 +vn -0.288412 -0.656730 -0.696795 +vn -0.324002 -0.524026 -0.787667 +vn -0.380870 -0.390716 -0.838021 +vn -0.141056 -0.490722 -0.859823 +vn -0.159988 -0.582538 -0.796902 +vn -0.146476 -0.655891 -0.740508 +vn -0.163449 -0.523121 -0.836438 +vn -0.209359 -0.389779 -0.896795 +vn 0.028272 -0.490412 -0.871032 +vn -0.002027 -0.582087 -0.813124 +vn 0.000355 -0.655430 -0.755256 +vn 0.002629 -0.522621 -0.852561 +vn -0.029978 -0.389111 -0.920703 +vn 0.197319 -0.491003 -0.848517 +vn 0.155928 -0.582559 -0.797691 +vn 0.147141 -0.655899 -0.740369 +vn 0.168610 -0.523111 -0.835420 +vn 0.149806 -0.389413 -0.908799 +vn 0.359446 -0.491841 -0.793026 +vn 0.308865 -0.583391 -0.751170 +vn 0.288997 -0.656740 -0.696544 +vn 0.328775 -0.524019 -0.785692 +vn 0.324939 -0.390311 -0.861436 +vn 0.507210 -0.492437 -0.707279 +vn 0.449445 -0.584045 -0.675937 +vn 0.419171 -0.657404 -0.626191 +vn 0.475548 -0.524744 -0.706043 +vn 0.486718 -0.391132 -0.781103 +vn 0.635192 -0.492585 -0.594888 +vn 0.572394 -0.584277 -0.575313 +vn 0.532911 -0.657642 -0.532460 +vn 0.603612 -0.525008 -0.600015 +vn 0.629068 -0.391525 -0.671551 +vn 0.739120 -0.492247 -0.459776 +vn 0.673655 -0.584021 -0.452889 +vn 0.626561 -0.657389 -0.418643 +vn 0.708899 -0.524732 -0.471294 +vn 0.747511 -0.391361 -0.536716 +vn 0.815153 -0.491520 -0.306485 +vn 0.749620 -0.583347 -0.312690 +vn 0.696827 -0.656710 -0.288381 +vn 0.787695 -0.524001 -0.323975 +vn 0.838048 -0.390687 -0.380840 +vn 0.859845 -0.490689 -0.141032 +vn 0.796932 -0.582506 -0.159957 +vn 0.740543 -0.655859 -0.146439 +vn 0.836464 -0.523088 -0.163422 +vn 0.896815 -0.389745 -0.209338 +vn 0.859586 0.469826 0.200938 +vn 0.882460 0.469501 0.028850 +vn 0.871033 0.469708 0.143792 +vn 0.882459 0.469503 -0.028851 +vn 0.803363 0.470235 0.365359 +vn 0.825674 0.470138 0.311822 +vn 0.716716 0.470507 0.514725 +vn 0.748790 0.470456 0.466889 +vn 0.603292 0.470592 0.643880 +vn 0.643926 0.470586 0.603248 +vn 0.466885 0.470480 0.748777 +vn 0.514820 0.470522 0.716638 +vn 0.311765 0.470171 0.825676 +vn 0.365478 0.470266 0.803290 +vn 0.143717 0.469748 0.871024 +vn 0.201008 0.469868 0.859546 +vn -0.028874 0.469546 0.882436 +vn 0.028826 0.469551 0.882435 +vn -0.200964 0.469861 0.859561 +vn -0.143817 0.469746 0.871008 +vn -0.365389 0.470261 0.803334 +vn -0.311848 0.470166 0.825648 +vn -0.514750 0.470520 0.716689 +vn -0.466917 0.470474 0.748761 +vn -0.643901 0.470589 0.603273 +vn -0.603269 0.470589 0.643904 +vn -0.748804 0.470463 0.466859 +vn -0.716662 0.470508 0.514799 +vn -0.825702 0.470145 0.311735 +vn -0.803319 0.470242 0.365448 +vn -0.871048 0.469710 0.143694 +vn -0.859571 0.469833 0.200982 +vn -0.882460 0.469499 -0.028898 +vn -0.882459 0.469506 0.028802 +vn -0.859585 0.469805 -0.200990 +vn -0.871033 0.469693 -0.143842 +vn -0.803364 0.470196 -0.365406 +vn -0.825674 0.470105 -0.311872 +vn -0.716716 0.470451 -0.514776 +vn -0.748790 0.470407 -0.466937 +vn -0.603296 0.470522 -0.643928 +vn -0.643928 0.470519 -0.603299 +vn -0.466878 0.470402 -0.748830 +vn -0.514820 0.470445 -0.716688 +vn -0.311767 0.470083 -0.825726 +vn -0.365471 0.470182 -0.803343 +vn -0.143723 0.469651 -0.871075 +vn -0.201015 0.469774 -0.859596 +vn 0.028874 0.469448 -0.882488 +vn -0.028826 0.469452 -0.882487 +vn 0.200970 0.469768 -0.859610 +vn 0.143818 0.469649 -0.871060 +vn 0.365386 0.470176 -0.803385 +vn 0.311850 0.470078 -0.825698 +vn 0.514750 0.470443 -0.716739 +vn 0.466912 0.470395 -0.748813 +vn 0.643900 0.470523 -0.603325 +vn 0.603272 0.470519 -0.643952 +vn 0.748805 0.470414 -0.466906 +vn 0.716662 0.470452 -0.514850 +vn 0.825702 0.470112 -0.311785 +vn 0.803319 0.470203 -0.365496 +vn 0.871048 0.469695 -0.143743 +vn 0.859570 0.469813 -0.201035 +vn 0.418067 0.903142 0.097746 +vn 0.429538 0.902940 0.014007 +vn 0.390299 0.903407 0.177547 +vn 0.347953 0.903588 0.249916 +vn 0.292863 0.903636 0.312528 +vn 0.226774 0.903543 0.363569 +vn 0.151602 0.903329 0.401265 +vn 0.069979 0.903068 0.423759 +vn -0.014055 0.902962 0.429491 +vn -0.097794 0.903158 0.418022 +vn -0.177595 0.903417 0.390253 +vn -0.249963 0.903593 0.347906 +vn -0.312575 0.903634 0.292818 +vn -0.363616 0.903536 0.226730 +vn -0.401311 0.903316 0.151558 +vn -0.423806 0.903049 0.069931 +vn -0.429538 0.902939 -0.014102 +vn -0.418067 0.903132 -0.097845 +vn -0.390297 0.903389 -0.177643 +vn -0.347951 0.903562 -0.250011 +vn -0.292864 0.903603 -0.312622 +vn -0.226774 0.903506 -0.363663 +vn -0.151602 0.903287 -0.401359 +vn -0.069979 0.903023 -0.423854 +vn 0.014054 0.902917 -0.429585 +vn 0.097795 0.903115 -0.418114 +vn 0.177594 0.903377 -0.390346 +vn 0.249964 0.903556 -0.347999 +vn 0.312575 0.903604 -0.292910 +vn 0.363615 0.903514 -0.226820 +vn 0.401311 0.903301 -0.151648 +vn 0.423806 0.903042 -0.070025 +vn 0.335437 0.939901 0.063773 +vn 0.341697 0.939805 -0.002985 +vn 0.209735 0.976920 0.040491 +vn 0.213792 0.976878 -0.001266 +vn 0.160135 0.986595 0.031415 +vn 0.163339 0.986570 -0.000482 +vn 0.150831 0.988100 0.030134 +vn 0.153961 0.988077 0.000073 +vn 0.179088 0.983156 0.036483 +vn 0.182944 0.983123 0.000769 +vn 0.274199 0.959982 0.057009 +vn 0.280315 0.959905 0.002296 +vn 0.346391 0.936348 0.057146 +vn 0.351086 0.936272 -0.011537 +vn 0.315972 0.940074 0.128154 +vn 0.197413 0.976992 0.080719 +vn 0.150624 0.986638 0.062114 +vn 0.141766 0.988138 0.059036 +vn 0.168192 0.983210 0.070783 +vn 0.257319 0.960102 0.109506 +vn 0.327966 0.936537 0.123842 +vn 0.284609 0.940205 0.187113 +vn 0.177672 0.977047 0.117527 +vn 0.135457 0.986671 0.090182 +vn 0.127385 0.988167 0.085439 +vn 0.150990 0.983249 0.102091 +vn 0.230797 0.960188 0.157389 +vn 0.297138 0.936689 0.185264 +vn 0.242822 0.940256 0.238653 +vn 0.151439 0.977068 0.149683 +vn 0.115342 0.986683 0.114686 +vn 0.108347 0.988178 0.108471 +vn 0.128276 0.983264 0.129375 +vn 0.195834 0.960218 0.199073 +vn 0.255430 0.936752 0.239273 +vn 0.192009 0.940218 0.281288 +vn 0.119583 0.977052 0.176266 +vn 0.090946 0.986673 0.134924 +vn 0.085285 0.988169 0.127470 +vn 0.100789 0.983250 0.151856 +vn 0.153563 0.960188 0.233360 +vn 0.204264 0.936725 0.284291 +vn 0.133636 0.940097 0.313624 +vn 0.083018 0.977001 0.196408 +vn 0.062963 0.986644 0.150233 +vn 0.058856 0.988142 0.141812 +vn 0.069317 0.983212 0.168787 +vn 0.105220 0.960099 0.259112 +vn 0.145129 0.936606 0.318914 +vn 0.069633 0.939929 0.334192 +vn 0.042947 0.976933 0.209184 +vn 0.032320 0.986603 0.159906 +vn 0.029939 0.988106 0.150831 +vn 0.034909 0.983162 0.179373 +vn 0.052418 0.959983 0.275109 +vn 0.079930 0.936426 0.341641 +vn 0.002935 0.939824 0.341647 +vn 0.001215 0.976890 0.213740 +vn 0.000431 0.986578 0.163287 +vn -0.000125 0.988085 0.153909 +vn -0.000821 0.983133 0.182892 +vn -0.002347 0.959920 0.280265 +vn 0.011488 0.936291 0.351037 +vn -0.063822 0.939916 0.335388 +vn -0.040543 0.976929 0.209682 +vn -0.031466 0.986602 0.160084 +vn -0.030186 0.988107 0.150779 +vn -0.036535 0.983164 0.179037 +vn -0.057061 0.959993 0.274150 +vn -0.057197 0.936363 0.346341 +vn -0.128203 0.940083 0.315924 +vn -0.080771 0.976998 0.197361 +vn -0.062166 0.986642 0.150572 +vn -0.059088 0.988142 0.141714 +vn -0.070834 0.983215 0.168140 +vn -0.109557 0.960108 0.257273 +vn -0.123895 0.936545 0.327924 +vn -0.187162 0.940211 0.284560 +vn -0.117579 0.977050 0.177621 +vn -0.090234 0.986673 0.135404 +vn -0.085491 0.988169 0.127332 +vn -0.102142 0.983252 0.150938 +vn -0.157440 0.960192 0.230747 +vn -0.185313 0.936693 0.297093 +vn -0.238702 0.940257 0.242772 +vn -0.149734 0.977068 0.151388 +vn -0.114738 0.986683 0.115289 +vn -0.108523 0.988178 0.108295 +vn -0.129427 0.983264 0.128224 +vn -0.199123 0.960218 0.195784 +vn -0.239322 0.936752 0.255381 +vn -0.281337 0.940213 0.191959 +vn -0.176318 0.977049 0.119532 +vn -0.134976 0.986671 0.090893 +vn -0.127522 0.988167 0.085233 +vn -0.151908 0.983248 0.100737 +vn -0.233408 0.960185 0.153512 +vn -0.284339 0.936721 0.204216 +vn -0.313673 0.940087 0.133587 +vn -0.196460 0.976996 0.082966 +vn -0.150285 0.986639 0.062911 +vn -0.141864 0.988138 0.058804 +vn -0.168838 0.983207 0.069265 +vn -0.259158 0.960092 0.105166 +vn -0.318954 0.936601 0.145076 +vn -0.334241 0.939915 0.069584 +vn -0.209236 0.976924 0.042896 +vn -0.159958 0.986596 0.032268 +vn -0.150883 0.988100 0.029887 +vn -0.179425 0.983154 0.034857 +vn -0.275159 0.959971 0.052367 +vn -0.341686 0.936413 0.079877 +vn -0.341697 0.939806 0.002886 +vn -0.213792 0.976879 0.001164 +vn -0.163339 0.986570 0.000379 +vn -0.153961 0.988077 -0.000178 +vn -0.182944 0.983123 -0.000873 +vn -0.280315 0.959905 -0.002397 +vn -0.351086 0.936273 0.011439 +vn -0.335438 0.939895 -0.063871 +vn -0.209734 0.976915 -0.040594 +vn -0.160136 0.986592 -0.031518 +vn -0.150831 0.988097 -0.030238 +vn -0.179088 0.983152 -0.036587 +vn -0.274198 0.959976 -0.057110 +vn -0.346391 0.936342 -0.057244 +vn -0.315972 0.940060 -0.128253 +vn -0.197413 0.976983 -0.080823 +vn -0.150624 0.986631 -0.062217 +vn -0.141766 0.988132 -0.059140 +vn -0.168192 0.983202 -0.070886 +vn -0.257319 0.960090 -0.109607 +vn -0.327965 0.936524 -0.123940 +vn -0.284608 0.940186 -0.187211 +vn -0.177672 0.977034 -0.117631 +vn -0.135457 0.986661 -0.090286 +vn -0.127385 0.988158 -0.085543 +vn -0.150989 0.983239 -0.102194 +vn -0.230797 0.960172 -0.157490 +vn -0.297138 0.936670 -0.185363 +vn -0.242821 0.940232 -0.238752 +vn -0.151438 0.977052 -0.149787 +vn -0.115342 0.986671 -0.114790 +vn -0.108347 0.988166 -0.108575 +vn -0.128276 0.983250 -0.129478 +vn -0.195834 0.960197 -0.199174 +vn -0.255431 0.936727 -0.239371 +vn -0.192010 0.940188 -0.281386 +vn -0.119584 0.977033 -0.176369 +vn -0.090945 0.986659 -0.135027 +vn -0.085286 0.988155 -0.127574 +vn -0.100789 0.983234 -0.151960 +vn -0.153563 0.960164 -0.233459 +vn -0.204266 0.936696 -0.284388 +vn -0.133635 0.940064 -0.313722 +vn -0.083018 0.976981 -0.196511 +vn -0.062962 0.986628 -0.150336 +vn -0.058855 0.988127 -0.141916 +vn -0.069318 0.983194 -0.168890 +vn -0.105217 0.960073 -0.259209 +vn -0.145126 0.936576 -0.319004 +vn -0.069633 0.939894 -0.334291 +vn -0.042948 0.976910 -0.209288 +vn -0.032320 0.986586 -0.160010 +vn -0.029937 0.988090 -0.150935 +vn -0.034908 0.983143 -0.179477 +vn -0.052417 0.959954 -0.275210 +vn -0.079926 0.936391 -0.341736 +vn -0.002935 0.939788 -0.341747 +vn -0.001215 0.976867 -0.213843 +vn -0.000431 0.986561 -0.163391 +vn 0.000125 0.988069 -0.154013 +vn 0.000821 0.983114 -0.182995 +vn 0.002347 0.959890 -0.280366 +vn -0.011488 0.936254 -0.351136 +vn 0.063822 0.939881 -0.335486 +vn 0.040542 0.976906 -0.209787 +vn 0.031466 0.986585 -0.160187 +vn 0.030184 0.988090 -0.150885 +vn 0.036534 0.983145 -0.179140 +vn 0.057059 0.959964 -0.274249 +vn 0.057195 0.936327 -0.346441 +vn 0.128204 0.940050 -0.316020 +vn 0.080771 0.976977 -0.197465 +vn 0.062166 0.986627 -0.150675 +vn 0.059087 0.988128 -0.141818 +vn 0.070834 0.983197 -0.168246 +vn 0.109556 0.960083 -0.257369 +vn 0.123891 0.936513 -0.328015 +vn 0.187162 0.940181 -0.284658 +vn 0.117579 0.977031 -0.177723 +vn 0.090234 0.986659 -0.135508 +vn 0.085492 0.988155 -0.127436 +vn 0.102144 0.983236 -0.151042 +vn 0.157440 0.960168 -0.230847 +vn 0.185313 0.936664 -0.297187 +vn 0.238702 0.940231 -0.242872 +vn 0.149734 0.977052 -0.151491 +vn 0.114737 0.986671 -0.115394 +vn 0.108523 0.988166 -0.108399 +vn 0.129427 0.983250 -0.128328 +vn 0.199123 0.960198 -0.195884 +vn 0.239322 0.936726 -0.255480 +vn 0.281336 0.940193 -0.192059 +vn 0.176317 0.977036 -0.119634 +vn 0.134976 0.986661 -0.090998 +vn 0.127522 0.988158 -0.085336 +vn 0.151908 0.983237 -0.100841 +vn 0.233408 0.960169 -0.153613 +vn 0.284339 0.936700 -0.204315 +vn 0.313673 0.940073 -0.133685 +vn 0.196460 0.976987 -0.083070 +vn 0.150285 0.986632 -0.063015 +vn 0.141864 0.988132 -0.058908 +vn 0.168838 0.983200 -0.069369 +vn 0.259158 0.960081 -0.105267 +vn 0.318954 0.936586 -0.145174 +vn 0.334241 0.939908 -0.069682 +vn 0.209236 0.976919 -0.042999 +vn 0.159958 0.986593 -0.032372 +vn 0.150883 0.988097 -0.029991 +vn 0.179424 0.983150 -0.034960 +vn 0.275159 0.959966 -0.052468 +vn 0.341686 0.936405 -0.079975 +vn 0.765973 0.617400 0.179171 +vn 0.786598 0.616930 0.025703 +vn 0.776300 0.617195 0.128179 +vn 0.786597 0.616928 -0.025773 +vn 0.715610 0.617965 0.325611 +vn 0.735613 0.617783 0.277883 +vn 0.638261 0.618382 0.458505 +vn 0.666914 0.618256 0.415916 +vn 0.537271 0.618506 0.573402 +vn 0.573431 0.618504 0.537242 +vn 0.415942 0.618285 0.666870 +vn 0.458540 0.618390 0.638228 +vn 0.277903 0.617840 0.735557 +vn 0.325634 0.618018 0.715553 +vn 0.128211 0.617229 0.776267 +vn 0.179200 0.617450 0.765926 +vn -0.025735 0.616973 0.786564 +vn 0.025740 0.616972 0.786564 +vn -0.179205 0.617450 0.765925 +vn -0.128212 0.617230 0.776266 +vn -0.325634 0.618017 0.715554 +vn -0.277910 0.617840 0.735554 +vn -0.458533 0.618391 0.638232 +vn -0.415938 0.618284 0.666873 +vn -0.573435 0.618504 0.537239 +vn -0.537274 0.618507 0.573399 +vn -0.666912 0.618255 0.415920 +vn -0.638260 0.618381 0.458508 +vn -0.735613 0.617783 0.277880 +vn -0.715608 0.617963 0.325617 +vn -0.776300 0.617195 0.128173 +vn -0.765972 0.617402 0.179166 +vn -0.786597 0.616928 -0.025768 +vn -0.786597 0.616931 0.025708 +vn -0.765972 0.617383 -0.179236 +vn -0.776299 0.617181 -0.128244 +vn -0.715610 0.617929 -0.325676 +vn -0.735612 0.617754 -0.277947 +vn -0.638262 0.618332 -0.458570 +vn -0.666914 0.618211 -0.415981 +vn -0.537272 0.618444 -0.573468 +vn -0.573432 0.618447 -0.537307 +vn -0.415953 0.618199 -0.666944 +vn -0.458540 0.618322 -0.638293 +vn -0.277913 0.617729 -0.735646 +vn -0.325649 0.617909 -0.715640 +vn -0.128205 0.617146 -0.776334 +vn -0.179199 0.617352 -0.766006 +vn 0.025735 0.616888 -0.786630 +vn -0.025740 0.616888 -0.786630 +vn 0.179204 0.617351 -0.766005 +vn 0.128211 0.617147 -0.776332 +vn 0.325643 0.617909 -0.715643 +vn 0.277915 0.617729 -0.735645 +vn 0.458538 0.618323 -0.638295 +vn 0.415949 0.618198 -0.666947 +vn 0.573436 0.618446 -0.537304 +vn 0.537275 0.618445 -0.573464 +vn 0.666911 0.618212 -0.415985 +vn 0.638261 0.618332 -0.458572 +vn 0.735612 0.617755 -0.277945 +vn 0.715607 0.617930 -0.325681 +vn 0.776301 0.617181 -0.128238 +vn 0.765972 0.617384 -0.179231 +# 2081 vertices + +# 0 vertex parms + +# 0 texture vertices + +# 2443 normals + +g Teapot01 +s 1 +f 1//65 2//66 3//67 +f 3//67 4//68 1//65 +f 4//68 3//67 5//69 +f 5//69 6//70 4//68 +f 6//70 5//69 7//71 +f 7//71 8//72 6//70 +s 2 +f 8//194 7//193 9//195 +f 9//195 10//196 8//194 +s 3 +f 10//258 9//257 11//259 +f 11//259 12//260 10//258 +f 12//260 11//259 13//261 +f 13//261 14//262 12//260 +f 14//262 13//261 15//263 +f 15//263 16//264 14//262 +f 16//264 15//263 17//265 +f 17//265 18//266 16//264 +s 1 +f 2//66 19//73 20//74 +f 20//74 3//67 2//66 +f 3//67 20//74 21//75 +f 21//75 5//69 3//67 +f 5//69 21//75 22//76 +f 22//76 7//71 5//69 +s 2 +f 7//193 22//197 23//198 +f 23//198 9//195 7//193 +s 3 +f 9//257 23//267 24//268 +f 24//268 11//259 9//257 +f 11//259 24//268 25//269 +f 25//269 13//261 11//259 +f 13//261 25//269 26//270 +f 26//270 15//263 13//261 +f 15//263 26//270 27//271 +f 27//271 17//265 15//263 +s 1 +f 19//73 28//77 29//78 +f 29//78 20//74 19//73 +f 20//74 29//78 30//79 +f 30//79 21//75 20//74 +f 21//75 30//79 31//80 +f 31//80 22//76 21//75 +s 2 +f 22//197 31//199 32//200 +f 32//200 23//198 22//197 +s 3 +f 23//267 32//272 33//273 +f 33//273 24//268 23//267 +f 24//268 33//273 34//274 +f 34//274 25//269 24//268 +f 25//269 34//274 35//275 +f 35//275 26//270 25//269 +f 26//270 35//275 36//276 +f 36//276 27//271 26//270 +s 1 +f 28//77 37//81 38//82 +f 38//82 29//78 28//77 +f 29//78 38//82 39//83 +f 39//83 30//79 29//78 +f 30//79 39//83 40//84 +f 40//84 31//80 30//79 +s 2 +f 31//199 40//201 41//202 +f 41//202 32//200 31//199 +s 3 +f 32//272 41//277 42//278 +f 42//278 33//273 32//272 +f 33//273 42//278 43//279 +f 43//279 34//274 33//273 +f 34//274 43//279 44//280 +f 44//280 35//275 34//274 +f 35//275 44//280 45//281 +f 45//281 36//276 35//275 +s 1 +f 37//81 46//85 47//86 +f 47//86 38//82 37//81 +f 38//82 47//86 48//87 +f 48//87 39//83 38//82 +f 39//83 48//87 49//88 +f 49//88 40//84 39//83 +s 2 +f 40//201 49//203 50//204 +f 50//204 41//202 40//201 +s 3 +f 41//277 50//282 51//283 +f 51//283 42//278 41//277 +f 42//278 51//283 52//284 +f 52//284 43//279 42//278 +f 43//279 52//284 53//285 +f 53//285 44//280 43//279 +f 44//280 53//285 54//286 +f 54//286 45//281 44//280 +s 1 +f 46//85 55//89 56//90 +f 56//90 47//86 46//85 +f 47//86 56//90 57//91 +f 57//91 48//87 47//86 +f 48//87 57//91 58//92 +f 58//92 49//88 48//87 +s 2 +f 49//203 58//205 59//206 +f 59//206 50//204 49//203 +s 3 +f 50//282 59//287 60//288 +f 60//288 51//283 50//282 +f 51//283 60//288 61//289 +f 61//289 52//284 51//283 +f 52//284 61//289 62//290 +f 62//290 53//285 52//284 +f 53//285 62//290 63//291 +f 63//291 54//286 53//285 +s 1 +f 55//89 64//93 65//94 +f 65//94 56//90 55//89 +f 56//90 65//94 66//95 +f 66//95 57//91 56//90 +f 57//91 66//95 67//96 +f 67//96 58//92 57//91 +s 2 +f 58//205 67//207 68//208 +f 68//208 59//206 58//205 +s 3 +f 59//287 68//292 69//293 +f 69//293 60//288 59//287 +f 60//288 69//293 70//294 +f 70//294 61//289 60//288 +f 61//289 70//294 71//295 +f 71//295 62//290 61//289 +f 62//290 71//295 72//296 +f 72//296 63//291 62//290 +s 1 +f 64//93 73//97 74//98 +f 74//98 65//94 64//93 +f 65//94 74//98 75//99 +f 75//99 66//95 65//94 +f 66//95 75//99 76//100 +f 76//100 67//96 66//95 +s 2 +f 67//207 76//209 77//210 +f 77//210 68//208 67//207 +s 3 +f 68//292 77//297 78//298 +f 78//298 69//293 68//292 +f 69//293 78//298 79//299 +f 79//299 70//294 69//293 +f 70//294 79//299 80//300 +f 80//300 71//295 70//294 +f 71//295 80//300 81//301 +f 81//301 72//296 71//295 +s 1 +f 73//97 82//101 83//102 +f 83//102 74//98 73//97 +f 74//98 83//102 84//103 +f 84//103 75//99 74//98 +f 75//99 84//103 85//104 +f 85//104 76//100 75//99 +s 2 +f 76//209 85//211 86//212 +f 86//212 77//210 76//209 +s 3 +f 77//297 86//302 87//303 +f 87//303 78//298 77//297 +f 78//298 87//303 88//304 +f 88//304 79//299 78//298 +f 79//299 88//304 89//305 +f 89//305 80//300 79//299 +f 80//300 89//305 90//306 +f 90//306 81//301 80//300 +s 1 +f 82//101 91//105 92//106 +f 92//106 83//102 82//101 +f 83//102 92//106 93//107 +f 93//107 84//103 83//102 +f 84//103 93//107 94//108 +f 94//108 85//104 84//103 +s 2 +f 85//211 94//213 95//214 +f 95//214 86//212 85//211 +s 3 +f 86//302 95//307 96//308 +f 96//308 87//303 86//302 +f 87//303 96//308 97//309 +f 97//309 88//304 87//303 +f 88//304 97//309 98//310 +f 98//310 89//305 88//304 +f 89//305 98//310 99//311 +f 99//311 90//306 89//305 +s 1 +f 91//105 100//109 101//110 +f 101//110 92//106 91//105 +f 92//106 101//110 102//111 +f 102//111 93//107 92//106 +f 93//107 102//111 103//112 +f 103//112 94//108 93//107 +s 2 +f 94//213 103//215 104//216 +f 104//216 95//214 94//213 +s 3 +f 95//307 104//312 105//313 +f 105//313 96//308 95//307 +f 96//308 105//313 106//314 +f 106//314 97//309 96//308 +f 97//309 106//314 107//315 +f 107//315 98//310 97//309 +f 98//310 107//315 108//316 +f 108//316 99//311 98//310 +s 1 +f 100//109 109//113 110//114 +f 110//114 101//110 100//109 +f 101//110 110//114 111//115 +f 111//115 102//111 101//110 +f 102//111 111//115 112//116 +f 112//116 103//112 102//111 +s 2 +f 103//215 112//217 113//218 +f 113//218 104//216 103//215 +s 3 +f 104//312 113//317 114//318 +f 114//318 105//313 104//312 +f 105//313 114//318 115//319 +f 115//319 106//314 105//313 +f 106//314 115//319 116//320 +f 116//320 107//315 106//314 +f 107//315 116//320 117//321 +f 117//321 108//316 107//315 +s 1 +f 109//113 118//117 119//118 +f 119//118 110//114 109//113 +f 110//114 119//118 120//119 +f 120//119 111//115 110//114 +f 111//115 120//119 121//120 +f 121//120 112//116 111//115 +s 2 +f 112//217 121//219 122//220 +f 122//220 113//218 112//217 +s 3 +f 113//317 122//322 123//323 +f 123//323 114//318 113//317 +f 114//318 123//323 124//324 +f 124//324 115//319 114//318 +f 115//319 124//324 125//325 +f 125//325 116//320 115//319 +f 116//320 125//325 126//326 +f 126//326 117//321 116//320 +s 1 +f 118//117 127//121 128//122 +f 128//122 119//118 118//117 +f 119//118 128//122 129//123 +f 129//123 120//119 119//118 +f 120//119 129//123 130//124 +f 130//124 121//120 120//119 +s 2 +f 121//219 130//221 131//222 +f 131//222 122//220 121//219 +s 3 +f 122//322 131//327 132//328 +f 132//328 123//323 122//322 +f 123//323 132//328 133//329 +f 133//329 124//324 123//323 +f 124//324 133//329 134//330 +f 134//330 125//325 124//324 +f 125//325 134//330 135//331 +f 135//331 126//326 125//325 +s 1 +f 127//121 136//125 137//126 +f 137//126 128//122 127//121 +f 128//122 137//126 138//127 +f 138//127 129//123 128//122 +f 129//123 138//127 139//128 +f 139//128 130//124 129//123 +s 2 +f 130//221 139//223 140//224 +f 140//224 131//222 130//221 +s 3 +f 131//327 140//332 141//333 +f 141//333 132//328 131//327 +f 132//328 141//333 142//334 +f 142//334 133//329 132//328 +f 133//329 142//334 143//335 +f 143//335 134//330 133//329 +f 134//330 143//335 144//336 +f 144//336 135//331 134//330 +s 1 +f 136//125 145//129 146//130 +f 146//130 137//126 136//125 +f 137//126 146//130 147//131 +f 147//131 138//127 137//126 +f 138//127 147//131 148//132 +f 148//132 139//128 138//127 +s 2 +f 139//223 148//225 149//226 +f 149//226 140//224 139//223 +s 3 +f 140//332 149//337 150//338 +f 150//338 141//333 140//332 +f 141//333 150//338 151//339 +f 151//339 142//334 141//333 +f 142//334 151//339 152//340 +f 152//340 143//335 142//334 +f 143//335 152//340 153//341 +f 153//341 144//336 143//335 +s 1 +f 145//129 154//133 155//134 +f 155//134 146//130 145//129 +f 146//130 155//134 156//135 +f 156//135 147//131 146//130 +f 147//131 156//135 157//136 +f 157//136 148//132 147//131 +s 2 +f 148//225 157//227 158//228 +f 158//228 149//226 148//225 +s 3 +f 149//337 158//342 159//343 +f 159//343 150//338 149//337 +f 150//338 159//343 160//344 +f 160//344 151//339 150//338 +f 151//339 160//344 161//345 +f 161//345 152//340 151//339 +f 152//340 161//345 162//346 +f 162//346 153//341 152//340 +s 1 +f 154//133 163//137 164//138 +f 164//138 155//134 154//133 +f 155//134 164//138 165//139 +f 165//139 156//135 155//134 +f 156//135 165//139 166//140 +f 166//140 157//136 156//135 +s 2 +f 157//227 166//229 167//230 +f 167//230 158//228 157//227 +s 3 +f 158//342 167//347 168//348 +f 168//348 159//343 158//342 +f 159//343 168//348 169//349 +f 169//349 160//344 159//343 +f 160//344 169//349 170//350 +f 170//350 161//345 160//344 +f 161//345 170//350 171//351 +f 171//351 162//346 161//345 +s 1 +f 163//137 172//141 173//142 +f 173//142 164//138 163//137 +f 164//138 173//142 174//143 +f 174//143 165//139 164//138 +f 165//139 174//143 175//144 +f 175//144 166//140 165//139 +s 2 +f 166//229 175//231 176//232 +f 176//232 167//230 166//229 +s 3 +f 167//347 176//352 177//353 +f 177//353 168//348 167//347 +f 168//348 177//353 178//354 +f 178//354 169//349 168//348 +f 169//349 178//354 179//355 +f 179//355 170//350 169//349 +f 170//350 179//355 180//356 +f 180//356 171//351 170//350 +s 1 +f 172//141 181//145 182//146 +f 182//146 173//142 172//141 +f 173//142 182//146 183//147 +f 183//147 174//143 173//142 +f 174//143 183//147 184//148 +f 184//148 175//144 174//143 +s 2 +f 175//231 184//233 185//234 +f 185//234 176//232 175//231 +s 3 +f 176//352 185//357 186//358 +f 186//358 177//353 176//352 +f 177//353 186//358 187//359 +f 187//359 178//354 177//353 +f 178//354 187//359 188//360 +f 188//360 179//355 178//354 +f 179//355 188//360 189//361 +f 189//361 180//356 179//355 +s 1 +f 181//145 190//149 191//150 +f 191//150 182//146 181//145 +f 182//146 191//150 192//151 +f 192//151 183//147 182//146 +f 183//147 192//151 193//152 +f 193//152 184//148 183//147 +s 2 +f 184//233 193//235 194//236 +f 194//236 185//234 184//233 +s 3 +f 185//357 194//362 195//363 +f 195//363 186//358 185//357 +f 186//358 195//363 196//364 +f 196//364 187//359 186//358 +f 187//359 196//364 197//365 +f 197//365 188//360 187//359 +f 188//360 197//365 198//366 +f 198//366 189//361 188//360 +s 1 +f 190//149 199//153 200//154 +f 200//154 191//150 190//149 +f 191//150 200//154 201//155 +f 201//155 192//151 191//150 +f 192//151 201//155 202//156 +f 202//156 193//152 192//151 +s 2 +f 193//235 202//237 203//238 +f 203//238 194//236 193//235 +s 3 +f 194//362 203//367 204//368 +f 204//368 195//363 194//362 +f 195//363 204//368 205//369 +f 205//369 196//364 195//363 +f 196//364 205//369 206//370 +f 206//370 197//365 196//364 +f 197//365 206//370 207//371 +f 207//371 198//366 197//365 +s 1 +f 199//153 208//157 209//158 +f 209//158 200//154 199//153 +f 200//154 209//158 210//159 +f 210//159 201//155 200//154 +f 201//155 210//159 211//160 +f 211//160 202//156 201//155 +s 2 +f 202//237 211//239 212//240 +f 212//240 203//238 202//237 +s 3 +f 203//367 212//372 213//373 +f 213//373 204//368 203//367 +f 204//368 213//373 214//374 +f 214//374 205//369 204//368 +f 205//369 214//374 215//375 +f 215//375 206//370 205//369 +f 206//370 215//375 216//376 +f 216//376 207//371 206//370 +s 1 +f 208//157 217//161 218//162 +f 218//162 209//158 208//157 +f 209//158 218//162 219//163 +f 219//163 210//159 209//158 +f 210//159 219//163 220//164 +f 220//164 211//160 210//159 +s 2 +f 211//239 220//241 221//242 +f 221//242 212//240 211//239 +s 3 +f 212//372 221//377 222//378 +f 222//378 213//373 212//372 +f 213//373 222//378 223//379 +f 223//379 214//374 213//373 +f 214//374 223//379 224//380 +f 224//380 215//375 214//374 +f 215//375 224//380 225//381 +f 225//381 216//376 215//375 +s 1 +f 217//161 226//165 227//166 +f 227//166 218//162 217//161 +f 218//162 227//166 228//167 +f 228//167 219//163 218//162 +f 219//163 228//167 229//168 +f 229//168 220//164 219//163 +s 2 +f 220//241 229//243 230//244 +f 230//244 221//242 220//241 +s 3 +f 221//377 230//382 231//383 +f 231//383 222//378 221//377 +f 222//378 231//383 232//384 +f 232//384 223//379 222//378 +f 223//379 232//384 233//385 +f 233//385 224//380 223//379 +f 224//380 233//385 234//386 +f 234//386 225//381 224//380 +s 1 +f 226//165 235//169 236//170 +f 236//170 227//166 226//165 +f 227//166 236//170 237//171 +f 237//171 228//167 227//166 +f 228//167 237//171 238//172 +f 238//172 229//168 228//167 +s 2 +f 229//243 238//245 239//246 +f 239//246 230//244 229//243 +s 3 +f 230//382 239//387 240//388 +f 240//388 231//383 230//382 +f 231//383 240//388 241//389 +f 241//389 232//384 231//383 +f 232//384 241//389 242//390 +f 242//390 233//385 232//384 +f 233//385 242//390 243//391 +f 243//391 234//386 233//385 +s 1 +f 235//169 244//173 245//174 +f 245//174 236//170 235//169 +f 236//170 245//174 246//175 +f 246//175 237//171 236//170 +f 237//171 246//175 247//176 +f 247//176 238//172 237//171 +s 2 +f 238//245 247//247 248//248 +f 248//248 239//246 238//245 +s 3 +f 239//387 248//392 249//393 +f 249//393 240//388 239//387 +f 240//388 249//393 250//394 +f 250//394 241//389 240//388 +f 241//389 250//394 251//395 +f 251//395 242//390 241//389 +f 242//390 251//395 252//396 +f 252//396 243//391 242//390 +s 1 +f 244//173 253//177 254//178 +f 254//178 245//174 244//173 +f 245//174 254//178 255//179 +f 255//179 246//175 245//174 +f 246//175 255//179 256//180 +f 256//180 247//176 246//175 +s 2 +f 247//247 256//249 257//250 +f 257//250 248//248 247//247 +s 3 +f 248//392 257//397 258//398 +f 258//398 249//393 248//392 +f 249//393 258//398 259//399 +f 259//399 250//394 249//393 +f 250//394 259//399 260//400 +f 260//400 251//395 250//394 +f 251//395 260//400 261//401 +f 261//401 252//396 251//395 +s 1 +f 253//177 262//181 263//182 +f 263//182 254//178 253//177 +f 254//178 263//182 264//183 +f 264//183 255//179 254//178 +f 255//179 264//183 265//184 +f 265//184 256//180 255//179 +s 2 +f 256//249 265//251 266//252 +f 266//252 257//250 256//249 +s 3 +f 257//397 266//402 267//403 +f 267//403 258//398 257//397 +f 258//398 267//403 268//404 +f 268//404 259//399 258//398 +f 259//399 268//404 269//405 +f 269//405 260//400 259//399 +f 260//400 269//405 270//406 +f 270//406 261//401 260//400 +s 1 +f 262//181 271//185 272//186 +f 272//186 263//182 262//181 +f 263//182 272//186 273//187 +f 273//187 264//183 263//182 +f 264//183 273//187 274//188 +f 274//188 265//184 264//183 +s 2 +f 265//251 274//253 275//254 +f 275//254 266//252 265//251 +s 3 +f 266//402 275//407 276//408 +f 276//408 267//403 266//402 +f 267//403 276//408 277//409 +f 277//409 268//404 267//403 +f 268//404 277//409 278//410 +f 278//410 269//405 268//404 +f 269//405 278//410 279//411 +f 279//411 270//406 269//405 +s 1 +f 271//185 280//189 281//190 +f 281//190 272//186 271//185 +f 272//186 281//190 282//191 +f 282//191 273//187 272//186 +f 273//187 282//191 283//192 +f 283//192 274//188 273//187 +s 2 +f 274//253 283//255 284//256 +f 284//256 275//254 274//253 +s 3 +f 275//407 284//412 285//413 +f 285//413 276//408 275//407 +f 276//408 285//413 286//414 +f 286//414 277//409 276//408 +f 277//409 286//414 287//415 +f 287//415 278//410 277//409 +f 278//410 287//415 288//416 +f 288//416 279//411 278//410 +s 1 +f 280//189 1//65 4//68 +f 4//68 281//190 280//189 +f 281//190 4//68 6//70 +f 6//70 282//191 281//190 +f 282//191 6//70 8//72 +f 8//72 283//192 282//191 +s 2 +f 283//255 8//194 10//196 +f 10//196 284//256 283//255 +s 3 +f 284//412 10//258 12//260 +f 12//260 285//413 284//412 +f 285//413 12//260 14//262 +f 14//262 286//414 285//413 +f 286//414 14//262 16//264 +f 16//264 287//415 286//414 +f 287//415 16//264 18//266 +f 18//266 288//416 287//415 +f 18//266 17//265 289//417 +f 289//417 290//418 18//266 +f 290//418 289//417 291//419 +f 291//419 292//420 290//418 +f 292//420 291//419 293//421 +f 293//421 294//422 292//420 +f 294//422 293//421 295//423 +f 295//423 296//424 294//422 +f 296//424 295//423 297//425 +f 297//425 298//426 296//424 +f 298//426 297//425 299//427 +f 299//427 300//428 298//426 +f 300//428 299//427 301//429 +f 301//429 302//430 300//428 +f 302//430 301//429 303//431 +f 303//431 304//432 302//430 +f 17//265 27//271 305//433 +f 305//433 289//417 17//265 +f 289//417 305//433 306//434 +f 306//434 291//419 289//417 +f 291//419 306//434 307//435 +f 307//435 293//421 291//419 +f 293//421 307//435 308//436 +f 308//436 295//423 293//421 +f 295//423 308//436 309//437 +f 309//437 297//425 295//423 +f 297//425 309//437 310//438 +f 310//438 299//427 297//425 +f 299//427 310//438 311//439 +f 311//439 301//429 299//427 +f 301//429 311//439 312//440 +f 312//440 303//431 301//429 +f 27//271 36//276 313//441 +f 313//441 305//433 27//271 +f 305//433 313//441 314//442 +f 314//442 306//434 305//433 +f 306//434 314//442 315//443 +f 315//443 307//435 306//434 +f 307//435 315//443 316//444 +f 316//444 308//436 307//435 +f 308//436 316//444 317//445 +f 317//445 309//437 308//436 +f 309//437 317//445 318//446 +f 318//446 310//438 309//437 +f 310//438 318//446 319//447 +f 319//447 311//439 310//438 +f 311//439 319//447 320//448 +f 320//448 312//440 311//439 +f 36//276 45//281 321//449 +f 321//449 313//441 36//276 +f 313//441 321//449 322//450 +f 322//450 314//442 313//441 +f 314//442 322//450 323//451 +f 323//451 315//443 314//442 +f 315//443 323//451 324//452 +f 324//452 316//444 315//443 +f 316//444 324//452 325//453 +f 325//453 317//445 316//444 +f 317//445 325//453 326//454 +f 326//454 318//446 317//445 +f 318//446 326//454 327//455 +f 327//455 319//447 318//446 +f 319//447 327//455 328//456 +f 328//456 320//448 319//447 +f 45//281 54//286 329//457 +f 329//457 321//449 45//281 +f 321//449 329//457 330//458 +f 330//458 322//450 321//449 +f 322//450 330//458 331//459 +f 331//459 323//451 322//450 +f 323//451 331//459 332//460 +f 332//460 324//452 323//451 +f 324//452 332//460 333//461 +f 333//461 325//453 324//452 +f 325//453 333//461 334//462 +f 334//462 326//454 325//453 +f 326//454 334//462 335//463 +f 335//463 327//455 326//454 +f 327//455 335//463 336//464 +f 336//464 328//456 327//455 +f 54//286 63//291 337//465 +f 337//465 329//457 54//286 +f 329//457 337//465 338//466 +f 338//466 330//458 329//457 +f 330//458 338//466 339//467 +f 339//467 331//459 330//458 +f 331//459 339//467 340//468 +f 340//468 332//460 331//459 +f 332//460 340//468 341//469 +f 341//469 333//461 332//460 +f 333//461 341//469 342//470 +f 342//470 334//462 333//461 +f 334//462 342//470 343//471 +f 343//471 335//463 334//462 +f 335//463 343//471 344//472 +f 344//472 336//464 335//463 +f 63//291 72//296 345//473 +f 345//473 337//465 63//291 +f 337//465 345//473 346//474 +f 346//474 338//466 337//465 +f 338//466 346//474 347//475 +f 347//475 339//467 338//466 +f 339//467 347//475 348//476 +f 348//476 340//468 339//467 +f 340//468 348//476 349//477 +f 349//477 341//469 340//468 +f 341//469 349//477 350//478 +f 350//478 342//470 341//469 +f 342//470 350//478 351//479 +f 351//479 343//471 342//470 +f 343//471 351//479 352//480 +f 352//480 344//472 343//471 +f 72//296 81//301 353//481 +f 353//481 345//473 72//296 +f 345//473 353//481 354//482 +f 354//482 346//474 345//473 +f 346//474 354//482 355//483 +f 355//483 347//475 346//474 +f 347//475 355//483 356//484 +f 356//484 348//476 347//475 +f 348//476 356//484 357//485 +f 357//485 349//477 348//476 +f 349//477 357//485 358//486 +f 358//486 350//478 349//477 +f 350//478 358//486 359//487 +f 359//487 351//479 350//478 +f 351//479 359//487 360//488 +f 360//488 352//480 351//479 +f 81//301 90//306 361//489 +f 361//489 353//481 81//301 +f 353//481 361//489 362//490 +f 362//490 354//482 353//481 +f 354//482 362//490 363//491 +f 363//491 355//483 354//482 +f 355//483 363//491 364//492 +f 364//492 356//484 355//483 +f 356//484 364//492 365//493 +f 365//493 357//485 356//484 +f 357//485 365//493 366//494 +f 366//494 358//486 357//485 +f 358//486 366//494 367//495 +f 367//495 359//487 358//486 +f 359//487 367//495 368//496 +f 368//496 360//488 359//487 +f 90//306 99//311 369//497 +f 369//497 361//489 90//306 +f 361//489 369//497 370//498 +f 370//498 362//490 361//489 +f 362//490 370//498 371//499 +f 371//499 363//491 362//490 +f 363//491 371//499 372//500 +f 372//500 364//492 363//491 +f 364//492 372//500 373//501 +f 373//501 365//493 364//492 +f 365//493 373//501 374//502 +f 374//502 366//494 365//493 +f 366//494 374//502 375//503 +f 375//503 367//495 366//494 +f 367//495 375//503 376//504 +f 376//504 368//496 367//495 +f 99//311 108//316 377//505 +f 377//505 369//497 99//311 +f 369//497 377//505 378//506 +f 378//506 370//498 369//497 +f 370//498 378//506 379//507 +f 379//507 371//499 370//498 +f 371//499 379//507 380//508 +f 380//508 372//500 371//499 +f 372//500 380//508 381//509 +f 381//509 373//501 372//500 +f 373//501 381//509 382//510 +f 382//510 374//502 373//501 +f 374//502 382//510 383//511 +f 383//511 375//503 374//502 +f 375//503 383//511 384//512 +f 384//512 376//504 375//503 +f 108//316 117//321 385//513 +f 385//513 377//505 108//316 +f 377//505 385//513 386//514 +f 386//514 378//506 377//505 +f 378//506 386//514 387//515 +f 387//515 379//507 378//506 +f 379//507 387//515 388//516 +f 388//516 380//508 379//507 +f 380//508 388//516 389//517 +f 389//517 381//509 380//508 +f 381//509 389//517 390//518 +f 390//518 382//510 381//509 +f 382//510 390//518 391//519 +f 391//519 383//511 382//510 +f 383//511 391//519 392//520 +f 392//520 384//512 383//511 +f 117//321 126//326 393//521 +f 393//521 385//513 117//321 +f 385//513 393//521 394//522 +f 394//522 386//514 385//513 +f 386//514 394//522 395//523 +f 395//523 387//515 386//514 +f 387//515 395//523 396//524 +f 396//524 388//516 387//515 +f 388//516 396//524 397//525 +f 397//525 389//517 388//516 +f 389//517 397//525 398//526 +f 398//526 390//518 389//517 +f 390//518 398//526 399//527 +f 399//527 391//519 390//518 +f 391//519 399//527 400//528 +f 400//528 392//520 391//519 +f 126//326 135//331 401//529 +f 401//529 393//521 126//326 +f 393//521 401//529 402//530 +f 402//530 394//522 393//521 +f 394//522 402//530 403//531 +f 403//531 395//523 394//522 +f 395//523 403//531 404//532 +f 404//532 396//524 395//523 +f 396//524 404//532 405//533 +f 405//533 397//525 396//524 +f 397//525 405//533 406//534 +f 406//534 398//526 397//525 +f 398//526 406//534 407//535 +f 407//535 399//527 398//526 +f 399//527 407//535 408//536 +f 408//536 400//528 399//527 +f 135//331 144//336 409//537 +f 409//537 401//529 135//331 +f 401//529 409//537 410//538 +f 410//538 402//530 401//529 +f 402//530 410//538 411//539 +f 411//539 403//531 402//530 +f 403//531 411//539 412//540 +f 412//540 404//532 403//531 +f 404//532 412//540 413//541 +f 413//541 405//533 404//532 +f 405//533 413//541 414//542 +f 414//542 406//534 405//533 +f 406//534 414//542 415//543 +f 415//543 407//535 406//534 +f 407//535 415//543 416//544 +f 416//544 408//536 407//535 +f 144//336 153//341 417//545 +f 417//545 409//537 144//336 +f 409//537 417//545 418//546 +f 418//546 410//538 409//537 +f 410//538 418//546 419//547 +f 419//547 411//539 410//538 +f 411//539 419//547 420//548 +f 420//548 412//540 411//539 +f 412//540 420//548 421//549 +f 421//549 413//541 412//540 +f 413//541 421//549 422//550 +f 422//550 414//542 413//541 +f 414//542 422//550 423//551 +f 423//551 415//543 414//542 +f 415//543 423//551 424//552 +f 424//552 416//544 415//543 +f 153//341 162//346 425//553 +f 425//553 417//545 153//341 +f 417//545 425//553 426//554 +f 426//554 418//546 417//545 +f 418//546 426//554 427//555 +f 427//555 419//547 418//546 +f 419//547 427//555 428//556 +f 428//556 420//548 419//547 +f 420//548 428//556 429//557 +f 429//557 421//549 420//548 +f 421//549 429//557 430//558 +f 430//558 422//550 421//549 +f 422//550 430//558 431//559 +f 431//559 423//551 422//550 +f 423//551 431//559 432//560 +f 432//560 424//552 423//551 +f 162//346 171//351 433//561 +f 433//561 425//553 162//346 +f 425//553 433//561 434//562 +f 434//562 426//554 425//553 +f 426//554 434//562 435//563 +f 435//563 427//555 426//554 +f 427//555 435//563 436//564 +f 436//564 428//556 427//555 +f 428//556 436//564 437//565 +f 437//565 429//557 428//556 +f 429//557 437//565 438//566 +f 438//566 430//558 429//557 +f 430//558 438//566 439//567 +f 439//567 431//559 430//558 +f 431//559 439//567 440//568 +f 440//568 432//560 431//559 +f 171//351 180//356 441//569 +f 441//569 433//561 171//351 +f 433//561 441//569 442//570 +f 442//570 434//562 433//561 +f 434//562 442//570 443//571 +f 443//571 435//563 434//562 +f 435//563 443//571 444//572 +f 444//572 436//564 435//563 +f 436//564 444//572 445//573 +f 445//573 437//565 436//564 +f 437//565 445//573 446//574 +f 446//574 438//566 437//565 +f 438//566 446//574 447//575 +f 447//575 439//567 438//566 +f 439//567 447//575 448//576 +f 448//576 440//568 439//567 +f 180//356 189//361 449//577 +f 449//577 441//569 180//356 +f 441//569 449//577 450//578 +f 450//578 442//570 441//569 +f 442//570 450//578 451//579 +f 451//579 443//571 442//570 +f 443//571 451//579 452//580 +f 452//580 444//572 443//571 +f 444//572 452//580 453//581 +f 453//581 445//573 444//572 +f 445//573 453//581 454//582 +f 454//582 446//574 445//573 +f 446//574 454//582 455//583 +f 455//583 447//575 446//574 +f 447//575 455//583 456//584 +f 456//584 448//576 447//575 +f 189//361 198//366 457//585 +f 457//585 449//577 189//361 +f 449//577 457//585 458//586 +f 458//586 450//578 449//577 +f 450//578 458//586 459//587 +f 459//587 451//579 450//578 +f 451//579 459//587 460//588 +f 460//588 452//580 451//579 +f 452//580 460//588 461//589 +f 461//589 453//581 452//580 +f 453//581 461//589 462//590 +f 462//590 454//582 453//581 +f 454//582 462//590 463//591 +f 463//591 455//583 454//582 +f 455//583 463//591 464//592 +f 464//592 456//584 455//583 +f 198//366 207//371 465//593 +f 465//593 457//585 198//366 +f 457//585 465//593 466//594 +f 466//594 458//586 457//585 +f 458//586 466//594 467//595 +f 467//595 459//587 458//586 +f 459//587 467//595 468//596 +f 468//596 460//588 459//587 +f 460//588 468//596 469//597 +f 469//597 461//589 460//588 +f 461//589 469//597 470//598 +f 470//598 462//590 461//589 +f 462//590 470//598 471//599 +f 471//599 463//591 462//590 +f 463//591 471//599 472//600 +f 472//600 464//592 463//591 +f 207//371 216//376 473//601 +f 473//601 465//593 207//371 +f 465//593 473//601 474//602 +f 474//602 466//594 465//593 +f 466//594 474//602 475//603 +f 475//603 467//595 466//594 +f 467//595 475//603 476//604 +f 476//604 468//596 467//595 +f 468//596 476//604 477//605 +f 477//605 469//597 468//596 +f 469//597 477//605 478//606 +f 478//606 470//598 469//597 +f 470//598 478//606 479//607 +f 479//607 471//599 470//598 +f 471//599 479//607 480//608 +f 480//608 472//600 471//599 +f 216//376 225//381 481//609 +f 481//609 473//601 216//376 +f 473//601 481//609 482//610 +f 482//610 474//602 473//601 +f 474//602 482//610 483//611 +f 483//611 475//603 474//602 +f 475//603 483//611 484//612 +f 484//612 476//604 475//603 +f 476//604 484//612 485//613 +f 485//613 477//605 476//604 +f 477//605 485//613 486//614 +f 486//614 478//606 477//605 +f 478//606 486//614 487//615 +f 487//615 479//607 478//606 +f 479//607 487//615 488//616 +f 488//616 480//608 479//607 +f 225//381 234//386 489//617 +f 489//617 481//609 225//381 +f 481//609 489//617 490//618 +f 490//618 482//610 481//609 +f 482//610 490//618 491//619 +f 491//619 483//611 482//610 +f 483//611 491//619 492//620 +f 492//620 484//612 483//611 +f 484//612 492//620 493//621 +f 493//621 485//613 484//612 +f 485//613 493//621 494//622 +f 494//622 486//614 485//613 +f 486//614 494//622 495//623 +f 495//623 487//615 486//614 +f 487//615 495//623 496//624 +f 496//624 488//616 487//615 +f 234//386 243//391 497//625 +f 497//625 489//617 234//386 +f 489//617 497//625 498//626 +f 498//626 490//618 489//617 +f 490//618 498//626 499//627 +f 499//627 491//619 490//618 +f 491//619 499//627 500//628 +f 500//628 492//620 491//619 +f 492//620 500//628 501//629 +f 501//629 493//621 492//620 +f 493//621 501//629 502//630 +f 502//630 494//622 493//621 +f 494//622 502//630 503//631 +f 503//631 495//623 494//622 +f 495//623 503//631 504//632 +f 504//632 496//624 495//623 +f 243//391 252//396 505//633 +f 505//633 497//625 243//391 +f 497//625 505//633 506//634 +f 506//634 498//626 497//625 +f 498//626 506//634 507//635 +f 507//635 499//627 498//626 +f 499//627 507//635 508//636 +f 508//636 500//628 499//627 +f 500//628 508//636 509//637 +f 509//637 501//629 500//628 +f 501//629 509//637 510//638 +f 510//638 502//630 501//629 +f 502//630 510//638 511//639 +f 511//639 503//631 502//630 +f 503//631 511//639 512//640 +f 512//640 504//632 503//631 +f 252//396 261//401 513//641 +f 513//641 505//633 252//396 +f 505//633 513//641 514//642 +f 514//642 506//634 505//633 +f 506//634 514//642 515//643 +f 515//643 507//635 506//634 +f 507//635 515//643 516//644 +f 516//644 508//636 507//635 +f 508//636 516//644 517//645 +f 517//645 509//637 508//636 +f 509//637 517//645 518//646 +f 518//646 510//638 509//637 +f 510//638 518//646 519//647 +f 519//647 511//639 510//638 +f 511//639 519//647 520//648 +f 520//648 512//640 511//639 +f 261//401 270//406 521//649 +f 521//649 513//641 261//401 +f 513//641 521//649 522//650 +f 522//650 514//642 513//641 +f 514//642 522//650 523//651 +f 523//651 515//643 514//642 +f 515//643 523//651 524//652 +f 524//652 516//644 515//643 +f 516//644 524//652 525//653 +f 525//653 517//645 516//644 +f 517//645 525//653 526//654 +f 526//654 518//646 517//645 +f 518//646 526//654 527//655 +f 527//655 519//647 518//646 +f 519//647 527//655 528//656 +f 528//656 520//648 519//647 +f 270//406 279//411 529//657 +f 529//657 521//649 270//406 +f 521//649 529//657 530//658 +f 530//658 522//650 521//649 +f 522//650 530//658 531//659 +f 531//659 523//651 522//650 +f 523//651 531//659 532//660 +f 532//660 524//652 523//651 +f 524//652 532//660 533//661 +f 533//661 525//653 524//652 +f 525//653 533//661 534//662 +f 534//662 526//654 525//653 +f 526//654 534//662 535//663 +f 535//663 527//655 526//654 +f 527//655 535//663 536//664 +f 536//664 528//656 527//655 +f 279//411 288//416 537//665 +f 537//665 529//657 279//411 +f 529//657 537//665 538//666 +f 538//666 530//658 529//657 +f 530//658 538//666 539//667 +f 539//667 531//659 530//658 +f 531//659 539//667 540//668 +f 540//668 532//660 531//659 +f 532//660 540//668 541//669 +f 541//669 533//661 532//660 +f 533//661 541//669 542//670 +f 542//670 534//662 533//661 +f 534//662 542//670 543//671 +f 543//671 535//663 534//662 +f 535//663 543//671 544//672 +f 544//672 536//664 535//663 +f 288//416 18//266 290//418 +f 290//418 537//665 288//416 +f 537//665 290//418 292//420 +f 292//420 538//666 537//665 +f 538//666 292//420 294//422 +f 294//422 539//667 538//666 +f 539//667 294//422 296//424 +f 296//424 540//668 539//667 +f 540//668 296//424 298//426 +f 298//426 541//669 540//668 +f 541//669 298//426 300//428 +f 300//428 542//670 541//669 +f 542//670 300//428 302//430 +f 302//430 543//671 542//670 +f 543//671 302//430 304//432 +f 304//432 544//672 543//671 +f 304//432 303//431 545//673 +f 545//673 546//674 304//432 +f 546//674 545//673 547//675 +f 547//675 548//676 546//674 +f 548//676 547//675 549//677 +f 549//677 550//678 548//676 +f 550//678 549//677 551//679 +f 551//679 552//680 550//678 +f 552//680 551//679 553//681 +f 553//681 554//682 552//680 +f 554//682 553//681 555//683 +f 555//683 556//684 554//682 +f 556//684 555//683 557//685 +f 557//685 558//686 556//684 +f 558//686 557//685 559//687 +f 559//687 560//688 558//686 +f 303//431 312//440 561//689 +f 561//689 545//673 303//431 +f 545//673 561//689 562//690 +f 562//690 547//675 545//673 +f 547//675 562//690 563//691 +f 563//691 549//677 547//675 +f 549//677 563//691 564//692 +f 564//692 551//679 549//677 +f 551//679 564//692 565//693 +f 565//693 553//681 551//679 +f 553//681 565//693 566//694 +f 566//694 555//683 553//681 +f 555//683 566//694 567//695 +f 567//695 557//685 555//683 +f 557//685 567//695 568//696 +f 568//696 559//687 557//685 +f 312//440 320//448 569//697 +f 569//697 561//689 312//440 +f 561//689 569//697 570//698 +f 570//698 562//690 561//689 +f 562//690 570//698 571//699 +f 571//699 563//691 562//690 +f 563//691 571//699 572//700 +f 572//700 564//692 563//691 +f 564//692 572//700 573//701 +f 573//701 565//693 564//692 +f 565//693 573//701 574//702 +f 574//702 566//694 565//693 +f 566//694 574//702 575//703 +f 575//703 567//695 566//694 +f 567//695 575//703 576//704 +f 576//704 568//696 567//695 +f 320//448 328//456 577//705 +f 577//705 569//697 320//448 +f 569//697 577//705 578//706 +f 578//706 570//698 569//697 +f 570//698 578//706 579//707 +f 579//707 571//699 570//698 +f 571//699 579//707 580//708 +f 580//708 572//700 571//699 +f 572//700 580//708 581//709 +f 581//709 573//701 572//700 +f 573//701 581//709 582//710 +f 582//710 574//702 573//701 +f 574//702 582//710 583//711 +f 583//711 575//703 574//702 +f 575//703 583//711 584//712 +f 584//712 576//704 575//703 +f 328//456 336//464 585//713 +f 585//713 577//705 328//456 +f 577//705 585//713 586//714 +f 586//714 578//706 577//705 +f 578//706 586//714 587//715 +f 587//715 579//707 578//706 +f 579//707 587//715 588//716 +f 588//716 580//708 579//707 +f 580//708 588//716 589//717 +f 589//717 581//709 580//708 +f 581//709 589//717 590//718 +f 590//718 582//710 581//709 +f 582//710 590//718 591//719 +f 591//719 583//711 582//710 +f 583//711 591//719 592//720 +f 592//720 584//712 583//711 +f 336//464 344//472 593//721 +f 593//721 585//713 336//464 +f 585//713 593//721 594//722 +f 594//722 586//714 585//713 +f 586//714 594//722 595//723 +f 595//723 587//715 586//714 +f 587//715 595//723 596//724 +f 596//724 588//716 587//715 +f 588//716 596//724 597//725 +f 597//725 589//717 588//716 +f 589//717 597//725 598//726 +f 598//726 590//718 589//717 +f 590//718 598//726 599//727 +f 599//727 591//719 590//718 +f 591//719 599//727 600//728 +f 600//728 592//720 591//719 +f 344//472 352//480 601//729 +f 601//729 593//721 344//472 +f 593//721 601//729 602//730 +f 602//730 594//722 593//721 +f 594//722 602//730 603//731 +f 603//731 595//723 594//722 +f 595//723 603//731 604//732 +f 604//732 596//724 595//723 +f 596//724 604//732 605//733 +f 605//733 597//725 596//724 +f 597//725 605//733 606//734 +f 606//734 598//726 597//725 +f 598//726 606//734 607//735 +f 607//735 599//727 598//726 +f 599//727 607//735 608//736 +f 608//736 600//728 599//727 +f 352//480 360//488 609//737 +f 609//737 601//729 352//480 +f 601//729 609//737 610//738 +f 610//738 602//730 601//729 +f 602//730 610//738 611//739 +f 611//739 603//731 602//730 +f 603//731 611//739 612//740 +f 612//740 604//732 603//731 +f 604//732 612//740 613//741 +f 613//741 605//733 604//732 +f 605//733 613//741 614//742 +f 614//742 606//734 605//733 +f 606//734 614//742 615//743 +f 615//743 607//735 606//734 +f 607//735 615//743 616//744 +f 616//744 608//736 607//735 +f 360//488 368//496 617//745 +f 617//745 609//737 360//488 +f 609//737 617//745 618//746 +f 618//746 610//738 609//737 +f 610//738 618//746 619//747 +f 619//747 611//739 610//738 +f 611//739 619//747 620//748 +f 620//748 612//740 611//739 +f 612//740 620//748 621//749 +f 621//749 613//741 612//740 +f 613//741 621//749 622//750 +f 622//750 614//742 613//741 +f 614//742 622//750 623//751 +f 623//751 615//743 614//742 +f 615//743 623//751 624//752 +f 624//752 616//744 615//743 +f 368//496 376//504 625//753 +f 625//753 617//745 368//496 +f 617//745 625//753 626//754 +f 626//754 618//746 617//745 +f 618//746 626//754 627//755 +f 627//755 619//747 618//746 +f 619//747 627//755 628//756 +f 628//756 620//748 619//747 +f 620//748 628//756 629//757 +f 629//757 621//749 620//748 +f 621//749 629//757 630//758 +f 630//758 622//750 621//749 +f 622//750 630//758 631//759 +f 631//759 623//751 622//750 +f 623//751 631//759 632//760 +f 632//760 624//752 623//751 +f 376//504 384//512 633//761 +f 633//761 625//753 376//504 +f 625//753 633//761 634//762 +f 634//762 626//754 625//753 +f 626//754 634//762 635//763 +f 635//763 627//755 626//754 +f 627//755 635//763 636//764 +f 636//764 628//756 627//755 +f 628//756 636//764 637//765 +f 637//765 629//757 628//756 +f 629//757 637//765 638//766 +f 638//766 630//758 629//757 +f 630//758 638//766 639//767 +f 639//767 631//759 630//758 +f 631//759 639//767 640//768 +f 640//768 632//760 631//759 +f 384//512 392//520 641//769 +f 641//769 633//761 384//512 +f 633//761 641//769 642//770 +f 642//770 634//762 633//761 +f 634//762 642//770 643//771 +f 643//771 635//763 634//762 +f 635//763 643//771 644//772 +f 644//772 636//764 635//763 +f 636//764 644//772 645//773 +f 645//773 637//765 636//764 +f 637//765 645//773 646//774 +f 646//774 638//766 637//765 +f 638//766 646//774 647//775 +f 647//775 639//767 638//766 +f 639//767 647//775 648//776 +f 648//776 640//768 639//767 +f 392//520 400//528 649//777 +f 649//777 641//769 392//520 +f 641//769 649//777 650//778 +f 650//778 642//770 641//769 +f 642//770 650//778 651//779 +f 651//779 643//771 642//770 +f 643//771 651//779 652//780 +f 652//780 644//772 643//771 +f 644//772 652//780 653//781 +f 653//781 645//773 644//772 +f 645//773 653//781 654//782 +f 654//782 646//774 645//773 +f 646//774 654//782 655//783 +f 655//783 647//775 646//774 +f 647//775 655//783 656//784 +f 656//784 648//776 647//775 +f 400//528 408//536 657//785 +f 657//785 649//777 400//528 +f 649//777 657//785 658//786 +f 658//786 650//778 649//777 +f 650//778 658//786 659//787 +f 659//787 651//779 650//778 +f 651//779 659//787 660//788 +f 660//788 652//780 651//779 +f 652//780 660//788 661//789 +f 661//789 653//781 652//780 +f 653//781 661//789 662//790 +f 662//790 654//782 653//781 +f 654//782 662//790 663//791 +f 663//791 655//783 654//782 +f 655//783 663//791 664//792 +f 664//792 656//784 655//783 +f 408//536 416//544 665//793 +f 665//793 657//785 408//536 +f 657//785 665//793 666//794 +f 666//794 658//786 657//785 +f 658//786 666//794 667//795 +f 667//795 659//787 658//786 +f 659//787 667//795 668//796 +f 668//796 660//788 659//787 +f 660//788 668//796 669//797 +f 669//797 661//789 660//788 +f 661//789 669//797 670//798 +f 670//798 662//790 661//789 +f 662//790 670//798 671//799 +f 671//799 663//791 662//790 +f 663//791 671//799 672//800 +f 672//800 664//792 663//791 +f 416//544 424//552 673//801 +f 673//801 665//793 416//544 +f 665//793 673//801 674//802 +f 674//802 666//794 665//793 +f 666//794 674//802 675//803 +f 675//803 667//795 666//794 +f 667//795 675//803 676//804 +f 676//804 668//796 667//795 +f 668//796 676//804 677//805 +f 677//805 669//797 668//796 +f 669//797 677//805 678//806 +f 678//806 670//798 669//797 +f 670//798 678//806 679//807 +f 679//807 671//799 670//798 +f 671//799 679//807 680//808 +f 680//808 672//800 671//799 +f 424//552 432//560 681//809 +f 681//809 673//801 424//552 +f 673//801 681//809 682//810 +f 682//810 674//802 673//801 +f 674//802 682//810 683//811 +f 683//811 675//803 674//802 +f 675//803 683//811 684//812 +f 684//812 676//804 675//803 +f 676//804 684//812 685//813 +f 685//813 677//805 676//804 +f 677//805 685//813 686//814 +f 686//814 678//806 677//805 +f 678//806 686//814 687//815 +f 687//815 679//807 678//806 +f 679//807 687//815 688//816 +f 688//816 680//808 679//807 +f 432//560 440//568 689//817 +f 689//817 681//809 432//560 +f 681//809 689//817 690//818 +f 690//818 682//810 681//809 +f 682//810 690//818 691//819 +f 691//819 683//811 682//810 +f 683//811 691//819 692//820 +f 692//820 684//812 683//811 +f 684//812 692//820 693//821 +f 693//821 685//813 684//812 +f 685//813 693//821 694//822 +f 694//822 686//814 685//813 +f 686//814 694//822 695//823 +f 695//823 687//815 686//814 +f 687//815 695//823 696//824 +f 696//824 688//816 687//815 +f 440//568 448//576 697//825 +f 697//825 689//817 440//568 +f 689//817 697//825 698//826 +f 698//826 690//818 689//817 +f 690//818 698//826 699//827 +f 699//827 691//819 690//818 +f 691//819 699//827 700//828 +f 700//828 692//820 691//819 +f 692//820 700//828 701//829 +f 701//829 693//821 692//820 +f 693//821 701//829 702//830 +f 702//830 694//822 693//821 +f 694//822 702//830 703//831 +f 703//831 695//823 694//822 +f 695//823 703//831 704//832 +f 704//832 696//824 695//823 +f 448//576 456//584 705//833 +f 705//833 697//825 448//576 +f 697//825 705//833 706//834 +f 706//834 698//826 697//825 +f 698//826 706//834 707//835 +f 707//835 699//827 698//826 +f 699//827 707//835 708//836 +f 708//836 700//828 699//827 +f 700//828 708//836 709//837 +f 709//837 701//829 700//828 +f 701//829 709//837 710//838 +f 710//838 702//830 701//829 +f 702//830 710//838 711//839 +f 711//839 703//831 702//830 +f 703//831 711//839 712//840 +f 712//840 704//832 703//831 +f 456//584 464//592 713//841 +f 713//841 705//833 456//584 +f 705//833 713//841 714//842 +f 714//842 706//834 705//833 +f 706//834 714//842 715//843 +f 715//843 707//835 706//834 +f 707//835 715//843 716//844 +f 716//844 708//836 707//835 +f 708//836 716//844 717//845 +f 717//845 709//837 708//836 +f 709//837 717//845 718//846 +f 718//846 710//838 709//837 +f 710//838 718//846 719//847 +f 719//847 711//839 710//838 +f 711//839 719//847 720//848 +f 720//848 712//840 711//839 +f 464//592 472//600 721//849 +f 721//849 713//841 464//592 +f 713//841 721//849 722//850 +f 722//850 714//842 713//841 +f 714//842 722//850 723//851 +f 723//851 715//843 714//842 +f 715//843 723//851 724//852 +f 724//852 716//844 715//843 +f 716//844 724//852 725//853 +f 725//853 717//845 716//844 +f 717//845 725//853 726//854 +f 726//854 718//846 717//845 +f 718//846 726//854 727//855 +f 727//855 719//847 718//846 +f 719//847 727//855 728//856 +f 728//856 720//848 719//847 +f 472//600 480//608 729//857 +f 729//857 721//849 472//600 +f 721//849 729//857 730//858 +f 730//858 722//850 721//849 +f 722//850 730//858 731//859 +f 731//859 723//851 722//850 +f 723//851 731//859 732//860 +f 732//860 724//852 723//851 +f 724//852 732//860 733//861 +f 733//861 725//853 724//852 +f 725//853 733//861 734//862 +f 734//862 726//854 725//853 +f 726//854 734//862 735//863 +f 735//863 727//855 726//854 +f 727//855 735//863 736//864 +f 736//864 728//856 727//855 +f 480//608 488//616 737//865 +f 737//865 729//857 480//608 +f 729//857 737//865 738//866 +f 738//866 730//858 729//857 +f 730//858 738//866 739//867 +f 739//867 731//859 730//858 +f 731//859 739//867 740//868 +f 740//868 732//860 731//859 +f 732//860 740//868 741//869 +f 741//869 733//861 732//860 +f 733//861 741//869 742//870 +f 742//870 734//862 733//861 +f 734//862 742//870 743//871 +f 743//871 735//863 734//862 +f 735//863 743//871 744//872 +f 744//872 736//864 735//863 +f 488//616 496//624 745//873 +f 745//873 737//865 488//616 +f 737//865 745//873 746//874 +f 746//874 738//866 737//865 +f 738//866 746//874 747//875 +f 747//875 739//867 738//866 +f 739//867 747//875 748//876 +f 748//876 740//868 739//867 +f 740//868 748//876 749//877 +f 749//877 741//869 740//868 +f 741//869 749//877 750//878 +f 750//878 742//870 741//869 +f 742//870 750//878 751//879 +f 751//879 743//871 742//870 +f 743//871 751//879 752//880 +f 752//880 744//872 743//871 +f 496//624 504//632 753//881 +f 753//881 745//873 496//624 +f 745//873 753//881 754//882 +f 754//882 746//874 745//873 +f 746//874 754//882 755//883 +f 755//883 747//875 746//874 +f 747//875 755//883 756//884 +f 756//884 748//876 747//875 +f 748//876 756//884 757//885 +f 757//885 749//877 748//876 +f 749//877 757//885 758//886 +f 758//886 750//878 749//877 +f 750//878 758//886 759//887 +f 759//887 751//879 750//878 +f 751//879 759//887 760//888 +f 760//888 752//880 751//879 +f 504//632 512//640 761//889 +f 761//889 753//881 504//632 +f 753//881 761//889 762//890 +f 762//890 754//882 753//881 +f 754//882 762//890 763//891 +f 763//891 755//883 754//882 +f 755//883 763//891 764//892 +f 764//892 756//884 755//883 +f 756//884 764//892 765//893 +f 765//893 757//885 756//884 +f 757//885 765//893 766//894 +f 766//894 758//886 757//885 +f 758//886 766//894 767//895 +f 767//895 759//887 758//886 +f 759//887 767//895 768//896 +f 768//896 760//888 759//887 +f 512//640 520//648 769//897 +f 769//897 761//889 512//640 +f 761//889 769//897 770//898 +f 770//898 762//890 761//889 +f 762//890 770//898 771//899 +f 771//899 763//891 762//890 +f 763//891 771//899 772//900 +f 772//900 764//892 763//891 +f 764//892 772//900 773//901 +f 773//901 765//893 764//892 +f 765//893 773//901 774//902 +f 774//902 766//894 765//893 +f 766//894 774//902 775//903 +f 775//903 767//895 766//894 +f 767//895 775//903 776//904 +f 776//904 768//896 767//895 +f 520//648 528//656 777//905 +f 777//905 769//897 520//648 +f 769//897 777//905 778//906 +f 778//906 770//898 769//897 +f 770//898 778//906 779//907 +f 779//907 771//899 770//898 +f 771//899 779//907 780//908 +f 780//908 772//900 771//899 +f 772//900 780//908 781//909 +f 781//909 773//901 772//900 +f 773//901 781//909 782//910 +f 782//910 774//902 773//901 +f 774//902 782//910 783//911 +f 783//911 775//903 774//902 +f 775//903 783//911 784//912 +f 784//912 776//904 775//903 +f 528//656 536//664 785//913 +f 785//913 777//905 528//656 +f 777//905 785//913 786//914 +f 786//914 778//906 777//905 +f 778//906 786//914 787//915 +f 787//915 779//907 778//906 +f 779//907 787//915 788//916 +f 788//916 780//908 779//907 +f 780//908 788//916 789//917 +f 789//917 781//909 780//908 +f 781//909 789//917 790//918 +f 790//918 782//910 781//909 +f 782//910 790//918 791//919 +f 791//919 783//911 782//910 +f 783//911 791//919 792//920 +f 792//920 784//912 783//911 +f 536//664 544//672 793//921 +f 793//921 785//913 536//664 +f 785//913 793//921 794//922 +f 794//922 786//914 785//913 +f 786//914 794//922 795//923 +f 795//923 787//915 786//914 +f 787//915 795//923 796//924 +f 796//924 788//916 787//915 +f 788//916 796//924 797//925 +f 797//925 789//917 788//916 +f 789//917 797//925 798//926 +f 798//926 790//918 789//917 +f 790//918 798//926 799//927 +f 799//927 791//919 790//918 +f 791//919 799//927 800//928 +f 800//928 792//920 791//919 +f 544//672 304//432 546//674 +f 546//674 793//921 544//672 +f 793//921 546//674 548//676 +f 548//676 794//922 793//921 +f 794//922 548//676 550//678 +f 550//678 795//923 794//922 +f 795//923 550//678 552//680 +f 552//680 796//924 795//923 +f 796//924 552//680 554//682 +f 554//682 797//925 796//924 +f 797//925 554//682 556//684 +f 556//684 798//926 797//925 +f 798//926 556//684 558//686 +f 558//686 799//927 798//926 +f 799//927 558//686 560//688 +f 560//688 800//928 799//927 +f 560//688 559//687 801//929 +f 801//929 802//930 560//688 +s 5 +f 802//962 801//961 803//963 +f 803//963 804//964 802//962 +f 804//964 803//963 805//965 +f 805//965 806//966 804//964 +f 806//966 805//965 807//967 +f 807//967 808//968 806//966 +f 808//968 807//967 809//969 +f 809//969 810//970 808//968 +f 810//970 809//969 811//971 +f 811//971 812//972 810//970 +f 812//972 811//971 813//973 +f 813//973 814//974 812//972 +f 814//974 813//973 815//975 +s off +f 815//1 815//1 814//1 +s 3 +f 559//687 568//696 816//931 +f 816//931 801//929 559//687 +s 5 +f 801//961 816//976 817//977 +f 817//977 803//963 801//961 +f 803//963 817//977 818//978 +f 818//978 805//965 803//963 +f 805//965 818//978 819//979 +f 819//979 807//967 805//965 +f 807//967 819//979 820//980 +f 820//980 809//969 807//967 +f 809//969 820//980 821//981 +f 821//981 811//971 809//969 +f 811//971 821//981 822//982 +f 822//982 813//973 811//971 +f 813//973 822//982 815//975 +s off +f 815//2 815//2 813//2 +s 3 +f 568//696 576//704 823//932 +f 823//932 816//931 568//696 +s 5 +f 816//976 823//983 824//984 +f 824//984 817//977 816//976 +f 817//977 824//984 825//985 +f 825//985 818//978 817//977 +f 818//978 825//985 826//986 +f 826//986 819//979 818//978 +f 819//979 826//986 827//987 +f 827//987 820//980 819//979 +f 820//980 827//987 828//988 +f 828//988 821//981 820//980 +f 821//981 828//988 829//989 +f 829//989 822//982 821//981 +f 822//982 829//989 815//975 +s off +f 815//3 815//3 822//3 +s 3 +f 576//704 584//712 830//933 +f 830//933 823//932 576//704 +s 5 +f 823//983 830//990 831//991 +f 831//991 824//984 823//983 +f 824//984 831//991 832//992 +f 832//992 825//985 824//984 +f 825//985 832//992 833//993 +f 833//993 826//986 825//985 +f 826//986 833//993 834//994 +f 834//994 827//987 826//986 +f 827//987 834//994 835//995 +f 835//995 828//988 827//987 +f 828//988 835//995 836//996 +f 836//996 829//989 828//988 +f 829//989 836//996 815//975 +s off +f 815//4 815//4 829//4 +s 3 +f 584//712 592//720 837//934 +f 837//934 830//933 584//712 +s 5 +f 830//990 837//997 838//998 +f 838//998 831//991 830//990 +f 831//991 838//998 839//999 +f 839//999 832//992 831//991 +f 832//992 839//999 840//1000 +f 840//1000 833//993 832//992 +f 833//993 840//1000 841//1001 +f 841//1001 834//994 833//993 +f 834//994 841//1001 842//1002 +f 842//1002 835//995 834//994 +f 835//995 842//1002 843//1003 +f 843//1003 836//996 835//995 +f 836//996 843//1003 815//975 +s off +f 815//5 815//5 836//5 +s 3 +f 592//720 600//728 844//935 +f 844//935 837//934 592//720 +s 5 +f 837//997 844//1004 845//1005 +f 845//1005 838//998 837//997 +f 838//998 845//1005 846//1006 +f 846//1006 839//999 838//998 +f 839//999 846//1006 847//1007 +f 847//1007 840//1000 839//999 +f 840//1000 847//1007 848//1008 +f 848//1008 841//1001 840//1000 +f 841//1001 848//1008 849//1009 +f 849//1009 842//1002 841//1001 +f 842//1002 849//1009 850//1010 +f 850//1010 843//1003 842//1002 +f 843//1003 850//1010 815//975 +s off +f 815//6 815//6 843//6 +s 3 +f 600//728 608//736 851//936 +f 851//936 844//935 600//728 +s 5 +f 844//1004 851//1011 852//1012 +f 852//1012 845//1005 844//1004 +f 845//1005 852//1012 853//1013 +f 853//1013 846//1006 845//1005 +f 846//1006 853//1013 854//1014 +f 854//1014 847//1007 846//1006 +f 847//1007 854//1014 855//1015 +f 855//1015 848//1008 847//1007 +f 848//1008 855//1015 856//1016 +f 856//1016 849//1009 848//1008 +f 849//1009 856//1016 857//1017 +f 857//1017 850//1010 849//1009 +f 850//1010 857//1017 815//975 +s off +f 815//7 815//7 850//7 +s 3 +f 608//736 616//744 858//937 +f 858//937 851//936 608//736 +s 5 +f 851//1011 858//1018 859//1019 +f 859//1019 852//1012 851//1011 +f 852//1012 859//1019 860//1020 +f 860//1020 853//1013 852//1012 +f 853//1013 860//1020 861//1021 +f 861//1021 854//1014 853//1013 +f 854//1014 861//1021 862//1022 +f 862//1022 855//1015 854//1014 +f 855//1015 862//1022 863//1023 +f 863//1023 856//1016 855//1015 +f 856//1016 863//1023 864//1024 +f 864//1024 857//1017 856//1016 +f 857//1017 864//1024 815//975 +s off +f 815//8 815//8 857//8 +s 3 +f 616//744 624//752 865//938 +f 865//938 858//937 616//744 +s 5 +f 858//1018 865//1025 866//1026 +f 866//1026 859//1019 858//1018 +f 859//1019 866//1026 867//1027 +f 867//1027 860//1020 859//1019 +f 860//1020 867//1027 868//1028 +f 868//1028 861//1021 860//1020 +f 861//1021 868//1028 869//1029 +f 869//1029 862//1022 861//1021 +f 862//1022 869//1029 870//1030 +f 870//1030 863//1023 862//1022 +f 863//1023 870//1030 871//1031 +f 871//1031 864//1024 863//1023 +f 864//1024 871//1031 815//975 +s off +f 815//9 815//9 864//9 +s 3 +f 624//752 632//760 872//939 +f 872//939 865//938 624//752 +s 5 +f 865//1025 872//1032 873//1033 +f 873//1033 866//1026 865//1025 +f 866//1026 873//1033 874//1034 +f 874//1034 867//1027 866//1026 +f 867//1027 874//1034 875//1035 +f 875//1035 868//1028 867//1027 +f 868//1028 875//1035 876//1036 +f 876//1036 869//1029 868//1028 +f 869//1029 876//1036 877//1037 +f 877//1037 870//1030 869//1029 +f 870//1030 877//1037 878//1038 +f 878//1038 871//1031 870//1030 +f 871//1031 878//1038 815//975 +s off +f 815//10 815//10 871//10 +s 3 +f 632//760 640//768 879//940 +f 879//940 872//939 632//760 +s 5 +f 872//1032 879//1039 880//1040 +f 880//1040 873//1033 872//1032 +f 873//1033 880//1040 881//1041 +f 881//1041 874//1034 873//1033 +f 874//1034 881//1041 882//1042 +f 882//1042 875//1035 874//1034 +f 875//1035 882//1042 883//1043 +f 883//1043 876//1036 875//1035 +f 876//1036 883//1043 884//1044 +f 884//1044 877//1037 876//1036 +f 877//1037 884//1044 885//1045 +f 885//1045 878//1038 877//1037 +f 878//1038 885//1045 815//975 +s off +f 815//11 815//11 878//11 +s 3 +f 640//768 648//776 886//941 +f 886//941 879//940 640//768 +s 5 +f 879//1039 886//1046 887//1047 +f 887//1047 880//1040 879//1039 +f 880//1040 887//1047 888//1048 +f 888//1048 881//1041 880//1040 +f 881//1041 888//1048 889//1049 +f 889//1049 882//1042 881//1041 +f 882//1042 889//1049 890//1050 +f 890//1050 883//1043 882//1042 +f 883//1043 890//1050 891//1051 +f 891//1051 884//1044 883//1043 +f 884//1044 891//1051 892//1052 +f 892//1052 885//1045 884//1044 +f 885//1045 892//1052 815//975 +s off +f 815//12 815//12 885//12 +s 3 +f 648//776 656//784 893//942 +f 893//942 886//941 648//776 +s 5 +f 886//1046 893//1053 894//1054 +f 894//1054 887//1047 886//1046 +f 887//1047 894//1054 895//1055 +f 895//1055 888//1048 887//1047 +f 888//1048 895//1055 896//1056 +f 896//1056 889//1049 888//1048 +f 889//1049 896//1056 897//1057 +f 897//1057 890//1050 889//1049 +f 890//1050 897//1057 898//1058 +f 898//1058 891//1051 890//1050 +f 891//1051 898//1058 899//1059 +f 899//1059 892//1052 891//1051 +f 892//1052 899//1059 815//975 +s off +f 815//13 815//13 892//13 +s 3 +f 656//784 664//792 900//943 +f 900//943 893//942 656//784 +s 5 +f 893//1053 900//1060 901//1061 +f 901//1061 894//1054 893//1053 +f 894//1054 901//1061 902//1062 +f 902//1062 895//1055 894//1054 +f 895//1055 902//1062 903//1063 +f 903//1063 896//1056 895//1055 +f 896//1056 903//1063 904//1064 +f 904//1064 897//1057 896//1056 +f 897//1057 904//1064 905//1065 +f 905//1065 898//1058 897//1057 +f 898//1058 905//1065 906//1066 +f 906//1066 899//1059 898//1058 +f 899//1059 906//1066 815//975 +s off +f 815//14 815//14 899//14 +s 3 +f 664//792 672//800 907//944 +f 907//944 900//943 664//792 +s 5 +f 900//1060 907//1067 908//1068 +f 908//1068 901//1061 900//1060 +f 901//1061 908//1068 909//1069 +f 909//1069 902//1062 901//1061 +f 902//1062 909//1069 910//1070 +f 910//1070 903//1063 902//1062 +f 903//1063 910//1070 911//1071 +f 911//1071 904//1064 903//1063 +f 904//1064 911//1071 912//1072 +f 912//1072 905//1065 904//1064 +f 905//1065 912//1072 913//1073 +f 913//1073 906//1066 905//1065 +f 906//1066 913//1073 815//975 +s off +f 815//15 815//15 906//15 +s 3 +f 672//800 680//808 914//945 +f 914//945 907//944 672//800 +s 5 +f 907//1067 914//1074 915//1075 +f 915//1075 908//1068 907//1067 +f 908//1068 915//1075 916//1076 +f 916//1076 909//1069 908//1068 +f 909//1069 916//1076 917//1077 +f 917//1077 910//1070 909//1069 +f 910//1070 917//1077 918//1078 +f 918//1078 911//1071 910//1070 +f 911//1071 918//1078 919//1079 +f 919//1079 912//1072 911//1071 +f 912//1072 919//1079 920//1080 +f 920//1080 913//1073 912//1072 +f 913//1073 920//1080 815//975 +s off +f 815//16 815//16 913//16 +s 3 +f 680//808 688//816 921//946 +f 921//946 914//945 680//808 +s 5 +f 914//1074 921//1081 922//1082 +f 922//1082 915//1075 914//1074 +f 915//1075 922//1082 923//1083 +f 923//1083 916//1076 915//1075 +f 916//1076 923//1083 924//1084 +f 924//1084 917//1077 916//1076 +f 917//1077 924//1084 925//1085 +f 925//1085 918//1078 917//1077 +f 918//1078 925//1085 926//1086 +f 926//1086 919//1079 918//1078 +f 919//1079 926//1086 927//1087 +f 927//1087 920//1080 919//1079 +f 920//1080 927//1087 815//975 +s off +f 815//17 815//17 920//17 +s 3 +f 688//816 696//824 928//947 +f 928//947 921//946 688//816 +s 5 +f 921//1081 928//1088 929//1089 +f 929//1089 922//1082 921//1081 +f 922//1082 929//1089 930//1090 +f 930//1090 923//1083 922//1082 +f 923//1083 930//1090 931//1091 +f 931//1091 924//1084 923//1083 +f 924//1084 931//1091 932//1092 +f 932//1092 925//1085 924//1084 +f 925//1085 932//1092 933//1093 +f 933//1093 926//1086 925//1085 +f 926//1086 933//1093 934//1094 +f 934//1094 927//1087 926//1086 +f 927//1087 934//1094 815//975 +s off +f 815//18 815//18 927//18 +s 3 +f 696//824 704//832 935//948 +f 935//948 928//947 696//824 +s 5 +f 928//1088 935//1095 936//1096 +f 936//1096 929//1089 928//1088 +f 929//1089 936//1096 937//1097 +f 937//1097 930//1090 929//1089 +f 930//1090 937//1097 938//1098 +f 938//1098 931//1091 930//1090 +f 931//1091 938//1098 939//1099 +f 939//1099 932//1092 931//1091 +f 932//1092 939//1099 940//1100 +f 940//1100 933//1093 932//1092 +f 933//1093 940//1100 941//1101 +f 941//1101 934//1094 933//1093 +f 934//1094 941//1101 815//975 +s off +f 815//19 815//19 934//19 +s 3 +f 704//832 712//840 942//949 +f 942//949 935//948 704//832 +s 5 +f 935//1095 942//1102 943//1103 +f 943//1103 936//1096 935//1095 +f 936//1096 943//1103 944//1104 +f 944//1104 937//1097 936//1096 +f 937//1097 944//1104 945//1105 +f 945//1105 938//1098 937//1097 +f 938//1098 945//1105 946//1106 +f 946//1106 939//1099 938//1098 +f 939//1099 946//1106 947//1107 +f 947//1107 940//1100 939//1099 +f 940//1100 947//1107 948//1108 +f 948//1108 941//1101 940//1100 +f 941//1101 948//1108 815//975 +s off +f 815//20 815//20 941//20 +s 3 +f 712//840 720//848 949//950 +f 949//950 942//949 712//840 +s 5 +f 942//1102 949//1109 950//1110 +f 950//1110 943//1103 942//1102 +f 943//1103 950//1110 951//1111 +f 951//1111 944//1104 943//1103 +f 944//1104 951//1111 952//1112 +f 952//1112 945//1105 944//1104 +f 945//1105 952//1112 953//1113 +f 953//1113 946//1106 945//1105 +f 946//1106 953//1113 954//1114 +f 954//1114 947//1107 946//1106 +f 947//1107 954//1114 955//1115 +f 955//1115 948//1108 947//1107 +f 948//1108 955//1115 815//975 +s off +f 815//21 815//21 948//21 +s 3 +f 720//848 728//856 956//951 +f 956//951 949//950 720//848 +s 5 +f 949//1109 956//1116 957//1117 +f 957//1117 950//1110 949//1109 +f 950//1110 957//1117 958//1118 +f 958//1118 951//1111 950//1110 +f 951//1111 958//1118 959//1119 +f 959//1119 952//1112 951//1111 +f 952//1112 959//1119 960//1120 +f 960//1120 953//1113 952//1112 +f 953//1113 960//1120 961//1121 +f 961//1121 954//1114 953//1113 +f 954//1114 961//1121 962//1122 +f 962//1122 955//1115 954//1114 +f 955//1115 962//1122 815//975 +s off +f 815//22 815//22 955//22 +s 3 +f 728//856 736//864 963//952 +f 963//952 956//951 728//856 +s 5 +f 956//1116 963//1123 964//1124 +f 964//1124 957//1117 956//1116 +f 957//1117 964//1124 965//1125 +f 965//1125 958//1118 957//1117 +f 958//1118 965//1125 966//1126 +f 966//1126 959//1119 958//1118 +f 959//1119 966//1126 967//1127 +f 967//1127 960//1120 959//1119 +f 960//1120 967//1127 968//1128 +f 968//1128 961//1121 960//1120 +f 961//1121 968//1128 969//1129 +f 969//1129 962//1122 961//1121 +f 962//1122 969//1129 815//975 +s off +f 815//23 815//23 962//23 +s 3 +f 736//864 744//872 970//953 +f 970//953 963//952 736//864 +s 5 +f 963//1123 970//1130 971//1131 +f 971//1131 964//1124 963//1123 +f 964//1124 971//1131 972//1132 +f 972//1132 965//1125 964//1124 +f 965//1125 972//1132 973//1133 +f 973//1133 966//1126 965//1125 +f 966//1126 973//1133 974//1134 +f 974//1134 967//1127 966//1126 +f 967//1127 974//1134 975//1135 +f 975//1135 968//1128 967//1127 +f 968//1128 975//1135 976//1136 +f 976//1136 969//1129 968//1128 +f 969//1129 976//1136 815//975 +s off +f 815//24 815//24 969//24 +s 3 +f 744//872 752//880 977//954 +f 977//954 970//953 744//872 +s 5 +f 970//1130 977//1137 978//1138 +f 978//1138 971//1131 970//1130 +f 971//1131 978//1138 979//1139 +f 979//1139 972//1132 971//1131 +f 972//1132 979//1139 980//1140 +f 980//1140 973//1133 972//1132 +f 973//1133 980//1140 981//1141 +f 981//1141 974//1134 973//1133 +f 974//1134 981//1141 982//1142 +f 982//1142 975//1135 974//1134 +f 975//1135 982//1142 983//1143 +f 983//1143 976//1136 975//1135 +f 976//1136 983//1143 815//975 +s off +f 815//25 815//25 976//25 +s 3 +f 752//880 760//888 984//955 +f 984//955 977//954 752//880 +s 5 +f 977//1137 984//1144 985//1145 +f 985//1145 978//1138 977//1137 +f 978//1138 985//1145 986//1146 +f 986//1146 979//1139 978//1138 +f 979//1139 986//1146 987//1147 +f 987//1147 980//1140 979//1139 +f 980//1140 987//1147 988//1148 +f 988//1148 981//1141 980//1140 +f 981//1141 988//1148 989//1149 +f 989//1149 982//1142 981//1141 +f 982//1142 989//1149 990//1150 +f 990//1150 983//1143 982//1142 +f 983//1143 990//1150 815//975 +s off +f 815//26 815//26 983//26 +s 3 +f 760//888 768//896 991//956 +f 991//956 984//955 760//888 +s 5 +f 984//1144 991//1151 992//1152 +f 992//1152 985//1145 984//1144 +f 985//1145 992//1152 993//1153 +f 993//1153 986//1146 985//1145 +f 986//1146 993//1153 994//1154 +f 994//1154 987//1147 986//1146 +f 987//1147 994//1154 995//1155 +f 995//1155 988//1148 987//1147 +f 988//1148 995//1155 996//1156 +f 996//1156 989//1149 988//1148 +f 989//1149 996//1156 997//1157 +f 997//1157 990//1150 989//1149 +f 990//1150 997//1157 815//975 +s off +f 815//27 815//27 990//27 +s 3 +f 768//896 776//904 998//957 +f 998//957 991//956 768//896 +s 5 +f 991//1151 998//1158 999//1159 +f 999//1159 992//1152 991//1151 +f 992//1152 999//1159 1000//1160 +f 1000//1160 993//1153 992//1152 +f 993//1153 1000//1160 1001//1161 +f 1001//1161 994//1154 993//1153 +f 994//1154 1001//1161 1002//1162 +f 1002//1162 995//1155 994//1154 +f 995//1155 1002//1162 1003//1163 +f 1003//1163 996//1156 995//1155 +f 996//1156 1003//1163 1004//1164 +f 1004//1164 997//1157 996//1156 +f 997//1157 1004//1164 815//975 +s off +f 815//28 815//28 997//28 +s 3 +f 776//904 784//912 1005//958 +f 1005//958 998//957 776//904 +s 5 +f 998//1158 1005//1165 1006//1166 +f 1006//1166 999//1159 998//1158 +f 999//1159 1006//1166 1007//1167 +f 1007//1167 1000//1160 999//1159 +f 1000//1160 1007//1167 1008//1168 +f 1008//1168 1001//1161 1000//1160 +f 1001//1161 1008//1168 1009//1169 +f 1009//1169 1002//1162 1001//1161 +f 1002//1162 1009//1169 1010//1170 +f 1010//1170 1003//1163 1002//1162 +f 1003//1163 1010//1170 1011//1171 +f 1011//1171 1004//1164 1003//1163 +f 1004//1164 1011//1171 815//975 +s off +f 815//29 815//29 1004//29 +s 3 +f 784//912 792//920 1012//959 +f 1012//959 1005//958 784//912 +s 5 +f 1005//1165 1012//1172 1013//1173 +f 1013//1173 1006//1166 1005//1165 +f 1006//1166 1013//1173 1014//1174 +f 1014//1174 1007//1167 1006//1166 +f 1007//1167 1014//1174 1015//1175 +f 1015//1175 1008//1168 1007//1167 +f 1008//1168 1015//1175 1016//1176 +f 1016//1176 1009//1169 1008//1168 +f 1009//1169 1016//1176 1017//1177 +f 1017//1177 1010//1170 1009//1169 +f 1010//1170 1017//1177 1018//1178 +f 1018//1178 1011//1171 1010//1170 +f 1011//1171 1018//1178 815//975 +s off +f 815//30 815//30 1011//30 +s 3 +f 792//920 800//928 1019//960 +f 1019//960 1012//959 792//920 +s 5 +f 1012//1172 1019//1179 1020//1180 +f 1020//1180 1013//1173 1012//1172 +f 1013//1173 1020//1180 1021//1181 +f 1021//1181 1014//1174 1013//1173 +f 1014//1174 1021//1181 1022//1182 +f 1022//1182 1015//1175 1014//1174 +f 1015//1175 1022//1182 1023//1183 +f 1023//1183 1016//1176 1015//1175 +f 1016//1176 1023//1183 1024//1184 +f 1024//1184 1017//1177 1016//1176 +f 1017//1177 1024//1184 1025//1185 +f 1025//1185 1018//1178 1017//1177 +f 1018//1178 1025//1185 815//975 +s off +f 815//31 815//31 1018//31 +s 3 +f 800//928 560//688 802//930 +f 802//930 1019//960 800//928 +s 5 +f 1019//1179 802//962 804//964 +f 804//964 1020//1180 1019//1179 +f 1020//1180 804//964 806//966 +f 806//966 1021//1181 1020//1180 +f 1021//1181 806//966 808//968 +f 808//968 1022//1182 1021//1181 +f 1022//1182 808//968 810//970 +f 810//970 1023//1183 1022//1182 +f 1023//1183 810//970 812//972 +f 812//972 1024//1184 1023//1183 +f 1024//1184 812//972 814//974 +f 814//974 1025//1185 1024//1184 +f 1025//1185 814//974 815//975 +s off +f 815//32 815//32 1025//32 +s 4 +f 1026//1187 1027//1188 1028//1189 +f 1028//1189 1029//1190 1026//1187 +f 1029//1190 1028//1189 1030//1191 +f 1030//1191 1031//1192 1029//1190 +f 1031//1192 1030//1191 1032//1193 +f 1032//1193 1033//1194 1031//1192 +f 1033//1194 1032//1193 1034//1195 +f 1034//1195 1035//1196 1033//1194 +f 1035//1196 1034//1195 1036//1197 +f 1036//1197 1037//1198 1035//1196 +f 1037//1198 1036//1197 1038//1199 +f 1038//1199 1039//1200 1037//1198 +f 1039//1200 1038//1199 1040//1201 +f 1040//1201 1041//1202 1039//1200 +f 1041//1202 1040//1201 1042//1203 +f 1042//1203 1043//1204 1041//1202 +f 1027//1188 1044//1205 1045//1206 +f 1045//1206 1028//1189 1027//1188 +f 1028//1189 1045//1206 1046//1207 +f 1046//1207 1030//1191 1028//1189 +f 1030//1191 1046//1207 1047//1208 +f 1047//1208 1032//1193 1030//1191 +f 1032//1193 1047//1208 1048//1209 +f 1048//1209 1034//1195 1032//1193 +f 1034//1195 1048//1209 1049//1210 +f 1049//1210 1036//1197 1034//1195 +f 1036//1197 1049//1210 1050//1211 +f 1050//1211 1038//1199 1036//1197 +f 1038//1199 1050//1211 1051//1212 +f 1051//1212 1040//1201 1038//1199 +f 1040//1201 1051//1212 1052//1213 +f 1052//1213 1042//1203 1040//1201 +f 1044//1205 1053//1214 1054//1215 +f 1054//1215 1045//1206 1044//1205 +f 1045//1206 1054//1215 1055//1216 +f 1055//1216 1046//1207 1045//1206 +f 1046//1207 1055//1216 1056//1217 +f 1056//1217 1047//1208 1046//1207 +f 1047//1208 1056//1217 1057//1218 +f 1057//1218 1048//1209 1047//1208 +f 1048//1209 1057//1218 1058//1219 +f 1058//1219 1049//1210 1048//1209 +f 1049//1210 1058//1219 1059//1220 +f 1059//1220 1050//1211 1049//1210 +f 1050//1211 1059//1220 1060//1221 +f 1060//1221 1051//1212 1050//1211 +f 1051//1212 1060//1221 1061//1222 +f 1061//1222 1052//1213 1051//1212 +s 6 +f 1053//1439 1062//1443 1063//1444 +f 1063//1444 1054//1440 1053//1439 +f 1054//1440 1063//1444 1064//1445 +f 1064//1445 1055//1441 1054//1440 +f 1055//1441 1064//1445 1065//1446 +f 1065//1446 1056//1442 1055//1441 +f 1056//1442 1065//1446 1066//1447 +s 4 +f 1066//1227 1057//1218 1056//1217 +f 1057//1218 1066//1227 1067//1228 +f 1067//1228 1058//1219 1057//1218 +f 1058//1219 1067//1228 1068//1229 +f 1068//1229 1059//1220 1058//1219 +f 1059//1220 1068//1229 1069//1230 +f 1069//1230 1060//1221 1059//1220 +f 1060//1221 1069//1230 1070//1231 +f 1070//1231 1061//1222 1060//1221 +f 1062//1223 1071//1232 1072//1233 +f 1072//1233 1063//1224 1062//1223 +f 1063//1224 1072//1233 1073//1234 +f 1073//1234 1064//1225 1063//1224 +f 1064//1225 1073//1234 1074//1235 +f 1074//1235 1065//1226 1064//1225 +f 1065//1226 1074//1235 1075//1236 +f 1075//1236 1066//1227 1065//1226 +f 1066//1227 1075//1236 1076//1237 +f 1076//1237 1067//1228 1066//1227 +f 1067//1228 1076//1237 1077//1238 +f 1077//1238 1068//1229 1067//1228 +f 1068//1229 1077//1238 1078//1239 +f 1078//1239 1069//1230 1068//1229 +f 1069//1230 1078//1239 1079//1240 +f 1079//1240 1070//1231 1069//1230 +f 1071//1232 1080//1241 1081//1242 +f 1081//1242 1072//1233 1071//1232 +f 1072//1233 1081//1242 1082//1243 +f 1082//1243 1073//1234 1072//1233 +f 1073//1234 1082//1243 1083//1244 +f 1083//1244 1074//1235 1073//1234 +f 1074//1235 1083//1244 1084//1245 +f 1084//1245 1075//1236 1074//1235 +f 1075//1236 1084//1245 1085//1246 +f 1085//1246 1076//1237 1075//1236 +f 1076//1237 1085//1246 1086//1247 +f 1086//1247 1077//1238 1076//1237 +f 1077//1238 1086//1247 1087//1248 +f 1087//1248 1078//1239 1077//1238 +f 1078//1239 1087//1248 1088//1249 +f 1088//1249 1079//1240 1078//1239 +f 1080//1241 1089//1250 1090//1251 +f 1090//1251 1081//1242 1080//1241 +f 1081//1242 1090//1251 1091//1252 +f 1091//1252 1082//1243 1081//1242 +f 1082//1243 1091//1252 1092//1253 +f 1092//1253 1083//1244 1082//1243 +f 1083//1244 1092//1253 1093//1254 +f 1093//1254 1084//1245 1083//1244 +f 1084//1245 1093//1254 1094//1255 +f 1094//1255 1085//1246 1084//1245 +f 1085//1246 1094//1255 1095//1256 +f 1095//1256 1086//1247 1085//1246 +f 1086//1247 1095//1256 1096//1257 +f 1096//1257 1087//1248 1086//1247 +f 1087//1248 1096//1257 1097//1258 +f 1097//1258 1088//1249 1087//1248 +f 1089//1250 1098//1259 1099//1260 +f 1099//1260 1090//1251 1089//1250 +f 1090//1251 1099//1260 1100//1261 +f 1100//1261 1091//1252 1090//1251 +f 1091//1252 1100//1261 1101//1262 +f 1101//1262 1092//1253 1091//1252 +f 1092//1253 1101//1262 1102//1263 +f 1102//1263 1093//1254 1092//1253 +f 1093//1254 1102//1263 1103//1264 +f 1103//1264 1094//1255 1093//1254 +f 1094//1255 1103//1264 1104//1265 +f 1104//1265 1095//1256 1094//1255 +f 1095//1256 1104//1265 1105//1266 +f 1105//1266 1096//1257 1095//1256 +f 1096//1257 1105//1266 1106//1267 +f 1106//1267 1097//1258 1096//1257 +f 1098//1259 1107//1268 1108//1269 +f 1108//1269 1099//1260 1098//1259 +f 1099//1260 1108//1269 1109//1270 +f 1109//1270 1100//1261 1099//1260 +f 1100//1261 1109//1270 1110//1271 +f 1110//1271 1101//1262 1100//1261 +f 1101//1262 1110//1271 1111//1272 +f 1111//1272 1102//1263 1101//1262 +f 1102//1263 1111//1272 1112//1273 +f 1112//1273 1103//1264 1102//1263 +f 1103//1264 1112//1273 1113//1274 +f 1113//1274 1104//1265 1103//1264 +f 1104//1265 1113//1274 1114//1275 +f 1114//1275 1105//1266 1104//1265 +f 1105//1266 1114//1275 1115//1276 +f 1115//1276 1106//1267 1105//1266 +f 1107//1268 1116//1277 1117//1278 +f 1117//1278 1108//1269 1107//1268 +f 1108//1269 1117//1278 1118//1279 +f 1118//1279 1109//1270 1108//1269 +f 1109//1270 1118//1279 1119//1280 +f 1119//1280 1110//1271 1109//1270 +f 1110//1271 1119//1280 1120//1281 +f 1120//1281 1111//1272 1110//1271 +f 1111//1272 1120//1281 1121//1282 +f 1121//1282 1112//1273 1111//1272 +f 1112//1273 1121//1282 1122//1283 +f 1122//1283 1113//1274 1112//1273 +f 1113//1274 1122//1283 1123//1284 +f 1123//1284 1114//1275 1113//1274 +f 1114//1275 1123//1284 1124//1285 +f 1124//1285 1115//1276 1114//1275 +f 1116//1277 1125//1286 1126//1287 +f 1126//1287 1117//1278 1116//1277 +f 1117//1278 1126//1287 1127//1288 +f 1127//1288 1118//1279 1117//1278 +f 1118//1279 1127//1288 1128//1289 +f 1128//1289 1119//1280 1118//1279 +f 1119//1280 1128//1289 1129//1290 +f 1129//1290 1120//1281 1119//1280 +f 1120//1281 1129//1290 1130//1291 +f 1130//1291 1121//1282 1120//1281 +f 1121//1282 1130//1291 1131//1292 +f 1131//1292 1122//1283 1121//1282 +f 1122//1283 1131//1292 1132//1293 +f 1132//1293 1123//1284 1122//1283 +f 1123//1284 1132//1293 1133//1294 +f 1133//1294 1124//1285 1123//1284 +s 6 +f 1125//1448 1134//1452 1135//1453 +f 1135//1453 1126//1449 1125//1448 +f 1126//1449 1135//1453 1136//1454 +f 1136//1454 1127//1450 1126//1449 +f 1127//1450 1136//1454 1137//1455 +f 1137//1455 1128//1451 1127//1450 +f 1128//1451 1137//1455 1138//1456 +s 4 +f 1138//1295 1129//1290 1128//1289 +f 1129//1290 1138//1295 1139//1296 +f 1139//1296 1130//1291 1129//1290 +f 1130//1291 1139//1296 1140//1297 +f 1140//1297 1131//1292 1130//1291 +f 1131//1292 1140//1297 1141//1298 +f 1141//1298 1132//1293 1131//1292 +f 1132//1293 1141//1298 1142//1299 +f 1142//1299 1133//1294 1132//1293 +s 6 +f 1134//1452 1143//1459 1144//1460 +f 1144//1460 1135//1453 1134//1452 +f 1135//1453 1144//1460 1145//1461 +f 1145//1461 1136//1454 1135//1453 +f 1136//1454 1145//1461 1146//1462 +f 1146//1462 1137//1455 1136//1454 +f 1137//1455 1146//1462 1147//1463 +f 1147//1463 1138//1456 1137//1455 +f 1138//1456 1147//1463 1148//1464 +f 1148//1464 1139//1457 1138//1456 +f 1139//1457 1148//1464 1149//1465 +f 1149//1465 1140//1458 1139//1457 +f 1140//1458 1149//1465 1150//1466 +s 4 +f 1150//1300 1141//1298 1140//1297 +f 1141//1298 1150//1300 1151//1301 +f 1151//1301 1142//1299 1141//1298 +s 6 +f 1143//1459 1152//1467 1153//1468 +f 1153//1468 1144//1460 1143//1459 +f 1144//1460 1153//1468 1154//1469 +f 1154//1469 1145//1461 1144//1460 +f 1145//1461 1154//1469 1155//1470 +f 1155//1470 1146//1462 1145//1461 +f 1146//1462 1155//1470 1156//1471 +f 1156//1471 1147//1463 1146//1462 +f 1147//1463 1156//1471 1157//1472 +f 1157//1472 1148//1464 1147//1463 +f 1148//1464 1157//1472 1158//1473 +f 1158//1473 1149//1465 1148//1464 +f 1149//1465 1158//1473 1159//1474 +f 1159//1474 1150//1466 1149//1465 +f 1150//1466 1159//1474 1160//1475 +s 4 +f 1160//1302 1151//1301 1150//1300 +s 6 +f 1152//1467 1161//1476 1162//1477 +f 1162//1477 1153//1468 1152//1467 +f 1153//1468 1162//1477 1163//1478 +f 1163//1478 1154//1469 1153//1468 +f 1154//1469 1163//1478 1164//1479 +f 1164//1479 1155//1470 1154//1469 +f 1155//1470 1164//1479 1165//1480 +f 1165//1480 1156//1471 1155//1470 +f 1156//1471 1165//1480 1166//1481 +f 1166//1481 1157//1472 1156//1471 +f 1157//1472 1166//1481 1167//1482 +f 1167//1482 1158//1473 1157//1472 +f 1158//1473 1167//1482 1168//1483 +f 1168//1483 1159//1474 1158//1473 +f 1159//1474 1168//1483 1169//1484 +f 1169//1484 1160//1475 1159//1474 +s 4 +f 1161//1303 1026//1187 1029//1190 +f 1029//1190 1162//1304 1161//1303 +f 1162//1304 1029//1190 1031//1192 +f 1031//1192 1163//1305 1162//1304 +f 1163//1305 1031//1192 1033//1194 +f 1033//1194 1164//1306 1163//1305 +f 1164//1306 1033//1194 1035//1196 +f 1035//1196 1165//1307 1164//1306 +f 1165//1307 1035//1196 1037//1198 +f 1037//1198 1166//1308 1165//1307 +f 1166//1308 1037//1198 1039//1200 +f 1039//1200 1167//1309 1166//1308 +f 1167//1309 1039//1200 1041//1202 +f 1041//1202 1168//1310 1167//1309 +f 1168//1310 1041//1202 1043//1204 +f 1043//1204 1169//1311 1168//1310 +f 1043//1204 1042//1203 1170//1312 +f 1170//1312 1171//1313 1043//1204 +f 1171//1313 1170//1312 1172//1314 +f 1172//1314 1173//1315 1171//1313 +f 1173//1315 1172//1314 1174//1316 +f 1174//1316 1175//1317 1173//1315 +f 1175//1317 1174//1316 1176//1318 +f 1176//1318 1177//1319 1175//1317 +f 1177//1319 1176//1318 1178//1320 +f 1178//1320 1179//1321 1177//1319 +f 1179//1321 1178//1320 1180//1322 +f 1180//1322 1181//1323 1179//1321 +f 1181//1323 1180//1322 1182//1324 +f 1182//1324 1183//1325 1181//1323 +f 1183//1325 1182//1324 1184//1326 +f 1184//1326 424//1186 1183//1325 +f 1042//1203 1052//1213 1185//1327 +f 1185//1327 1170//1312 1042//1203 +f 1170//1312 1185//1327 1186//1328 +f 1186//1328 1172//1314 1170//1312 +f 1172//1314 1186//1328 1187//1329 +f 1187//1329 1174//1316 1172//1314 +f 1174//1316 1187//1329 1188//1330 +f 1188//1330 1176//1318 1174//1316 +f 1176//1318 1188//1330 1189//1331 +f 1189//1331 1178//1320 1176//1318 +f 1178//1320 1189//1331 1190//1332 +f 1190//1332 1180//1322 1178//1320 +f 1180//1322 1190//1332 1191//1333 +f 1191//1333 1182//1324 1180//1322 +f 1182//1324 1191//1333 1192//1334 +f 1192//1334 1184//1326 1182//1324 +f 1052//1213 1061//1222 1193//1335 +f 1193//1335 1185//1327 1052//1213 +f 1185//1327 1193//1335 1194//1336 +f 1194//1336 1186//1328 1185//1327 +f 1186//1328 1194//1336 1195//1337 +f 1195//1337 1187//1329 1186//1328 +f 1187//1329 1195//1337 1196//1338 +f 1196//1338 1188//1330 1187//1329 +f 1188//1330 1196//1338 1197//1339 +f 1197//1339 1189//1331 1188//1330 +f 1189//1331 1197//1339 1198//1340 +f 1198//1340 1190//1332 1189//1331 +f 1190//1332 1198//1340 1199//1341 +f 1199//1341 1191//1333 1190//1332 +f 1191//1333 1199//1341 1200//1342 +f 1200//1342 1192//1334 1191//1333 +f 1061//1222 1070//1231 1201//1343 +f 1201//1343 1193//1335 1061//1222 +f 1193//1335 1201//1343 1202//1344 +f 1202//1344 1194//1336 1193//1335 +f 1194//1336 1202//1344 1203//1345 +f 1203//1345 1195//1337 1194//1336 +f 1195//1337 1203//1345 1204//1346 +f 1204//1346 1196//1338 1195//1337 +f 1196//1338 1204//1346 1205//1347 +f 1205//1347 1197//1339 1196//1338 +f 1197//1339 1205//1347 1206//1348 +f 1206//1348 1198//1340 1197//1339 +f 1198//1340 1206//1348 1207//1349 +f 1207//1349 1199//1341 1198//1340 +f 1199//1341 1207//1349 1208//1350 +f 1208//1350 1200//1342 1199//1341 +f 1070//1231 1079//1240 1209//1351 +f 1209//1351 1201//1343 1070//1231 +f 1201//1343 1209//1351 1210//1352 +f 1210//1352 1202//1344 1201//1343 +f 1202//1344 1210//1352 1211//1353 +f 1211//1353 1203//1345 1202//1344 +f 1203//1345 1211//1353 1212//1354 +f 1212//1354 1204//1346 1203//1345 +f 1204//1346 1212//1354 1213//1355 +f 1213//1355 1205//1347 1204//1346 +f 1205//1347 1213//1355 1214//1356 +f 1214//1356 1206//1348 1205//1347 +f 1206//1348 1214//1356 1215//1357 +f 1215//1357 1207//1349 1206//1348 +f 1207//1349 1215//1357 1216//1358 +f 1216//1358 1208//1350 1207//1349 +f 1079//1240 1088//1249 1217//1359 +f 1217//1359 1209//1351 1079//1240 +f 1209//1351 1217//1359 1218//1360 +f 1218//1360 1210//1352 1209//1351 +f 1210//1352 1218//1360 1219//1361 +f 1219//1361 1211//1353 1210//1352 +f 1211//1353 1219//1361 1220//1362 +f 1220//1362 1212//1354 1211//1353 +f 1212//1354 1220//1362 1221//1363 +f 1221//1363 1213//1355 1212//1354 +f 1213//1355 1221//1363 1222//1364 +f 1222//1364 1214//1356 1213//1355 +f 1214//1356 1222//1364 1223//1365 +f 1223//1365 1215//1357 1214//1356 +f 1215//1357 1223//1365 1224//1366 +f 1224//1366 1216//1358 1215//1357 +f 1088//1249 1097//1258 1225//1367 +f 1225//1367 1217//1359 1088//1249 +f 1217//1359 1225//1367 1226//1368 +f 1226//1368 1218//1360 1217//1359 +f 1218//1360 1226//1368 1227//1369 +f 1227//1369 1219//1361 1218//1360 +f 1219//1361 1227//1369 1228//1370 +f 1228//1370 1220//1362 1219//1361 +f 1220//1362 1228//1370 1229//1371 +f 1229//1371 1221//1363 1220//1362 +f 1221//1363 1229//1371 1230//1372 +f 1230//1372 1222//1364 1221//1363 +f 1222//1364 1230//1372 1231//1373 +f 1231//1373 1223//1365 1222//1364 +f 1223//1365 1231//1373 1232//1374 +f 1232//1374 1224//1366 1223//1365 +f 1097//1258 1106//1267 1233//1375 +f 1233//1375 1225//1367 1097//1258 +f 1225//1367 1233//1375 1234//1376 +f 1234//1376 1226//1368 1225//1367 +f 1226//1368 1234//1376 1235//1377 +f 1235//1377 1227//1369 1226//1368 +f 1227//1369 1235//1377 1236//1378 +f 1236//1378 1228//1370 1227//1369 +f 1228//1370 1236//1378 1237//1379 +f 1237//1379 1229//1371 1228//1370 +f 1229//1371 1237//1379 1238//1380 +f 1238//1380 1230//1372 1229//1371 +f 1230//1372 1238//1380 1239//1381 +f 1239//1381 1231//1373 1230//1372 +f 1231//1373 1239//1381 1240//1382 +f 1240//1382 1232//1374 1231//1373 +f 1106//1267 1115//1276 1241//1383 +f 1241//1383 1233//1375 1106//1267 +f 1233//1375 1241//1383 1242//1384 +f 1242//1384 1234//1376 1233//1375 +f 1234//1376 1242//1384 1243//1385 +f 1243//1385 1235//1377 1234//1376 +f 1235//1377 1243//1385 1244//1386 +f 1244//1386 1236//1378 1235//1377 +f 1236//1378 1244//1386 1245//1387 +f 1245//1387 1237//1379 1236//1378 +f 1237//1379 1245//1387 1246//1388 +f 1246//1388 1238//1380 1237//1379 +f 1238//1380 1246//1388 1247//1389 +f 1247//1389 1239//1381 1238//1380 +f 1239//1381 1247//1389 1248//1390 +f 1248//1390 1240//1382 1239//1381 +f 1115//1276 1124//1285 1249//1391 +f 1249//1391 1241//1383 1115//1276 +f 1241//1383 1249//1391 1250//1392 +f 1250//1392 1242//1384 1241//1383 +f 1242//1384 1250//1392 1251//1393 +f 1251//1393 1243//1385 1242//1384 +f 1243//1385 1251//1393 1252//1394 +f 1252//1394 1244//1386 1243//1385 +f 1244//1386 1252//1394 1253//1395 +f 1253//1395 1245//1387 1244//1386 +f 1245//1387 1253//1395 1254//1396 +f 1254//1396 1246//1388 1245//1387 +f 1246//1388 1254//1396 1255//1397 +f 1255//1397 1247//1389 1246//1388 +f 1247//1389 1255//1397 1256//1398 +f 1256//1398 1248//1390 1247//1389 +f 1124//1285 1133//1294 1257//1399 +f 1257//1399 1249//1391 1124//1285 +f 1249//1391 1257//1399 1258//1400 +f 1258//1400 1250//1392 1249//1391 +f 1250//1392 1258//1400 1259//1401 +f 1259//1401 1251//1393 1250//1392 +f 1251//1393 1259//1401 1260//1402 +f 1260//1402 1252//1394 1251//1393 +f 1252//1394 1260//1402 1261//1403 +f 1261//1403 1253//1395 1252//1394 +f 1253//1395 1261//1403 1262//1404 +f 1262//1404 1254//1396 1253//1395 +f 1254//1396 1262//1404 1263//1405 +f 1263//1405 1255//1397 1254//1396 +f 1255//1397 1263//1405 1264//1406 +f 1264//1406 1256//1398 1255//1397 +f 1133//1294 1142//1299 1265//1407 +f 1265//1407 1257//1399 1133//1294 +f 1257//1399 1265//1407 1266//1408 +f 1266//1408 1258//1400 1257//1399 +f 1258//1400 1266//1408 1267//1409 +f 1267//1409 1259//1401 1258//1400 +f 1259//1401 1267//1409 1268//1410 +f 1268//1410 1260//1402 1259//1401 +f 1260//1402 1268//1410 1269//1411 +f 1269//1411 1261//1403 1260//1402 +f 1261//1403 1269//1411 1270//1412 +f 1270//1412 1262//1404 1261//1403 +f 1262//1404 1270//1412 1271//1413 +f 1271//1413 1263//1405 1262//1404 +f 1263//1405 1271//1413 1272//1414 +f 1272//1414 1264//1406 1263//1405 +f 1142//1299 1151//1301 1273//1415 +f 1273//1415 1265//1407 1142//1299 +f 1265//1407 1273//1415 1274//1416 +f 1274//1416 1266//1408 1265//1407 +f 1266//1408 1274//1416 1275//1417 +f 1275//1417 1267//1409 1266//1408 +f 1267//1409 1275//1417 1276//1418 +f 1276//1418 1268//1410 1267//1409 +f 1268//1410 1276//1418 1277//1419 +f 1277//1419 1269//1411 1268//1410 +f 1269//1411 1277//1419 1278//1420 +f 1278//1420 1270//1412 1269//1411 +f 1270//1412 1278//1420 1279//1421 +f 1279//1421 1271//1413 1270//1412 +f 1271//1413 1279//1421 1280//1422 +f 1280//1422 1272//1414 1271//1413 +f 1151//1301 1160//1302 1281//1423 +f 1281//1423 1273//1415 1151//1301 +f 1273//1415 1281//1423 1282//1424 +f 1282//1424 1274//1416 1273//1415 +f 1274//1416 1282//1424 1283//1425 +f 1283//1425 1275//1417 1274//1416 +f 1275//1417 1283//1425 1284//1426 +f 1284//1426 1276//1418 1275//1417 +f 1276//1418 1284//1426 1285//1427 +f 1285//1427 1277//1419 1276//1418 +f 1277//1419 1285//1427 1286//1428 +f 1286//1428 1278//1420 1277//1419 +f 1278//1420 1286//1428 1287//1429 +f 1287//1429 1279//1421 1278//1420 +f 1279//1421 1287//1429 1288//1430 +f 1288//1430 1280//1422 1279//1421 +s 6 +f 1160//1475 1169//1484 1289//1486 +s 4 +f 1289//1431 1281//1423 1160//1302 +f 1281//1423 1289//1431 1290//1432 +f 1290//1432 1282//1424 1281//1423 +f 1282//1424 1290//1432 1291//1433 +f 1291//1433 1283//1425 1282//1424 +f 1283//1425 1291//1433 1292//1434 +f 1292//1434 1284//1426 1283//1425 +f 1284//1426 1292//1434 1293//1435 +f 1293//1435 1285//1427 1284//1426 +f 1285//1427 1293//1435 1294//1436 +f 1294//1436 1286//1428 1285//1427 +f 1286//1428 1294//1436 1295//1437 +f 1295//1437 1287//1429 1286//1428 +f 1287//1429 1295//1437 1296//1438 +f 1296//1438 1288//1430 1287//1429 +f 1169//1311 1043//1204 1171//1313 +s 6 +f 1171//1485 1289//1486 1169//1484 +s 4 +f 1289//1431 1171//1313 1173//1315 +f 1173//1315 1290//1432 1289//1431 +f 1290//1432 1173//1315 1175//1317 +f 1175//1317 1291//1433 1290//1432 +f 1291//1433 1175//1317 1177//1319 +f 1177//1319 1292//1434 1291//1433 +f 1292//1434 1177//1319 1179//1321 +f 1179//1321 1293//1435 1292//1434 +f 1293//1435 1179//1321 1181//1323 +f 1181//1323 1294//1436 1293//1435 +f 1294//1436 1181//1323 1183//1325 +f 1183//1325 1295//1437 1294//1436 +f 1295//1437 1183//1325 424//1186 +f 424//1186 1296//1438 1295//1437 +s 14 +f 1297//1487 1298//1488 1299//1489 +f 1299//1489 1300//1490 1297//1487 +f 1300//1490 1299//1489 1301//1491 +f 1301//1491 1302//1492 1300//1490 +f 1302//1492 1301//1491 1303//1493 +f 1303//1493 1304//1494 1302//1492 +f 1304//1494 1303//1493 1305//1495 +f 1305//1495 1306//1496 1304//1494 +f 1306//1496 1305//1495 1307//1497 +f 1307//1497 1308//1498 1306//1496 +f 1308//1498 1307//1497 1309//1499 +f 1309//1499 1310//1500 1308//1498 +f 1310//1500 1309//1499 1311//1501 +f 1311//1501 1312//1502 1310//1500 +f 1312//1502 1311//1501 1313//1503 +f 1313//1503 1314//1504 1312//1502 +f 1298//1488 1315//1505 1316//1506 +f 1316//1506 1299//1489 1298//1488 +f 1299//1489 1316//1506 1317//1507 +f 1317//1507 1301//1491 1299//1489 +f 1301//1491 1317//1507 1318//1508 +f 1318//1508 1303//1493 1301//1491 +f 1303//1493 1318//1508 1319//1509 +f 1319//1509 1305//1495 1303//1493 +f 1305//1495 1319//1509 1320//1510 +f 1320//1510 1307//1497 1305//1495 +f 1307//1497 1320//1510 1321//1511 +f 1321//1511 1309//1499 1307//1497 +f 1309//1499 1321//1511 1322//1512 +f 1322//1512 1311//1501 1309//1499 +f 1311//1501 1322//1512 1323//1513 +f 1323//1513 1313//1503 1311//1501 +f 1315//1505 1324//1514 1325//1515 +f 1325//1515 1316//1506 1315//1505 +f 1316//1506 1325//1515 1326//1516 +f 1326//1516 1317//1507 1316//1506 +f 1317//1507 1326//1516 1327//1517 +f 1327//1517 1318//1508 1317//1507 +f 1318//1508 1327//1517 1328//1518 +f 1328//1518 1319//1509 1318//1508 +f 1319//1509 1328//1518 1329//1519 +f 1329//1519 1320//1510 1319//1509 +f 1320//1510 1329//1519 1330//1520 +f 1330//1520 1321//1511 1320//1510 +f 1321//1511 1330//1520 1331//1521 +f 1331//1521 1322//1512 1321//1511 +f 1322//1512 1331//1521 1332//1522 +f 1332//1522 1323//1513 1322//1512 +f 1324//1514 1333//1523 1334//1524 +f 1334//1524 1325//1515 1324//1514 +f 1325//1515 1334//1524 1335//1525 +f 1335//1525 1326//1516 1325//1515 +f 1326//1516 1335//1525 1336//1526 +f 1336//1526 1327//1517 1326//1516 +f 1327//1517 1336//1526 1337//1527 +f 1337//1527 1328//1518 1327//1517 +f 1328//1518 1337//1527 1338//1528 +f 1338//1528 1329//1519 1328//1518 +f 1329//1519 1338//1528 1339//1529 +f 1339//1529 1330//1520 1329//1519 +f 1330//1520 1339//1529 1340//1530 +f 1340//1530 1331//1521 1330//1520 +f 1331//1521 1340//1530 1341//1531 +f 1341//1531 1332//1522 1331//1521 +f 1333//1523 1342//1532 1343//1533 +f 1343//1533 1334//1524 1333//1523 +f 1334//1524 1343//1533 1344//1534 +f 1344//1534 1335//1525 1334//1524 +f 1335//1525 1344//1534 1345//1535 +f 1345//1535 1336//1526 1335//1525 +f 1336//1526 1345//1535 1346//1536 +f 1346//1536 1337//1527 1336//1526 +f 1337//1527 1346//1536 1347//1537 +f 1347//1537 1338//1528 1337//1527 +f 1338//1528 1347//1537 1348//1538 +f 1348//1538 1339//1529 1338//1528 +f 1339//1529 1348//1538 1349//1539 +f 1349//1539 1340//1530 1339//1529 +f 1340//1530 1349//1539 1350//1540 +f 1350//1540 1341//1531 1340//1530 +f 1342//1532 1351//1541 1352//1542 +f 1352//1542 1343//1533 1342//1532 +f 1343//1533 1352//1542 1353//1543 +f 1353//1543 1344//1534 1343//1533 +f 1344//1534 1353//1543 1354//1544 +f 1354//1544 1345//1535 1344//1534 +f 1345//1535 1354//1544 1355//1545 +f 1355//1545 1346//1536 1345//1535 +f 1346//1536 1355//1545 1356//1546 +f 1356//1546 1347//1537 1346//1536 +f 1347//1537 1356//1546 1357//1547 +f 1357//1547 1348//1538 1347//1537 +f 1348//1538 1357//1547 1358//1548 +f 1358//1548 1349//1539 1348//1538 +f 1349//1539 1358//1548 1359//1549 +f 1359//1549 1350//1540 1349//1539 +f 1351//1541 1360//1550 1361//1551 +f 1361//1551 1352//1542 1351//1541 +f 1352//1542 1361//1551 1362//1552 +f 1362//1552 1353//1543 1352//1542 +f 1353//1543 1362//1552 1363//1553 +f 1363//1553 1354//1544 1353//1543 +f 1354//1544 1363//1553 1364//1554 +f 1364//1554 1355//1545 1354//1544 +f 1355//1545 1364//1554 1365//1555 +f 1365//1555 1356//1546 1355//1545 +f 1356//1546 1365//1555 1366//1556 +f 1366//1556 1357//1547 1356//1546 +f 1357//1547 1366//1556 1367//1557 +f 1367//1557 1358//1548 1357//1547 +f 1358//1548 1367//1557 1368//1558 +f 1368//1558 1359//1549 1358//1548 +f 1360//1550 1369//1559 1370//1560 +f 1370//1560 1361//1551 1360//1550 +f 1361//1551 1370//1560 1371//1561 +f 1371//1561 1362//1552 1361//1551 +f 1362//1552 1371//1561 1372//1562 +f 1372//1562 1363//1553 1362//1552 +f 1363//1553 1372//1562 1373//1563 +f 1373//1563 1364//1554 1363//1553 +f 1364//1554 1373//1563 1374//1564 +f 1374//1564 1365//1555 1364//1554 +f 1365//1555 1374//1564 1375//1565 +f 1375//1565 1366//1556 1365//1555 +f 1366//1556 1375//1565 1376//1566 +f 1376//1566 1367//1557 1366//1556 +f 1367//1557 1376//1566 1377//1567 +f 1377//1567 1368//1558 1367//1557 +f 1369//1559 1378//1568 1379//1569 +f 1379//1569 1370//1560 1369//1559 +f 1370//1560 1379//1569 1380//1570 +f 1380//1570 1371//1561 1370//1560 +f 1371//1561 1380//1570 1381//1571 +f 1381//1571 1372//1562 1371//1561 +f 1372//1562 1381//1571 1382//1572 +f 1382//1572 1373//1563 1372//1562 +f 1373//1563 1382//1572 1383//1573 +f 1383//1573 1374//1564 1373//1563 +f 1374//1564 1383//1573 1384//1574 +f 1384//1574 1375//1565 1374//1564 +f 1375//1565 1384//1574 1385//1575 +f 1385//1575 1376//1566 1375//1565 +f 1376//1566 1385//1575 1386//1576 +f 1386//1576 1377//1567 1376//1566 +f 1378//1568 1387//1577 1388//1578 +f 1388//1578 1379//1569 1378//1568 +f 1379//1569 1388//1578 1389//1579 +f 1389//1579 1380//1570 1379//1569 +f 1380//1570 1389//1579 1390//1580 +f 1390//1580 1381//1571 1380//1570 +f 1381//1571 1390//1580 1391//1581 +f 1391//1581 1382//1572 1381//1571 +f 1382//1572 1391//1581 1392//1582 +f 1392//1582 1383//1573 1382//1572 +f 1383//1573 1392//1582 1393//1583 +f 1393//1583 1384//1574 1383//1573 +f 1384//1574 1393//1583 1394//1584 +f 1394//1584 1385//1575 1384//1574 +f 1385//1575 1394//1584 1395//1585 +f 1395//1585 1386//1576 1385//1575 +f 1387//1577 1396//1586 1397//1587 +f 1397//1587 1388//1578 1387//1577 +f 1388//1578 1397//1587 1398//1588 +f 1398//1588 1389//1579 1388//1578 +f 1389//1579 1398//1588 1399//1589 +f 1399//1589 1390//1580 1389//1579 +f 1390//1580 1399//1589 1400//1590 +f 1400//1590 1391//1581 1390//1580 +f 1391//1581 1400//1590 1401//1591 +f 1401//1591 1392//1582 1391//1581 +f 1392//1582 1401//1591 1402//1592 +f 1402//1592 1393//1583 1392//1582 +f 1393//1583 1402//1592 1403//1593 +f 1403//1593 1394//1584 1393//1583 +f 1394//1584 1403//1593 1404//1594 +f 1404//1594 1395//1585 1394//1584 +f 1396//1586 1405//1595 1406//1596 +f 1406//1596 1397//1587 1396//1586 +f 1397//1587 1406//1596 1407//1597 +f 1407//1597 1398//1588 1397//1587 +f 1398//1588 1407//1597 1408//1598 +f 1408//1598 1399//1589 1398//1588 +f 1399//1589 1408//1598 1409//1599 +f 1409//1599 1400//1590 1399//1589 +f 1400//1590 1409//1599 1410//1600 +f 1410//1600 1401//1591 1400//1590 +f 1401//1591 1410//1600 1411//1601 +f 1411//1601 1402//1592 1401//1591 +f 1402//1592 1411//1601 1412//1602 +f 1412//1602 1403//1593 1402//1592 +f 1403//1593 1412//1602 1413//1603 +f 1413//1603 1404//1594 1403//1593 +f 1405//1595 1414//1604 1415//1605 +f 1415//1605 1406//1596 1405//1595 +f 1406//1596 1415//1605 1416//1606 +f 1416//1606 1407//1597 1406//1596 +f 1407//1597 1416//1606 1417//1607 +f 1417//1607 1408//1598 1407//1597 +f 1408//1598 1417//1607 1418//1608 +f 1418//1608 1409//1599 1408//1598 +f 1409//1599 1418//1608 1419//1609 +f 1419//1609 1410//1600 1409//1599 +f 1410//1600 1419//1609 1420//1610 +f 1420//1610 1411//1601 1410//1600 +f 1411//1601 1420//1610 1421//1611 +f 1421//1611 1412//1602 1411//1601 +f 1412//1602 1421//1611 1422//1612 +f 1422//1612 1413//1603 1412//1602 +f 1414//1604 1423//1613 1424//1614 +f 1424//1614 1415//1605 1414//1604 +f 1415//1605 1424//1614 1425//1615 +f 1425//1615 1416//1606 1415//1605 +f 1416//1606 1425//1615 1426//1616 +f 1426//1616 1417//1607 1416//1606 +f 1417//1607 1426//1616 1427//1617 +f 1427//1617 1418//1608 1417//1607 +f 1418//1608 1427//1617 1428//1618 +f 1428//1618 1419//1609 1418//1608 +f 1419//1609 1428//1618 1429//1619 +f 1429//1619 1420//1610 1419//1609 +f 1420//1610 1429//1619 1430//1620 +f 1430//1620 1421//1611 1420//1610 +f 1421//1611 1430//1620 1431//1621 +f 1431//1621 1422//1612 1421//1611 +f 1423//1613 1432//1622 1433//1623 +f 1433//1623 1424//1614 1423//1613 +f 1424//1614 1433//1623 1434//1624 +f 1434//1624 1425//1615 1424//1614 +f 1425//1615 1434//1624 1435//1625 +f 1435//1625 1426//1616 1425//1615 +f 1426//1616 1435//1625 1436//1626 +f 1436//1626 1427//1617 1426//1616 +f 1427//1617 1436//1626 1437//1627 +f 1437//1627 1428//1618 1427//1617 +f 1428//1618 1437//1627 1438//1628 +f 1438//1628 1429//1619 1428//1618 +f 1429//1619 1438//1628 1439//1629 +f 1439//1629 1430//1620 1429//1619 +f 1430//1620 1439//1629 1440//1630 +f 1440//1630 1431//1621 1430//1620 +f 1432//1622 1297//1487 1300//1490 +f 1300//1490 1433//1623 1432//1622 +f 1433//1623 1300//1490 1302//1492 +f 1302//1492 1434//1624 1433//1623 +f 1434//1624 1302//1492 1304//1494 +f 1304//1494 1435//1625 1434//1624 +f 1435//1625 1304//1494 1306//1496 +f 1306//1496 1436//1626 1435//1625 +f 1436//1626 1306//1496 1308//1498 +f 1308//1498 1437//1627 1436//1626 +f 1437//1627 1308//1498 1310//1500 +f 1310//1500 1438//1628 1437//1627 +f 1438//1628 1310//1500 1312//1502 +f 1312//1502 1439//1629 1438//1628 +f 1439//1629 1312//1502 1314//1504 +f 1314//1504 1440//1630 1439//1629 +f 1314//1504 1313//1503 1441//1631 +f 1441//1631 1442//1632 1314//1504 +f 1442//1632 1441//1631 1443//1633 +f 1443//1633 1444//1634 1442//1632 +f 1444//1634 1443//1633 1445//1635 +f 1445//1635 1446//1636 1444//1634 +f 1446//1636 1445//1635 1447//1637 +f 1447//1637 1448//1638 1446//1636 +f 1448//1638 1447//1637 1449//1639 +f 1449//1639 1450//1640 1448//1638 +s 16 +f 1450//1760 1449//1759 1451//1761 +f 1451//1761 1452//1762 1450//1760 +s 14 +f 1452//1642 1451//1641 1453//1643 +f 1453//1643 1454//1644 1452//1642 +f 1454//1644 1453//1643 1455//1645 +f 1455//1645 1456//1646 1454//1644 +f 1313//1503 1323//1513 1457//1647 +f 1457//1647 1441//1631 1313//1503 +f 1441//1631 1457//1647 1458//1648 +f 1458//1648 1443//1633 1441//1631 +f 1443//1633 1458//1648 1459//1649 +f 1459//1649 1445//1635 1443//1633 +f 1445//1635 1459//1649 1460//1650 +f 1460//1650 1447//1637 1445//1635 +f 1447//1637 1460//1650 1461//1651 +f 1461//1651 1449//1639 1447//1637 +f 1449//1639 1461//1651 1462//1652 +f 1462//1652 1451//1641 1449//1639 +f 1451//1641 1462//1652 1463//1653 +f 1463//1653 1453//1643 1451//1641 +f 1453//1643 1463//1653 1464//1654 +f 1464//1654 1455//1645 1453//1643 +f 1323//1513 1332//1522 1465//1655 +f 1465//1655 1457//1647 1323//1513 +f 1457//1647 1465//1655 1466//1656 +f 1466//1656 1458//1648 1457//1647 +f 1458//1648 1466//1656 1467//1657 +f 1467//1657 1459//1649 1458//1648 +f 1459//1649 1467//1657 1468//1658 +f 1468//1658 1460//1650 1459//1649 +f 1460//1650 1468//1658 1469//1659 +f 1469//1659 1461//1651 1460//1650 +f 1461//1651 1469//1659 1470//1660 +f 1470//1660 1462//1652 1461//1651 +f 1462//1652 1470//1660 1471//1661 +f 1471//1661 1463//1653 1462//1652 +f 1463//1653 1471//1661 1472//1662 +f 1472//1662 1464//1654 1463//1653 +f 1332//1522 1341//1531 1473//1663 +f 1473//1663 1465//1655 1332//1522 +f 1465//1655 1473//1663 1474//1664 +f 1474//1664 1466//1656 1465//1655 +f 1466//1656 1474//1664 1475//1665 +f 1475//1665 1467//1657 1466//1656 +f 1467//1657 1475//1665 1476//1666 +f 1476//1666 1468//1658 1467//1657 +f 1468//1658 1476//1666 1477//1667 +f 1477//1667 1469//1659 1468//1658 +f 1469//1659 1477//1667 1478//1668 +f 1478//1668 1470//1660 1469//1659 +f 1470//1660 1478//1668 1479//1669 +f 1479//1669 1471//1661 1470//1660 +f 1471//1661 1479//1669 1480//1670 +f 1480//1670 1472//1662 1471//1661 +f 1341//1531 1350//1540 1481//1671 +f 1481//1671 1473//1663 1341//1531 +f 1473//1663 1481//1671 1482//1672 +f 1482//1672 1474//1664 1473//1663 +f 1474//1664 1482//1672 1483//1673 +f 1483//1673 1475//1665 1474//1664 +f 1475//1665 1483//1673 1484//1674 +f 1484//1674 1476//1666 1475//1665 +f 1476//1666 1484//1674 1485//1675 +f 1485//1675 1477//1667 1476//1666 +f 1477//1667 1485//1675 1486//1676 +f 1486//1676 1478//1668 1477//1667 +f 1478//1668 1486//1676 1487//1677 +f 1487//1677 1479//1669 1478//1668 +f 1479//1669 1487//1677 1488//1678 +f 1488//1678 1480//1670 1479//1669 +f 1350//1540 1359//1549 1489//1679 +f 1489//1679 1481//1671 1350//1540 +f 1481//1671 1489//1679 1490//1680 +f 1490//1680 1482//1672 1481//1671 +f 1482//1672 1490//1680 1491//1681 +f 1491//1681 1483//1673 1482//1672 +f 1483//1673 1491//1681 1492//1682 +f 1492//1682 1484//1674 1483//1673 +f 1484//1674 1492//1682 1493//1683 +f 1493//1683 1485//1675 1484//1674 +f 1485//1675 1493//1683 1494//1684 +f 1494//1684 1486//1676 1485//1675 +f 1486//1676 1494//1684 1495//1685 +f 1495//1685 1487//1677 1486//1676 +f 1487//1677 1495//1685 1496//1686 +f 1496//1686 1488//1678 1487//1677 +f 1359//1549 1368//1558 1497//1687 +f 1497//1687 1489//1679 1359//1549 +f 1489//1679 1497//1687 1498//1688 +f 1498//1688 1490//1680 1489//1679 +f 1490//1680 1498//1688 1499//1689 +f 1499//1689 1491//1681 1490//1680 +f 1491//1681 1499//1689 1500//1690 +f 1500//1690 1492//1682 1491//1681 +f 1492//1682 1500//1690 1501//1691 +f 1501//1691 1493//1683 1492//1682 +f 1493//1683 1501//1691 1502//1692 +f 1502//1692 1494//1684 1493//1683 +f 1494//1684 1502//1692 1503//1693 +f 1503//1693 1495//1685 1494//1684 +f 1495//1685 1503//1693 1504//1694 +f 1504//1694 1496//1686 1495//1685 +f 1368//1558 1377//1567 1505//1695 +f 1505//1695 1497//1687 1368//1558 +f 1497//1687 1505//1695 1506//1696 +f 1506//1696 1498//1688 1497//1687 +f 1498//1688 1506//1696 1507//1697 +f 1507//1697 1499//1689 1498//1688 +f 1499//1689 1507//1697 1508//1698 +f 1508//1698 1500//1690 1499//1689 +f 1500//1690 1508//1698 1509//1699 +f 1509//1699 1501//1691 1500//1690 +f 1501//1691 1509//1699 1510//1700 +f 1510//1700 1502//1692 1501//1691 +f 1502//1692 1510//1700 1511//1701 +f 1511//1701 1503//1693 1502//1692 +f 1503//1693 1511//1701 1512//1702 +f 1512//1702 1504//1694 1503//1693 +f 1377//1567 1386//1576 1513//1703 +f 1513//1703 1505//1695 1377//1567 +f 1505//1695 1513//1703 1514//1704 +f 1514//1704 1506//1696 1505//1695 +f 1506//1696 1514//1704 1515//1705 +f 1515//1705 1507//1697 1506//1696 +f 1507//1697 1515//1705 1516//1706 +f 1516//1706 1508//1698 1507//1697 +f 1508//1698 1516//1706 1517//1707 +f 1517//1707 1509//1699 1508//1698 +f 1509//1699 1517//1707 1518//1708 +f 1518//1708 1510//1700 1509//1699 +f 1510//1700 1518//1708 1519//1709 +f 1519//1709 1511//1701 1510//1700 +f 1511//1701 1519//1709 1520//1710 +f 1520//1710 1512//1702 1511//1701 +f 1386//1576 1395//1585 1521//1711 +f 1521//1711 1513//1703 1386//1576 +f 1513//1703 1521//1711 1522//1712 +f 1522//1712 1514//1704 1513//1703 +f 1514//1704 1522//1712 1523//1713 +f 1523//1713 1515//1705 1514//1704 +f 1515//1705 1523//1713 1524//1714 +f 1524//1714 1516//1706 1515//1705 +f 1516//1706 1524//1714 1525//1715 +f 1525//1715 1517//1707 1516//1706 +f 1517//1707 1525//1715 1526//1716 +f 1526//1716 1518//1708 1517//1707 +f 1518//1708 1526//1716 1527//1717 +f 1527//1717 1519//1709 1518//1708 +f 1519//1709 1527//1717 1528//1718 +f 1528//1718 1520//1710 1519//1709 +f 1395//1585 1404//1594 1529//1719 +f 1529//1719 1521//1711 1395//1585 +f 1521//1711 1529//1719 1530//1720 +f 1530//1720 1522//1712 1521//1711 +f 1522//1712 1530//1720 1531//1721 +f 1531//1721 1523//1713 1522//1712 +f 1523//1713 1531//1721 1532//1722 +f 1532//1722 1524//1714 1523//1713 +f 1524//1714 1532//1722 1533//1723 +f 1533//1723 1525//1715 1524//1714 +f 1525//1715 1533//1723 1534//1724 +f 1534//1724 1526//1716 1525//1715 +f 1526//1716 1534//1724 1535//1725 +f 1535//1725 1527//1717 1526//1716 +f 1527//1717 1535//1725 1536//1726 +f 1536//1726 1528//1718 1527//1717 +f 1404//1594 1413//1603 1537//1727 +f 1537//1727 1529//1719 1404//1594 +f 1529//1719 1537//1727 1538//1728 +f 1538//1728 1530//1720 1529//1719 +f 1530//1720 1538//1728 1539//1729 +f 1539//1729 1531//1721 1530//1720 +f 1531//1721 1539//1729 1540//1730 +f 1540//1730 1532//1722 1531//1721 +f 1532//1722 1540//1730 1541//1731 +f 1541//1731 1533//1723 1532//1722 +f 1533//1723 1541//1731 1542//1732 +f 1542//1732 1534//1724 1533//1723 +f 1534//1724 1542//1732 1543//1733 +f 1543//1733 1535//1725 1534//1724 +f 1535//1725 1543//1733 1544//1734 +f 1544//1734 1536//1726 1535//1725 +f 1413//1603 1422//1612 1545//1735 +f 1545//1735 1537//1727 1413//1603 +f 1537//1727 1545//1735 1546//1736 +f 1546//1736 1538//1728 1537//1727 +f 1538//1728 1546//1736 1547//1737 +f 1547//1737 1539//1729 1538//1728 +f 1539//1729 1547//1737 1548//1738 +f 1548//1738 1540//1730 1539//1729 +f 1540//1730 1548//1738 1549//1739 +f 1549//1739 1541//1731 1540//1730 +f 1541//1731 1549//1739 1550//1740 +f 1550//1740 1542//1732 1541//1731 +f 1542//1732 1550//1740 1551//1741 +f 1551//1741 1543//1733 1542//1732 +f 1543//1733 1551//1741 1552//1742 +f 1552//1742 1544//1734 1543//1733 +f 1422//1612 1431//1621 1553//1743 +f 1553//1743 1545//1735 1422//1612 +f 1545//1735 1553//1743 1554//1744 +f 1554//1744 1546//1736 1545//1735 +f 1546//1736 1554//1744 1555//1745 +f 1555//1745 1547//1737 1546//1736 +f 1547//1737 1555//1745 1556//1746 +f 1556//1746 1548//1738 1547//1737 +f 1548//1738 1556//1746 1557//1747 +f 1557//1747 1549//1739 1548//1738 +f 1549//1739 1557//1747 1558//1748 +f 1558//1748 1550//1740 1549//1739 +f 1550//1740 1558//1748 1559//1749 +f 1559//1749 1551//1741 1550//1740 +f 1551//1741 1559//1749 1560//1750 +f 1560//1750 1552//1742 1551//1741 +f 1431//1621 1440//1630 1561//1751 +f 1561//1751 1553//1743 1431//1621 +f 1553//1743 1561//1751 1562//1752 +f 1562//1752 1554//1744 1553//1743 +f 1554//1744 1562//1752 1563//1753 +f 1563//1753 1555//1745 1554//1744 +f 1555//1745 1563//1753 1564//1754 +f 1564//1754 1556//1746 1555//1745 +f 1556//1746 1564//1754 1565//1755 +f 1565//1755 1557//1747 1556//1746 +f 1557//1747 1565//1755 1566//1756 +f 1566//1756 1558//1748 1557//1747 +f 1558//1748 1566//1756 1567//1757 +f 1567//1757 1559//1749 1558//1748 +f 1559//1749 1567//1757 1568//1758 +f 1568//1758 1560//1750 1559//1749 +f 1440//1630 1314//1504 1442//1632 +f 1442//1632 1561//1751 1440//1630 +f 1561//1751 1442//1632 1444//1634 +f 1444//1634 1562//1752 1561//1751 +f 1562//1752 1444//1634 1446//1636 +f 1446//1636 1563//1753 1562//1752 +f 1563//1753 1446//1636 1448//1638 +f 1448//1638 1564//1754 1563//1753 +f 1564//1754 1448//1638 1450//1640 +f 1450//1640 1565//1755 1564//1754 +s 19 +f 1565//1765 1450//1763 1452//1764 +f 1452//1764 1566//1766 1565//1765 +s 17 +f 1566//1769 1452//1767 1454//1768 +f 1454//1768 1567//1770 1566//1769 +s 14 +f 1567//1757 1454//1644 1456//1646 +f 1456//1646 1568//1758 1567//1757 +s off +f 1569//33 1569//33 1570//33 +s 23 +f 1570//1772 1571//1773 1569//1771 +f 1571//1773 1570//1772 1572//1774 +f 1572//1774 1573//1775 1571//1773 +s 24 +f 1573//1837 1572//1836 1574//1838 +f 1574//1838 1575//1839 1573//1837 +s 25 +f 1575//1901 1574//1900 1576//1902 +f 1576//1902 1577//1903 1575//1901 +f 1577//1903 1576//1902 1578//1904 +f 1578//1904 1579//1905 1577//1903 +f 1579//1905 1578//1904 1580//1906 +f 1580//1906 1581//1907 1579//1905 +f 1581//1907 1580//1906 1582//1908 +f 1582//1908 1583//1909 1581//1907 +s 26 +f 1583//2061 1582//2060 1584//2062 +f 1584//2062 1585//2063 1583//2061 +s off +f 1569//34 1569//34 1586//34 +s 23 +f 1586//1776 1570//1772 1569//1771 +f 1570//1772 1586//1776 1587//1777 +f 1587//1777 1572//1774 1570//1772 +s 24 +f 1572//1836 1587//1840 1588//1841 +f 1588//1841 1574//1838 1572//1836 +s 25 +f 1574//1900 1588//1910 1589//1911 +f 1589//1911 1576//1902 1574//1900 +f 1576//1902 1589//1911 1590//1912 +f 1590//1912 1578//1904 1576//1902 +f 1578//1904 1590//1912 1591//1913 +f 1591//1913 1580//1906 1578//1904 +f 1580//1906 1591//1913 1592//1914 +f 1592//1914 1582//1908 1580//1906 +s 26 +f 1582//2060 1592//2064 1593//2065 +f 1593//2065 1584//2062 1582//2060 +s off +f 1569//35 1569//35 1594//35 +s 23 +f 1594//1778 1586//1776 1569//1771 +f 1586//1776 1594//1778 1595//1779 +f 1595//1779 1587//1777 1586//1776 +s 24 +f 1587//1840 1595//1842 1596//1843 +f 1596//1843 1588//1841 1587//1840 +s 25 +f 1588//1910 1596//1915 1597//1916 +f 1597//1916 1589//1911 1588//1910 +f 1589//1911 1597//1916 1598//1917 +f 1598//1917 1590//1912 1589//1911 +f 1590//1912 1598//1917 1599//1918 +f 1599//1918 1591//1913 1590//1912 +f 1591//1913 1599//1918 1600//1919 +f 1600//1919 1592//1914 1591//1913 +s 26 +f 1592//2064 1600//2066 1601//2067 +f 1601//2067 1593//2065 1592//2064 +s off +f 1569//36 1569//36 1602//36 +s 23 +f 1602//1780 1594//1778 1569//1771 +f 1594//1778 1602//1780 1603//1781 +f 1603//1781 1595//1779 1594//1778 +s 24 +f 1595//1842 1603//1844 1604//1845 +f 1604//1845 1596//1843 1595//1842 +s 25 +f 1596//1915 1604//1920 1605//1921 +f 1605//1921 1597//1916 1596//1915 +f 1597//1916 1605//1921 1606//1922 +f 1606//1922 1598//1917 1597//1916 +f 1598//1917 1606//1922 1607//1923 +f 1607//1923 1599//1918 1598//1917 +f 1599//1918 1607//1923 1608//1924 +f 1608//1924 1600//1919 1599//1918 +s 26 +f 1600//2066 1608//2068 1609//2069 +f 1609//2069 1601//2067 1600//2066 +s off +f 1569//37 1569//37 1610//37 +s 23 +f 1610//1782 1602//1780 1569//1771 +f 1602//1780 1610//1782 1611//1783 +f 1611//1783 1603//1781 1602//1780 +s 24 +f 1603//1844 1611//1846 1612//1847 +f 1612//1847 1604//1845 1603//1844 +s 25 +f 1604//1920 1612//1925 1613//1926 +f 1613//1926 1605//1921 1604//1920 +f 1605//1921 1613//1926 1614//1927 +f 1614//1927 1606//1922 1605//1921 +f 1606//1922 1614//1927 1615//1928 +f 1615//1928 1607//1923 1606//1922 +f 1607//1923 1615//1928 1616//1929 +f 1616//1929 1608//1924 1607//1923 +s 26 +f 1608//2068 1616//2070 1617//2071 +f 1617//2071 1609//2069 1608//2068 +s off +f 1569//38 1569//38 1618//38 +s 23 +f 1618//1784 1610//1782 1569//1771 +f 1610//1782 1618//1784 1619//1785 +f 1619//1785 1611//1783 1610//1782 +s 24 +f 1611//1846 1619//1848 1620//1849 +f 1620//1849 1612//1847 1611//1846 +s 25 +f 1612//1925 1620//1930 1621//1931 +f 1621//1931 1613//1926 1612//1925 +f 1613//1926 1621//1931 1622//1932 +f 1622//1932 1614//1927 1613//1926 +f 1614//1927 1622//1932 1623//1933 +f 1623//1933 1615//1928 1614//1927 +f 1615//1928 1623//1933 1624//1934 +f 1624//1934 1616//1929 1615//1928 +s 26 +f 1616//2070 1624//2072 1625//2073 +f 1625//2073 1617//2071 1616//2070 +s off +f 1569//39 1569//39 1626//39 +s 23 +f 1626//1786 1618//1784 1569//1771 +f 1618//1784 1626//1786 1627//1787 +f 1627//1787 1619//1785 1618//1784 +s 24 +f 1619//1848 1627//1850 1628//1851 +f 1628//1851 1620//1849 1619//1848 +s 25 +f 1620//1930 1628//1935 1629//1936 +f 1629//1936 1621//1931 1620//1930 +f 1621//1931 1629//1936 1630//1937 +f 1630//1937 1622//1932 1621//1931 +f 1622//1932 1630//1937 1631//1938 +f 1631//1938 1623//1933 1622//1932 +f 1623//1933 1631//1938 1632//1939 +f 1632//1939 1624//1934 1623//1933 +s 26 +f 1624//2072 1632//2074 1633//2075 +f 1633//2075 1625//2073 1624//2072 +s off +f 1569//40 1569//40 1634//40 +s 23 +f 1634//1788 1626//1786 1569//1771 +f 1626//1786 1634//1788 1635//1789 +f 1635//1789 1627//1787 1626//1786 +s 24 +f 1627//1850 1635//1852 1636//1853 +f 1636//1853 1628//1851 1627//1850 +s 25 +f 1628//1935 1636//1940 1637//1941 +f 1637//1941 1629//1936 1628//1935 +f 1629//1936 1637//1941 1638//1942 +f 1638//1942 1630//1937 1629//1936 +f 1630//1937 1638//1942 1639//1943 +f 1639//1943 1631//1938 1630//1937 +f 1631//1938 1639//1943 1640//1944 +f 1640//1944 1632//1939 1631//1938 +s 26 +f 1632//2074 1640//2076 1641//2077 +f 1641//2077 1633//2075 1632//2074 +s off +f 1569//41 1569//41 1642//41 +s 23 +f 1642//1790 1634//1788 1569//1771 +f 1634//1788 1642//1790 1643//1791 +f 1643//1791 1635//1789 1634//1788 +s 24 +f 1635//1852 1643//1854 1644//1855 +f 1644//1855 1636//1853 1635//1852 +s 25 +f 1636//1940 1644//1945 1645//1946 +f 1645//1946 1637//1941 1636//1940 +f 1637//1941 1645//1946 1646//1947 +f 1646//1947 1638//1942 1637//1941 +f 1638//1942 1646//1947 1647//1948 +f 1647//1948 1639//1943 1638//1942 +f 1639//1943 1647//1948 1648//1949 +f 1648//1949 1640//1944 1639//1943 +s 26 +f 1640//2076 1648//2078 1649//2079 +f 1649//2079 1641//2077 1640//2076 +s off +f 1569//42 1569//42 1650//42 +s 23 +f 1650//1792 1642//1790 1569//1771 +f 1642//1790 1650//1792 1651//1793 +f 1651//1793 1643//1791 1642//1790 +s 24 +f 1643//1854 1651//1856 1652//1857 +f 1652//1857 1644//1855 1643//1854 +s 25 +f 1644//1945 1652//1950 1653//1951 +f 1653//1951 1645//1946 1644//1945 +f 1645//1946 1653//1951 1654//1952 +f 1654//1952 1646//1947 1645//1946 +f 1646//1947 1654//1952 1655//1953 +f 1655//1953 1647//1948 1646//1947 +f 1647//1948 1655//1953 1656//1954 +f 1656//1954 1648//1949 1647//1948 +s 26 +f 1648//2078 1656//2080 1657//2081 +f 1657//2081 1649//2079 1648//2078 +s off +f 1569//43 1569//43 1658//43 +s 23 +f 1658//1794 1650//1792 1569//1771 +f 1650//1792 1658//1794 1659//1795 +f 1659//1795 1651//1793 1650//1792 +s 24 +f 1651//1856 1659//1858 1660//1859 +f 1660//1859 1652//1857 1651//1856 +s 25 +f 1652//1950 1660//1955 1661//1956 +f 1661//1956 1653//1951 1652//1950 +f 1653//1951 1661//1956 1662//1957 +f 1662//1957 1654//1952 1653//1951 +f 1654//1952 1662//1957 1663//1958 +f 1663//1958 1655//1953 1654//1952 +f 1655//1953 1663//1958 1664//1959 +f 1664//1959 1656//1954 1655//1953 +s 26 +f 1656//2080 1664//2082 1665//2083 +f 1665//2083 1657//2081 1656//2080 +s off +f 1569//44 1569//44 1666//44 +s 23 +f 1666//1796 1658//1794 1569//1771 +f 1658//1794 1666//1796 1667//1797 +f 1667//1797 1659//1795 1658//1794 +s 24 +f 1659//1858 1667//1860 1668//1861 +f 1668//1861 1660//1859 1659//1858 +s 25 +f 1660//1955 1668//1960 1669//1961 +f 1669//1961 1661//1956 1660//1955 +f 1661//1956 1669//1961 1670//1962 +f 1670//1962 1662//1957 1661//1956 +f 1662//1957 1670//1962 1671//1963 +f 1671//1963 1663//1958 1662//1957 +f 1663//1958 1671//1963 1672//1964 +f 1672//1964 1664//1959 1663//1958 +s 26 +f 1664//2082 1672//2084 1673//2085 +f 1673//2085 1665//2083 1664//2082 +s off +f 1569//45 1569//45 1674//45 +s 23 +f 1674//1798 1666//1796 1569//1771 +f 1666//1796 1674//1798 1675//1799 +f 1675//1799 1667//1797 1666//1796 +s 24 +f 1667//1860 1675//1862 1676//1863 +f 1676//1863 1668//1861 1667//1860 +s 25 +f 1668//1960 1676//1965 1677//1966 +f 1677//1966 1669//1961 1668//1960 +f 1669//1961 1677//1966 1678//1967 +f 1678//1967 1670//1962 1669//1961 +f 1670//1962 1678//1967 1679//1968 +f 1679//1968 1671//1963 1670//1962 +f 1671//1963 1679//1968 1680//1969 +f 1680//1969 1672//1964 1671//1963 +s 26 +f 1672//2084 1680//2086 1681//2087 +f 1681//2087 1673//2085 1672//2084 +s off +f 1569//46 1569//46 1682//46 +s 23 +f 1682//1800 1674//1798 1569//1771 +f 1674//1798 1682//1800 1683//1801 +f 1683//1801 1675//1799 1674//1798 +s 24 +f 1675//1862 1683//1864 1684//1865 +f 1684//1865 1676//1863 1675//1862 +s 25 +f 1676//1965 1684//1970 1685//1971 +f 1685//1971 1677//1966 1676//1965 +f 1677//1966 1685//1971 1686//1972 +f 1686//1972 1678//1967 1677//1966 +f 1678//1967 1686//1972 1687//1973 +f 1687//1973 1679//1968 1678//1967 +f 1679//1968 1687//1973 1688//1974 +f 1688//1974 1680//1969 1679//1968 +s 26 +f 1680//2086 1688//2088 1689//2089 +f 1689//2089 1681//2087 1680//2086 +s off +f 1569//47 1569//47 1690//47 +s 23 +f 1690//1802 1682//1800 1569//1771 +f 1682//1800 1690//1802 1691//1803 +f 1691//1803 1683//1801 1682//1800 +s 24 +f 1683//1864 1691//1866 1692//1867 +f 1692//1867 1684//1865 1683//1864 +s 25 +f 1684//1970 1692//1975 1693//1976 +f 1693//1976 1685//1971 1684//1970 +f 1685//1971 1693//1976 1694//1977 +f 1694//1977 1686//1972 1685//1971 +f 1686//1972 1694//1977 1695//1978 +f 1695//1978 1687//1973 1686//1972 +f 1687//1973 1695//1978 1696//1979 +f 1696//1979 1688//1974 1687//1973 +s 26 +f 1688//2088 1696//2090 1697//2091 +f 1697//2091 1689//2089 1688//2088 +s off +f 1569//48 1569//48 1698//48 +s 23 +f 1698//1804 1690//1802 1569//1771 +f 1690//1802 1698//1804 1699//1805 +f 1699//1805 1691//1803 1690//1802 +s 24 +f 1691//1866 1699//1868 1700//1869 +f 1700//1869 1692//1867 1691//1866 +s 25 +f 1692//1975 1700//1980 1701//1981 +f 1701//1981 1693//1976 1692//1975 +f 1693//1976 1701//1981 1702//1982 +f 1702//1982 1694//1977 1693//1976 +f 1694//1977 1702//1982 1703//1983 +f 1703//1983 1695//1978 1694//1977 +f 1695//1978 1703//1983 1704//1984 +f 1704//1984 1696//1979 1695//1978 +s 26 +f 1696//2090 1704//2092 1705//2093 +f 1705//2093 1697//2091 1696//2090 +s off +f 1569//49 1569//49 1706//49 +s 23 +f 1706//1806 1698//1804 1569//1771 +f 1698//1804 1706//1806 1707//1807 +f 1707//1807 1699//1805 1698//1804 +s 24 +f 1699//1868 1707//1870 1708//1871 +f 1708//1871 1700//1869 1699//1868 +s 25 +f 1700//1980 1708//1985 1709//1986 +f 1709//1986 1701//1981 1700//1980 +f 1701//1981 1709//1986 1710//1987 +f 1710//1987 1702//1982 1701//1981 +f 1702//1982 1710//1987 1711//1988 +f 1711//1988 1703//1983 1702//1982 +f 1703//1983 1711//1988 1712//1989 +f 1712//1989 1704//1984 1703//1983 +s 26 +f 1704//2092 1712//2094 1713//2095 +f 1713//2095 1705//2093 1704//2092 +s off +f 1569//50 1569//50 1714//50 +s 23 +f 1714//1808 1706//1806 1569//1771 +f 1706//1806 1714//1808 1715//1809 +f 1715//1809 1707//1807 1706//1806 +s 24 +f 1707//1870 1715//1872 1716//1873 +f 1716//1873 1708//1871 1707//1870 +s 25 +f 1708//1985 1716//1990 1717//1991 +f 1717//1991 1709//1986 1708//1985 +f 1709//1986 1717//1991 1718//1992 +f 1718//1992 1710//1987 1709//1986 +f 1710//1987 1718//1992 1719//1993 +f 1719//1993 1711//1988 1710//1987 +f 1711//1988 1719//1993 1720//1994 +f 1720//1994 1712//1989 1711//1988 +s 26 +f 1712//2094 1720//2096 1721//2097 +f 1721//2097 1713//2095 1712//2094 +s off +f 1569//51 1569//51 1722//51 +s 23 +f 1722//1810 1714//1808 1569//1771 +f 1714//1808 1722//1810 1723//1811 +f 1723//1811 1715//1809 1714//1808 +s 24 +f 1715//1872 1723//1874 1724//1875 +f 1724//1875 1716//1873 1715//1872 +s 25 +f 1716//1990 1724//1995 1725//1996 +f 1725//1996 1717//1991 1716//1990 +f 1717//1991 1725//1996 1726//1997 +f 1726//1997 1718//1992 1717//1991 +f 1718//1992 1726//1997 1727//1998 +f 1727//1998 1719//1993 1718//1992 +f 1719//1993 1727//1998 1728//1999 +f 1728//1999 1720//1994 1719//1993 +s 26 +f 1720//2096 1728//2098 1729//2099 +f 1729//2099 1721//2097 1720//2096 +s off +f 1569//52 1569//52 1730//52 +s 23 +f 1730//1812 1722//1810 1569//1771 +f 1722//1810 1730//1812 1731//1813 +f 1731//1813 1723//1811 1722//1810 +s 24 +f 1723//1874 1731//1876 1732//1877 +f 1732//1877 1724//1875 1723//1874 +s 25 +f 1724//1995 1732//2000 1733//2001 +f 1733//2001 1725//1996 1724//1995 +f 1725//1996 1733//2001 1734//2002 +f 1734//2002 1726//1997 1725//1996 +f 1726//1997 1734//2002 1735//2003 +f 1735//2003 1727//1998 1726//1997 +f 1727//1998 1735//2003 1736//2004 +f 1736//2004 1728//1999 1727//1998 +s 26 +f 1728//2098 1736//2100 1737//2101 +f 1737//2101 1729//2099 1728//2098 +s off +f 1569//53 1569//53 1738//53 +s 23 +f 1738//1814 1730//1812 1569//1771 +f 1730//1812 1738//1814 1739//1815 +f 1739//1815 1731//1813 1730//1812 +s 24 +f 1731//1876 1739//1878 1740//1879 +f 1740//1879 1732//1877 1731//1876 +s 25 +f 1732//2000 1740//2005 1741//2006 +f 1741//2006 1733//2001 1732//2000 +f 1733//2001 1741//2006 1742//2007 +f 1742//2007 1734//2002 1733//2001 +f 1734//2002 1742//2007 1743//2008 +f 1743//2008 1735//2003 1734//2002 +f 1735//2003 1743//2008 1744//2009 +f 1744//2009 1736//2004 1735//2003 +s 26 +f 1736//2100 1744//2102 1745//2103 +f 1745//2103 1737//2101 1736//2100 +s off +f 1569//54 1569//54 1746//54 +s 23 +f 1746//1816 1738//1814 1569//1771 +f 1738//1814 1746//1816 1747//1817 +f 1747//1817 1739//1815 1738//1814 +s 24 +f 1739//1878 1747//1880 1748//1881 +f 1748//1881 1740//1879 1739//1878 +s 25 +f 1740//2005 1748//2010 1749//2011 +f 1749//2011 1741//2006 1740//2005 +f 1741//2006 1749//2011 1750//2012 +f 1750//2012 1742//2007 1741//2006 +f 1742//2007 1750//2012 1751//2013 +f 1751//2013 1743//2008 1742//2007 +f 1743//2008 1751//2013 1752//2014 +f 1752//2014 1744//2009 1743//2008 +s 26 +f 1744//2102 1752//2104 1753//2105 +f 1753//2105 1745//2103 1744//2102 +s off +f 1569//55 1569//55 1754//55 +s 23 +f 1754//1818 1746//1816 1569//1771 +f 1746//1816 1754//1818 1755//1819 +f 1755//1819 1747//1817 1746//1816 +s 24 +f 1747//1880 1755//1882 1756//1883 +f 1756//1883 1748//1881 1747//1880 +s 25 +f 1748//2010 1756//2015 1757//2016 +f 1757//2016 1749//2011 1748//2010 +f 1749//2011 1757//2016 1758//2017 +f 1758//2017 1750//2012 1749//2011 +f 1750//2012 1758//2017 1759//2018 +f 1759//2018 1751//2013 1750//2012 +f 1751//2013 1759//2018 1760//2019 +f 1760//2019 1752//2014 1751//2013 +s 26 +f 1752//2104 1760//2106 1761//2107 +f 1761//2107 1753//2105 1752//2104 +s off +f 1569//56 1569//56 1762//56 +s 23 +f 1762//1820 1754//1818 1569//1771 +f 1754//1818 1762//1820 1763//1821 +f 1763//1821 1755//1819 1754//1818 +s 24 +f 1755//1882 1763//1884 1764//1885 +f 1764//1885 1756//1883 1755//1882 +s 25 +f 1756//2015 1764//2020 1765//2021 +f 1765//2021 1757//2016 1756//2015 +f 1757//2016 1765//2021 1766//2022 +f 1766//2022 1758//2017 1757//2016 +f 1758//2017 1766//2022 1767//2023 +f 1767//2023 1759//2018 1758//2017 +f 1759//2018 1767//2023 1768//2024 +f 1768//2024 1760//2019 1759//2018 +s 26 +f 1760//2106 1768//2108 1769//2109 +f 1769//2109 1761//2107 1760//2106 +s off +f 1569//57 1569//57 1770//57 +s 23 +f 1770//1822 1762//1820 1569//1771 +f 1762//1820 1770//1822 1771//1823 +f 1771//1823 1763//1821 1762//1820 +s 24 +f 1763//1884 1771//1886 1772//1887 +f 1772//1887 1764//1885 1763//1884 +s 25 +f 1764//2020 1772//2025 1773//2026 +f 1773//2026 1765//2021 1764//2020 +f 1765//2021 1773//2026 1774//2027 +f 1774//2027 1766//2022 1765//2021 +f 1766//2022 1774//2027 1775//2028 +f 1775//2028 1767//2023 1766//2022 +f 1767//2023 1775//2028 1776//2029 +f 1776//2029 1768//2024 1767//2023 +s 26 +f 1768//2108 1776//2110 1777//2111 +f 1777//2111 1769//2109 1768//2108 +s off +f 1569//58 1569//58 1778//58 +s 23 +f 1778//1824 1770//1822 1569//1771 +f 1770//1822 1778//1824 1779//1825 +f 1779//1825 1771//1823 1770//1822 +s 24 +f 1771//1886 1779//1888 1780//1889 +f 1780//1889 1772//1887 1771//1886 +s 25 +f 1772//2025 1780//2030 1781//2031 +f 1781//2031 1773//2026 1772//2025 +f 1773//2026 1781//2031 1782//2032 +f 1782//2032 1774//2027 1773//2026 +f 1774//2027 1782//2032 1783//2033 +f 1783//2033 1775//2028 1774//2027 +f 1775//2028 1783//2033 1784//2034 +f 1784//2034 1776//2029 1775//2028 +s 26 +f 1776//2110 1784//2112 1785//2113 +f 1785//2113 1777//2111 1776//2110 +s off +f 1569//59 1569//59 1786//59 +s 23 +f 1786//1826 1778//1824 1569//1771 +f 1778//1824 1786//1826 1787//1827 +f 1787//1827 1779//1825 1778//1824 +s 24 +f 1779//1888 1787//1890 1788//1891 +f 1788//1891 1780//1889 1779//1888 +s 25 +f 1780//2030 1788//2035 1789//2036 +f 1789//2036 1781//2031 1780//2030 +f 1781//2031 1789//2036 1790//2037 +f 1790//2037 1782//2032 1781//2031 +f 1782//2032 1790//2037 1791//2038 +f 1791//2038 1783//2033 1782//2032 +f 1783//2033 1791//2038 1792//2039 +f 1792//2039 1784//2034 1783//2033 +s 26 +f 1784//2112 1792//2114 1793//2115 +f 1793//2115 1785//2113 1784//2112 +s off +f 1569//60 1569//60 1794//60 +s 23 +f 1794//1828 1786//1826 1569//1771 +f 1786//1826 1794//1828 1795//1829 +f 1795//1829 1787//1827 1786//1826 +s 24 +f 1787//1890 1795//1892 1796//1893 +f 1796//1893 1788//1891 1787//1890 +s 25 +f 1788//2035 1796//2040 1797//2041 +f 1797//2041 1789//2036 1788//2035 +f 1789//2036 1797//2041 1798//2042 +f 1798//2042 1790//2037 1789//2036 +f 1790//2037 1798//2042 1799//2043 +f 1799//2043 1791//2038 1790//2037 +f 1791//2038 1799//2043 1800//2044 +f 1800//2044 1792//2039 1791//2038 +s 26 +f 1792//2114 1800//2116 1801//2117 +f 1801//2117 1793//2115 1792//2114 +s off +f 1569//61 1569//61 1802//61 +s 23 +f 1802//1830 1794//1828 1569//1771 +f 1794//1828 1802//1830 1803//1831 +f 1803//1831 1795//1829 1794//1828 +s 24 +f 1795//1892 1803//1894 1804//1895 +f 1804//1895 1796//1893 1795//1892 +s 25 +f 1796//2040 1804//2045 1805//2046 +f 1805//2046 1797//2041 1796//2040 +f 1797//2041 1805//2046 1806//2047 +f 1806//2047 1798//2042 1797//2041 +f 1798//2042 1806//2047 1807//2048 +f 1807//2048 1799//2043 1798//2042 +f 1799//2043 1807//2048 1808//2049 +f 1808//2049 1800//2044 1799//2043 +s 26 +f 1800//2116 1808//2118 1809//2119 +f 1809//2119 1801//2117 1800//2116 +s off +f 1569//62 1569//62 1810//62 +s 23 +f 1810//1832 1802//1830 1569//1771 +f 1802//1830 1810//1832 1811//1833 +f 1811//1833 1803//1831 1802//1830 +s 24 +f 1803//1894 1811//1896 1812//1897 +f 1812//1897 1804//1895 1803//1894 +s 25 +f 1804//2045 1812//2050 1813//2051 +f 1813//2051 1805//2046 1804//2045 +f 1805//2046 1813//2051 1814//2052 +f 1814//2052 1806//2047 1805//2046 +f 1806//2047 1814//2052 1815//2053 +f 1815//2053 1807//2048 1806//2047 +f 1807//2048 1815//2053 1816//2054 +f 1816//2054 1808//2049 1807//2048 +s 26 +f 1808//2118 1816//2120 1817//2121 +f 1817//2121 1809//2119 1808//2118 +s off +f 1569//63 1569//63 1818//63 +s 23 +f 1818//1834 1810//1832 1569//1771 +f 1810//1832 1818//1834 1819//1835 +f 1819//1835 1811//1833 1810//1832 +s 24 +f 1811//1896 1819//1898 1820//1899 +f 1820//1899 1812//1897 1811//1896 +s 25 +f 1812//2050 1820//2055 1821//2056 +f 1821//2056 1813//2051 1812//2050 +f 1813//2051 1821//2056 1822//2057 +f 1822//2057 1814//2052 1813//2051 +f 1814//2052 1822//2057 1823//2058 +f 1823//2058 1815//2053 1814//2052 +f 1815//2053 1823//2058 1824//2059 +f 1824//2059 1816//2054 1815//2053 +s 26 +f 1816//2120 1824//2122 1825//2123 +f 1825//2123 1817//2121 1816//2120 +s off +f 1569//64 1569//64 1571//64 +s 23 +f 1571//1773 1818//1834 1569//1771 +f 1818//1834 1571//1773 1573//1775 +f 1573//1775 1819//1835 1818//1834 +s 24 +f 1819//1898 1573//1837 1575//1839 +f 1575//1839 1820//1899 1819//1898 +s 25 +f 1820//2055 1575//1901 1577//1903 +f 1577//1903 1821//2056 1820//2055 +f 1821//2056 1577//1903 1579//1905 +f 1579//1905 1822//2057 1821//2056 +f 1822//2057 1579//1905 1581//1907 +f 1581//1907 1823//2058 1822//2057 +f 1823//2058 1581//1907 1583//1909 +f 1583//1909 1824//2059 1823//2058 +s 26 +f 1824//2122 1583//2061 1585//2063 +f 1585//2063 1825//2123 1824//2122 +s 27 +f 1585//2125 1584//2124 1826//2156 +f 1826//2156 1827//2157 1585//2125 +f 1827//2157 1826//2156 1828//2158 +f 1828//2158 1829//2159 1827//2157 +f 1829//2159 1828//2158 1830//2160 +f 1830//2160 1831//2161 1829//2159 +f 1831//2161 1830//2160 1832//2162 +f 1832//2162 1833//2163 1831//2161 +f 1833//2163 1832//2162 1834//2164 +f 1834//2164 1835//2165 1833//2163 +f 1835//2165 1834//2164 1836//2166 +f 1836//2166 1837//2167 1835//2165 +f 1837//2167 1836//2166 1838//2168 +f 1838//2168 1839//2169 1837//2167 +s 28 +f 1839//2381 1838//2380 1840//2382 +f 1840//2382 1841//2383 1839//2381 +s 27 +f 1584//2124 1593//2126 1842//2170 +f 1842//2170 1826//2156 1584//2124 +f 1826//2156 1842//2170 1843//2171 +f 1843//2171 1828//2158 1826//2156 +f 1828//2158 1843//2171 1844//2172 +f 1844//2172 1830//2160 1828//2158 +f 1830//2160 1844//2172 1845//2173 +f 1845//2173 1832//2162 1830//2160 +f 1832//2162 1845//2173 1846//2174 +f 1846//2174 1834//2164 1832//2162 +f 1834//2164 1846//2174 1847//2175 +f 1847//2175 1836//2166 1834//2164 +f 1836//2166 1847//2175 1848//2176 +f 1848//2176 1838//2168 1836//2166 +s 28 +f 1838//2380 1848//2384 1849//2385 +f 1849//2385 1840//2382 1838//2380 +s 27 +f 1593//2126 1601//2127 1850//2177 +f 1850//2177 1842//2170 1593//2126 +f 1842//2170 1850//2177 1851//2178 +f 1851//2178 1843//2171 1842//2170 +f 1843//2171 1851//2178 1852//2179 +f 1852//2179 1844//2172 1843//2171 +f 1844//2172 1852//2179 1853//2180 +f 1853//2180 1845//2173 1844//2172 +f 1845//2173 1853//2180 1854//2181 +f 1854//2181 1846//2174 1845//2173 +f 1846//2174 1854//2181 1855//2182 +f 1855//2182 1847//2175 1846//2174 +f 1847//2175 1855//2182 1856//2183 +f 1856//2183 1848//2176 1847//2175 +s 28 +f 1848//2384 1856//2386 1857//2387 +f 1857//2387 1849//2385 1848//2384 +s 27 +f 1601//2127 1609//2128 1858//2184 +f 1858//2184 1850//2177 1601//2127 +f 1850//2177 1858//2184 1859//2185 +f 1859//2185 1851//2178 1850//2177 +f 1851//2178 1859//2185 1860//2186 +f 1860//2186 1852//2179 1851//2178 +f 1852//2179 1860//2186 1861//2187 +f 1861//2187 1853//2180 1852//2179 +f 1853//2180 1861//2187 1862//2188 +f 1862//2188 1854//2181 1853//2180 +f 1854//2181 1862//2188 1863//2189 +f 1863//2189 1855//2182 1854//2181 +f 1855//2182 1863//2189 1864//2190 +f 1864//2190 1856//2183 1855//2182 +s 28 +f 1856//2386 1864//2388 1865//2389 +f 1865//2389 1857//2387 1856//2386 +s 27 +f 1609//2128 1617//2129 1866//2191 +f 1866//2191 1858//2184 1609//2128 +f 1858//2184 1866//2191 1867//2192 +f 1867//2192 1859//2185 1858//2184 +f 1859//2185 1867//2192 1868//2193 +f 1868//2193 1860//2186 1859//2185 +f 1860//2186 1868//2193 1869//2194 +f 1869//2194 1861//2187 1860//2186 +f 1861//2187 1869//2194 1870//2195 +f 1870//2195 1862//2188 1861//2187 +f 1862//2188 1870//2195 1871//2196 +f 1871//2196 1863//2189 1862//2188 +f 1863//2189 1871//2196 1872//2197 +f 1872//2197 1864//2190 1863//2189 +s 28 +f 1864//2388 1872//2390 1873//2391 +f 1873//2391 1865//2389 1864//2388 +s 27 +f 1617//2129 1625//2130 1874//2198 +f 1874//2198 1866//2191 1617//2129 +f 1866//2191 1874//2198 1875//2199 +f 1875//2199 1867//2192 1866//2191 +f 1867//2192 1875//2199 1876//2200 +f 1876//2200 1868//2193 1867//2192 +f 1868//2193 1876//2200 1877//2201 +f 1877//2201 1869//2194 1868//2193 +f 1869//2194 1877//2201 1878//2202 +f 1878//2202 1870//2195 1869//2194 +f 1870//2195 1878//2202 1879//2203 +f 1879//2203 1871//2196 1870//2195 +f 1871//2196 1879//2203 1880//2204 +f 1880//2204 1872//2197 1871//2196 +s 28 +f 1872//2390 1880//2392 1881//2393 +f 1881//2393 1873//2391 1872//2390 +s 27 +f 1625//2130 1633//2131 1882//2205 +f 1882//2205 1874//2198 1625//2130 +f 1874//2198 1882//2205 1883//2206 +f 1883//2206 1875//2199 1874//2198 +f 1875//2199 1883//2206 1884//2207 +f 1884//2207 1876//2200 1875//2199 +f 1876//2200 1884//2207 1885//2208 +f 1885//2208 1877//2201 1876//2200 +f 1877//2201 1885//2208 1886//2209 +f 1886//2209 1878//2202 1877//2201 +f 1878//2202 1886//2209 1887//2210 +f 1887//2210 1879//2203 1878//2202 +f 1879//2203 1887//2210 1888//2211 +f 1888//2211 1880//2204 1879//2203 +s 28 +f 1880//2392 1888//2394 1889//2395 +f 1889//2395 1881//2393 1880//2392 +s 27 +f 1633//2131 1641//2132 1890//2212 +f 1890//2212 1882//2205 1633//2131 +f 1882//2205 1890//2212 1891//2213 +f 1891//2213 1883//2206 1882//2205 +f 1883//2206 1891//2213 1892//2214 +f 1892//2214 1884//2207 1883//2206 +f 1884//2207 1892//2214 1893//2215 +f 1893//2215 1885//2208 1884//2207 +f 1885//2208 1893//2215 1894//2216 +f 1894//2216 1886//2209 1885//2208 +f 1886//2209 1894//2216 1895//2217 +f 1895//2217 1887//2210 1886//2209 +f 1887//2210 1895//2217 1896//2218 +f 1896//2218 1888//2211 1887//2210 +s 28 +f 1888//2394 1896//2396 1897//2397 +f 1897//2397 1889//2395 1888//2394 +s 27 +f 1641//2132 1649//2133 1898//2219 +f 1898//2219 1890//2212 1641//2132 +f 1890//2212 1898//2219 1899//2220 +f 1899//2220 1891//2213 1890//2212 +f 1891//2213 1899//2220 1900//2221 +f 1900//2221 1892//2214 1891//2213 +f 1892//2214 1900//2221 1901//2222 +f 1901//2222 1893//2215 1892//2214 +f 1893//2215 1901//2222 1902//2223 +f 1902//2223 1894//2216 1893//2215 +f 1894//2216 1902//2223 1903//2224 +f 1903//2224 1895//2217 1894//2216 +f 1895//2217 1903//2224 1904//2225 +f 1904//2225 1896//2218 1895//2217 +s 28 +f 1896//2396 1904//2398 1905//2399 +f 1905//2399 1897//2397 1896//2396 +s 27 +f 1649//2133 1657//2134 1906//2226 +f 1906//2226 1898//2219 1649//2133 +f 1898//2219 1906//2226 1907//2227 +f 1907//2227 1899//2220 1898//2219 +f 1899//2220 1907//2227 1908//2228 +f 1908//2228 1900//2221 1899//2220 +f 1900//2221 1908//2228 1909//2229 +f 1909//2229 1901//2222 1900//2221 +f 1901//2222 1909//2229 1910//2230 +f 1910//2230 1902//2223 1901//2222 +f 1902//2223 1910//2230 1911//2231 +f 1911//2231 1903//2224 1902//2223 +f 1903//2224 1911//2231 1912//2232 +f 1912//2232 1904//2225 1903//2224 +s 28 +f 1904//2398 1912//2400 1913//2401 +f 1913//2401 1905//2399 1904//2398 +s 27 +f 1657//2134 1665//2135 1914//2233 +f 1914//2233 1906//2226 1657//2134 +f 1906//2226 1914//2233 1915//2234 +f 1915//2234 1907//2227 1906//2226 +f 1907//2227 1915//2234 1916//2235 +f 1916//2235 1908//2228 1907//2227 +f 1908//2228 1916//2235 1917//2236 +f 1917//2236 1909//2229 1908//2228 +f 1909//2229 1917//2236 1918//2237 +f 1918//2237 1910//2230 1909//2229 +f 1910//2230 1918//2237 1919//2238 +f 1919//2238 1911//2231 1910//2230 +f 1911//2231 1919//2238 1920//2239 +f 1920//2239 1912//2232 1911//2231 +s 28 +f 1912//2400 1920//2402 1921//2403 +f 1921//2403 1913//2401 1912//2400 +s 27 +f 1665//2135 1673//2136 1922//2240 +f 1922//2240 1914//2233 1665//2135 +f 1914//2233 1922//2240 1923//2241 +f 1923//2241 1915//2234 1914//2233 +f 1915//2234 1923//2241 1924//2242 +f 1924//2242 1916//2235 1915//2234 +f 1916//2235 1924//2242 1925//2243 +f 1925//2243 1917//2236 1916//2235 +f 1917//2236 1925//2243 1926//2244 +f 1926//2244 1918//2237 1917//2236 +f 1918//2237 1926//2244 1927//2245 +f 1927//2245 1919//2238 1918//2237 +f 1919//2238 1927//2245 1928//2246 +f 1928//2246 1920//2239 1919//2238 +s 28 +f 1920//2402 1928//2404 1929//2405 +f 1929//2405 1921//2403 1920//2402 +s 27 +f 1673//2136 1681//2137 1930//2247 +f 1930//2247 1922//2240 1673//2136 +f 1922//2240 1930//2247 1931//2248 +f 1931//2248 1923//2241 1922//2240 +f 1923//2241 1931//2248 1932//2249 +f 1932//2249 1924//2242 1923//2241 +f 1924//2242 1932//2249 1933//2250 +f 1933//2250 1925//2243 1924//2242 +f 1925//2243 1933//2250 1934//2251 +f 1934//2251 1926//2244 1925//2243 +f 1926//2244 1934//2251 1935//2252 +f 1935//2252 1927//2245 1926//2244 +f 1927//2245 1935//2252 1936//2253 +f 1936//2253 1928//2246 1927//2245 +s 28 +f 1928//2404 1936//2406 1937//2407 +f 1937//2407 1929//2405 1928//2404 +s 27 +f 1681//2137 1689//2138 1938//2254 +f 1938//2254 1930//2247 1681//2137 +f 1930//2247 1938//2254 1939//2255 +f 1939//2255 1931//2248 1930//2247 +f 1931//2248 1939//2255 1940//2256 +f 1940//2256 1932//2249 1931//2248 +f 1932//2249 1940//2256 1941//2257 +f 1941//2257 1933//2250 1932//2249 +f 1933//2250 1941//2257 1942//2258 +f 1942//2258 1934//2251 1933//2250 +f 1934//2251 1942//2258 1943//2259 +f 1943//2259 1935//2252 1934//2251 +f 1935//2252 1943//2259 1944//2260 +f 1944//2260 1936//2253 1935//2252 +s 28 +f 1936//2406 1944//2408 1945//2409 +f 1945//2409 1937//2407 1936//2406 +s 27 +f 1689//2138 1697//2139 1946//2261 +f 1946//2261 1938//2254 1689//2138 +f 1938//2254 1946//2261 1947//2262 +f 1947//2262 1939//2255 1938//2254 +f 1939//2255 1947//2262 1948//2263 +f 1948//2263 1940//2256 1939//2255 +f 1940//2256 1948//2263 1949//2264 +f 1949//2264 1941//2257 1940//2256 +f 1941//2257 1949//2264 1950//2265 +f 1950//2265 1942//2258 1941//2257 +f 1942//2258 1950//2265 1951//2266 +f 1951//2266 1943//2259 1942//2258 +f 1943//2259 1951//2266 1952//2267 +f 1952//2267 1944//2260 1943//2259 +s 28 +f 1944//2408 1952//2410 1953//2411 +f 1953//2411 1945//2409 1944//2408 +s 27 +f 1697//2139 1705//2140 1954//2268 +f 1954//2268 1946//2261 1697//2139 +f 1946//2261 1954//2268 1955//2269 +f 1955//2269 1947//2262 1946//2261 +f 1947//2262 1955//2269 1956//2270 +f 1956//2270 1948//2263 1947//2262 +f 1948//2263 1956//2270 1957//2271 +f 1957//2271 1949//2264 1948//2263 +f 1949//2264 1957//2271 1958//2272 +f 1958//2272 1950//2265 1949//2264 +f 1950//2265 1958//2272 1959//2273 +f 1959//2273 1951//2266 1950//2265 +f 1951//2266 1959//2273 1960//2274 +f 1960//2274 1952//2267 1951//2266 +s 28 +f 1952//2410 1960//2412 1961//2413 +f 1961//2413 1953//2411 1952//2410 +s 27 +f 1705//2140 1713//2141 1962//2275 +f 1962//2275 1954//2268 1705//2140 +f 1954//2268 1962//2275 1963//2276 +f 1963//2276 1955//2269 1954//2268 +f 1955//2269 1963//2276 1964//2277 +f 1964//2277 1956//2270 1955//2269 +f 1956//2270 1964//2277 1965//2278 +f 1965//2278 1957//2271 1956//2270 +f 1957//2271 1965//2278 1966//2279 +f 1966//2279 1958//2272 1957//2271 +f 1958//2272 1966//2279 1967//2280 +f 1967//2280 1959//2273 1958//2272 +f 1959//2273 1967//2280 1968//2281 +f 1968//2281 1960//2274 1959//2273 +s 28 +f 1960//2412 1968//2414 1969//2415 +f 1969//2415 1961//2413 1960//2412 +s 27 +f 1713//2141 1721//2142 1970//2282 +f 1970//2282 1962//2275 1713//2141 +f 1962//2275 1970//2282 1971//2283 +f 1971//2283 1963//2276 1962//2275 +f 1963//2276 1971//2283 1972//2284 +f 1972//2284 1964//2277 1963//2276 +f 1964//2277 1972//2284 1973//2285 +f 1973//2285 1965//2278 1964//2277 +f 1965//2278 1973//2285 1974//2286 +f 1974//2286 1966//2279 1965//2278 +f 1966//2279 1974//2286 1975//2287 +f 1975//2287 1967//2280 1966//2279 +f 1967//2280 1975//2287 1976//2288 +f 1976//2288 1968//2281 1967//2280 +s 28 +f 1968//2414 1976//2416 1977//2417 +f 1977//2417 1969//2415 1968//2414 +s 27 +f 1721//2142 1729//2143 1978//2289 +f 1978//2289 1970//2282 1721//2142 +f 1970//2282 1978//2289 1979//2290 +f 1979//2290 1971//2283 1970//2282 +f 1971//2283 1979//2290 1980//2291 +f 1980//2291 1972//2284 1971//2283 +f 1972//2284 1980//2291 1981//2292 +f 1981//2292 1973//2285 1972//2284 +f 1973//2285 1981//2292 1982//2293 +f 1982//2293 1974//2286 1973//2285 +f 1974//2286 1982//2293 1983//2294 +f 1983//2294 1975//2287 1974//2286 +f 1975//2287 1983//2294 1984//2295 +f 1984//2295 1976//2288 1975//2287 +s 28 +f 1976//2416 1984//2418 1985//2419 +f 1985//2419 1977//2417 1976//2416 +s 27 +f 1729//2143 1737//2144 1986//2296 +f 1986//2296 1978//2289 1729//2143 +f 1978//2289 1986//2296 1987//2297 +f 1987//2297 1979//2290 1978//2289 +f 1979//2290 1987//2297 1988//2298 +f 1988//2298 1980//2291 1979//2290 +f 1980//2291 1988//2298 1989//2299 +f 1989//2299 1981//2292 1980//2291 +f 1981//2292 1989//2299 1990//2300 +f 1990//2300 1982//2293 1981//2292 +f 1982//2293 1990//2300 1991//2301 +f 1991//2301 1983//2294 1982//2293 +f 1983//2294 1991//2301 1992//2302 +f 1992//2302 1984//2295 1983//2294 +s 28 +f 1984//2418 1992//2420 1993//2421 +f 1993//2421 1985//2419 1984//2418 +s 27 +f 1737//2144 1745//2145 1994//2303 +f 1994//2303 1986//2296 1737//2144 +f 1986//2296 1994//2303 1995//2304 +f 1995//2304 1987//2297 1986//2296 +f 1987//2297 1995//2304 1996//2305 +f 1996//2305 1988//2298 1987//2297 +f 1988//2298 1996//2305 1997//2306 +f 1997//2306 1989//2299 1988//2298 +f 1989//2299 1997//2306 1998//2307 +f 1998//2307 1990//2300 1989//2299 +f 1990//2300 1998//2307 1999//2308 +f 1999//2308 1991//2301 1990//2300 +f 1991//2301 1999//2308 2000//2309 +f 2000//2309 1992//2302 1991//2301 +s 28 +f 1992//2420 2000//2422 2001//2423 +f 2001//2423 1993//2421 1992//2420 +s 27 +f 1745//2145 1753//2146 2002//2310 +f 2002//2310 1994//2303 1745//2145 +f 1994//2303 2002//2310 2003//2311 +f 2003//2311 1995//2304 1994//2303 +f 1995//2304 2003//2311 2004//2312 +f 2004//2312 1996//2305 1995//2304 +f 1996//2305 2004//2312 2005//2313 +f 2005//2313 1997//2306 1996//2305 +f 1997//2306 2005//2313 2006//2314 +f 2006//2314 1998//2307 1997//2306 +f 1998//2307 2006//2314 2007//2315 +f 2007//2315 1999//2308 1998//2307 +f 1999//2308 2007//2315 2008//2316 +f 2008//2316 2000//2309 1999//2308 +s 28 +f 2000//2422 2008//2424 2009//2425 +f 2009//2425 2001//2423 2000//2422 +s 27 +f 1753//2146 1761//2147 2010//2317 +f 2010//2317 2002//2310 1753//2146 +f 2002//2310 2010//2317 2011//2318 +f 2011//2318 2003//2311 2002//2310 +f 2003//2311 2011//2318 2012//2319 +f 2012//2319 2004//2312 2003//2311 +f 2004//2312 2012//2319 2013//2320 +f 2013//2320 2005//2313 2004//2312 +f 2005//2313 2013//2320 2014//2321 +f 2014//2321 2006//2314 2005//2313 +f 2006//2314 2014//2321 2015//2322 +f 2015//2322 2007//2315 2006//2314 +f 2007//2315 2015//2322 2016//2323 +f 2016//2323 2008//2316 2007//2315 +s 28 +f 2008//2424 2016//2426 2017//2427 +f 2017//2427 2009//2425 2008//2424 +s 27 +f 1761//2147 1769//2148 2018//2324 +f 2018//2324 2010//2317 1761//2147 +f 2010//2317 2018//2324 2019//2325 +f 2019//2325 2011//2318 2010//2317 +f 2011//2318 2019//2325 2020//2326 +f 2020//2326 2012//2319 2011//2318 +f 2012//2319 2020//2326 2021//2327 +f 2021//2327 2013//2320 2012//2319 +f 2013//2320 2021//2327 2022//2328 +f 2022//2328 2014//2321 2013//2320 +f 2014//2321 2022//2328 2023//2329 +f 2023//2329 2015//2322 2014//2321 +f 2015//2322 2023//2329 2024//2330 +f 2024//2330 2016//2323 2015//2322 +s 28 +f 2016//2426 2024//2428 2025//2429 +f 2025//2429 2017//2427 2016//2426 +s 27 +f 1769//2148 1777//2149 2026//2331 +f 2026//2331 2018//2324 1769//2148 +f 2018//2324 2026//2331 2027//2332 +f 2027//2332 2019//2325 2018//2324 +f 2019//2325 2027//2332 2028//2333 +f 2028//2333 2020//2326 2019//2325 +f 2020//2326 2028//2333 2029//2334 +f 2029//2334 2021//2327 2020//2326 +f 2021//2327 2029//2334 2030//2335 +f 2030//2335 2022//2328 2021//2327 +f 2022//2328 2030//2335 2031//2336 +f 2031//2336 2023//2329 2022//2328 +f 2023//2329 2031//2336 2032//2337 +f 2032//2337 2024//2330 2023//2329 +s 28 +f 2024//2428 2032//2430 2033//2431 +f 2033//2431 2025//2429 2024//2428 +s 27 +f 1777//2149 1785//2150 2034//2338 +f 2034//2338 2026//2331 1777//2149 +f 2026//2331 2034//2338 2035//2339 +f 2035//2339 2027//2332 2026//2331 +f 2027//2332 2035//2339 2036//2340 +f 2036//2340 2028//2333 2027//2332 +f 2028//2333 2036//2340 2037//2341 +f 2037//2341 2029//2334 2028//2333 +f 2029//2334 2037//2341 2038//2342 +f 2038//2342 2030//2335 2029//2334 +f 2030//2335 2038//2342 2039//2343 +f 2039//2343 2031//2336 2030//2335 +f 2031//2336 2039//2343 2040//2344 +f 2040//2344 2032//2337 2031//2336 +s 28 +f 2032//2430 2040//2432 2041//2433 +f 2041//2433 2033//2431 2032//2430 +s 27 +f 1785//2150 1793//2151 2042//2345 +f 2042//2345 2034//2338 1785//2150 +f 2034//2338 2042//2345 2043//2346 +f 2043//2346 2035//2339 2034//2338 +f 2035//2339 2043//2346 2044//2347 +f 2044//2347 2036//2340 2035//2339 +f 2036//2340 2044//2347 2045//2348 +f 2045//2348 2037//2341 2036//2340 +f 2037//2341 2045//2348 2046//2349 +f 2046//2349 2038//2342 2037//2341 +f 2038//2342 2046//2349 2047//2350 +f 2047//2350 2039//2343 2038//2342 +f 2039//2343 2047//2350 2048//2351 +f 2048//2351 2040//2344 2039//2343 +s 28 +f 2040//2432 2048//2434 2049//2435 +f 2049//2435 2041//2433 2040//2432 +s 27 +f 1793//2151 1801//2152 2050//2352 +f 2050//2352 2042//2345 1793//2151 +f 2042//2345 2050//2352 2051//2353 +f 2051//2353 2043//2346 2042//2345 +f 2043//2346 2051//2353 2052//2354 +f 2052//2354 2044//2347 2043//2346 +f 2044//2347 2052//2354 2053//2355 +f 2053//2355 2045//2348 2044//2347 +f 2045//2348 2053//2355 2054//2356 +f 2054//2356 2046//2349 2045//2348 +f 2046//2349 2054//2356 2055//2357 +f 2055//2357 2047//2350 2046//2349 +f 2047//2350 2055//2357 2056//2358 +f 2056//2358 2048//2351 2047//2350 +s 28 +f 2048//2434 2056//2436 2057//2437 +f 2057//2437 2049//2435 2048//2434 +s 27 +f 1801//2152 1809//2153 2058//2359 +f 2058//2359 2050//2352 1801//2152 +f 2050//2352 2058//2359 2059//2360 +f 2059//2360 2051//2353 2050//2352 +f 2051//2353 2059//2360 2060//2361 +f 2060//2361 2052//2354 2051//2353 +f 2052//2354 2060//2361 2061//2362 +f 2061//2362 2053//2355 2052//2354 +f 2053//2355 2061//2362 2062//2363 +f 2062//2363 2054//2356 2053//2355 +f 2054//2356 2062//2363 2063//2364 +f 2063//2364 2055//2357 2054//2356 +f 2055//2357 2063//2364 2064//2365 +f 2064//2365 2056//2358 2055//2357 +s 28 +f 2056//2436 2064//2438 2065//2439 +f 2065//2439 2057//2437 2056//2436 +s 27 +f 1809//2153 1817//2154 2066//2366 +f 2066//2366 2058//2359 1809//2153 +f 2058//2359 2066//2366 2067//2367 +f 2067//2367 2059//2360 2058//2359 +f 2059//2360 2067//2367 2068//2368 +f 2068//2368 2060//2361 2059//2360 +f 2060//2361 2068//2368 2069//2369 +f 2069//2369 2061//2362 2060//2361 +f 2061//2362 2069//2369 2070//2370 +f 2070//2370 2062//2363 2061//2362 +f 2062//2363 2070//2370 2071//2371 +f 2071//2371 2063//2364 2062//2363 +f 2063//2364 2071//2371 2072//2372 +f 2072//2372 2064//2365 2063//2364 +s 28 +f 2064//2438 2072//2440 2073//2441 +f 2073//2441 2065//2439 2064//2438 +s 27 +f 1817//2154 1825//2155 2074//2373 +f 2074//2373 2066//2366 1817//2154 +f 2066//2366 2074//2373 2075//2374 +f 2075//2374 2067//2367 2066//2366 +f 2067//2367 2075//2374 2076//2375 +f 2076//2375 2068//2368 2067//2367 +f 2068//2368 2076//2375 2077//2376 +f 2077//2376 2069//2369 2068//2368 +f 2069//2369 2077//2376 2078//2377 +f 2078//2377 2070//2370 2069//2369 +f 2070//2370 2078//2377 2079//2378 +f 2079//2378 2071//2371 2070//2370 +f 2071//2371 2079//2378 2080//2379 +f 2080//2379 2072//2372 2071//2371 +s 28 +f 2072//2440 2080//2442 2081//2443 +f 2081//2443 2073//2441 2072//2440 +s 27 +f 1825//2155 1585//2125 1827//2157 +f 1827//2157 2074//2373 1825//2155 +f 2074//2373 1827//2157 1829//2159 +f 1829//2159 2075//2374 2074//2373 +f 2075//2374 1829//2159 1831//2161 +f 1831//2161 2076//2375 2075//2374 +f 2076//2375 1831//2161 1833//2163 +f 1833//2163 2077//2376 2076//2375 +f 2077//2376 1833//2163 1835//2165 +f 1835//2165 2078//2377 2077//2376 +f 2078//2377 1835//2165 1837//2167 +f 1837//2167 2079//2378 2078//2377 +f 2079//2378 1837//2167 1839//2169 +f 1839//2169 2080//2379 2079//2378 +s 28 +f 2080//2442 1839//2381 1841//2383 +f 1841//2383 2081//2443 2080//2442 +# 4096 elements diff --git a/src/demos/hdr/ARBFPPipeline.java b/src/demos/hdr/ARBFPPipeline.java new file mode 100755 index 0000000..e13b9f7 --- /dev/null +++ b/src/demos/hdr/ARBFPPipeline.java @@ -0,0 +1,171 @@ +package demos.hdr; + +import java.io.*; +import java.util.*; + +import net.java.games.jogl.*; +import demos.util.*; + +public class ARBFPPipeline implements Pipeline { + private int textureFormat; + public ARBFPPipeline(int textureFormat) { + this.textureFormat = textureFormat; + } + + public void init() { + } + + public void initFloatingPointTexture(GL gl, int textureObject, int w, int h) { + gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); + gl.glCopyTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, textureFormat, 0, 0, w, h, 0); + } + + public void initTexture(GL gl, int textureObject, int w, int h) { + gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); + gl.glCopyTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, GL.GL_RGBA, 0, 0, w, h, 0); + } + + public void copyToTexture(GL gl, int textureObject, int w, int h) { + gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); + gl.glCopyTexSubImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, 0, 0, 0, 0, w, h); + } + + public void bindTexture(GL gl, int textureObject) { + gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); + } + + private List programs = new ArrayList(); + public int loadVertexProgram(GL gl, String filename) throws IOException { + return loadProgram(gl, filename, GL.GL_VERTEX_PROGRAM_ARB); + } + + public int loadFragmentProgram(GL gl, String filename) throws IOException { + return loadProgram(gl, filename, GL.GL_FRAGMENT_PROGRAM_ARB); + } + + private int loadProgram(GL gl, String fileName, int profile) throws IOException { + String programBuffer = FileUtils.loadStreamIntoString(getClass().getClassLoader().getResourceAsStream(fileName)); + int[] tmpInt = new int[1]; + gl.glGenProgramsARB(1, tmpInt); + int res = tmpInt[0]; + gl.glBindProgramARB(profile, res); + gl.glProgramStringARB(profile, GL.GL_PROGRAM_FORMAT_ASCII_ARB, programBuffer.length(), programBuffer); + int[] errPos = new int[1]; + gl.glGetIntegerv(GL.GL_PROGRAM_ERROR_POSITION_ARB, errPos); + if (errPos[0] >= 0) { + String kind = "Program"; + if (profile == GL.GL_VERTEX_PROGRAM_ARB) { + kind = "Vertex program"; + } else if (profile == GL.GL_FRAGMENT_PROGRAM_ARB) { + kind = "Fragment program"; + } + System.out.println(kind + " failed to load:"); + String errMsg = gl.glGetString(GL.GL_PROGRAM_ERROR_STRING_ARB); + if (errMsg == null) { + System.out.println("[No error message available]"); + } else { + System.out.println("Error message: \"" + errMsg + "\""); + } + System.out.println("Error occurred at position " + errPos[0] + " in program:"); + int endPos = errPos[0]; + while (endPos < programBuffer.length() && programBuffer.charAt(endPos) != '\n') { + ++endPos; + } + System.out.println(programBuffer.substring(errPos[0], endPos)); + throw new GLException("Error loading " + kind); + } else { + if (profile == GL.GL_FRAGMENT_PROGRAM_ARB) { + int[] isNative = new int[1]; + gl.glGetProgramivARB(GL.GL_FRAGMENT_PROGRAM_ARB, + GL.GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB, + isNative); + if (isNative[0] != 1) { + System.out.println("WARNING: fragment program is over native resource limits"); + Thread.dumpStack(); + } + } + } + return res; + } + + public void enableVertexProgram(GL gl, int program) { + gl.glBindProgramARB(GL.GL_VERTEX_PROGRAM_ARB, program); + gl.glEnable(GL.GL_VERTEX_PROGRAM_ARB); + } + + public void enableFragmentProgram(GL gl, int program) { + gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, program); + gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB); + } + + public void disableVertexProgram(GL gl) { + gl.glDisable(GL.GL_VERTEX_PROGRAM_ARB); + } + + public void disableFragmentProgram(GL gl) { + gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB); + } + + public int getNamedParameter(int program, String name) { + throw new RuntimeException("Not supported"); + } + + public void setVertexProgramParameter1f(GL gl, int param, float val) { + if (param < 0) return; + gl.glProgramLocalParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, param, val, 0, 0, 0); + } + + public void setVertexProgramParameter3f(GL gl, int param, float x, float y, float z) { + if (param < 0) return; + gl.glProgramLocalParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, param, x, y, z, 0); + } + + public void setVertexProgramParameter4f(GL gl, int param, float x, float y, float z, float w) { + if (param < 0) return; + gl.glProgramLocalParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, param, x, y, z, w); + } + + public void setFragmentProgramParameter1f(GL gl, int param, float val) { + if (param < 0) return; + gl.glProgramLocalParameter4fARB(GL.GL_FRAGMENT_PROGRAM_ARB, param, val, 0, 0, 0); + } + + public void setFragmentProgramParameter3f(GL gl, int param, float x, float y, float z) { + if (param < 0) return; + gl.glProgramLocalParameter4fARB(GL.GL_FRAGMENT_PROGRAM_ARB, param, x, y, z, 0); + } + + public void setFragmentProgramParameter4f(GL gl, int param, float x, float y, float z, float w) { + if (param < 0) return; + gl.glProgramLocalParameter4fARB(GL.GL_FRAGMENT_PROGRAM_ARB, param, x, y, z, w); + } + + public void trackModelViewProjectionMatrix(GL gl, int param) { + float[] modelView = new float[16]; + float[] projection = new float[16]; + float[] mvp = new float[16]; + + // Get matrices + gl.glGetFloatv(GL.GL_PROJECTION_MATRIX, projection); + gl.glGetFloatv(GL.GL_MODELVIEW_MATRIX, modelView); + // Multiply together + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) { + float sum = 0; + for (int k = 0; k < 4; k++) { + sum += modelView[4 * i + k] * projection[4 * k + j]; + } + mvp[4 * i + j] = sum; + } + } + + setMatrixParameterfc(gl, param, mvp); + } + + public void setMatrixParameterfc(GL gl, int param, float[] matrix) { + // Correct for row-major vs. column-major differences + for (int i = 0; i < 4; i++) { + gl.glProgramLocalParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, param + i, matrix[i], matrix[4+i], matrix[8+i], matrix[12+i]); + } + } +} diff --git a/src/demos/hdr/CgPipeline.java b/src/demos/hdr/CgPipeline.java new file mode 100755 index 0000000..2f3a9f5 --- /dev/null +++ b/src/demos/hdr/CgPipeline.java @@ -0,0 +1,113 @@ +package demos.hdr; + +import java.io.*; +import java.util.*; + +import net.java.games.jogl.*; +import net.java.games.cg.*; +import demos.util.*; + +public class CgPipeline implements Pipeline { + private CGcontext context; + public void init() { + context = CgGL.cgCreateContext(); + } + + public void initFloatingPointTexture(GL gl, int textureObject, int w, int h) { + gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); + gl.glCopyTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, GL.GL_FLOAT_RGBA16_NV, 0, 0, w, h, 0); + } + + public void initTexture(GL gl, int textureObject, int w, int h) { + gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); + gl.glCopyTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, GL.GL_RGBA, 0, 0, w, h, 0); + } + + public void copyToTexture(GL gl, int textureObject, int w, int h) { + gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); + gl.glCopyTexSubImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, 0, 0, 0, 0, w, h); + } + + public void bindTexture(GL gl, int textureObject) { + gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject); + } + + private List programs = new ArrayList(); + public int loadVertexProgram(GL gl, String filename) throws IOException { + return loadProgram(filename, CgGL.CG_PROFILE_ARBVP1); + } + + public int loadFragmentProgram(GL gl, String filename) throws IOException { + return loadProgram(filename, CgGL.CG_PROFILE_ARBFP1); + } + + private int loadProgram(String fileName, int profile) throws IOException { + CGprogram prog = CgGL.cgCreateProgramFromFile(context, CgGL.CG_SOURCE, fileName, profile, null, null); + if (prog == null) { + throw new RuntimeException("Error loading program"); + } + CgGL.cgGLLoadProgram(prog); + int res = programs.size(); + programs.add(prog); + return res; + } + + public void enableVertexProgram(GL gl, int program) { + CgGL.cgGLBindProgram((CGprogram) programs.get(program)); + CgGL.cgGLEnableProfile(CgGL.CG_PROFILE_ARBVP1); + } + + public void enableFragmentProgram(GL gl, int program) { + CgGL.cgGLBindProgram((CGprogram) programs.get(program)); + CgGL.cgGLEnableProfile(CgGL.CG_PROFILE_ARBFP1); + } + + public void disableVertexProgram(GL gl) { + CgGL.cgGLDisableProfile(CgGL.CG_PROFILE_ARBVP1); + } + + public void disableFragmentProgram(GL gl) { + CgGL.cgGLDisableProfile(CgGL.CG_PROFILE_ARBFP1); + } + + private List parameters = new ArrayList(); + public int getNamedParameter(int program, String name) { + CGprogram prog = (CGprogram) programs.get(program); + CGparameter param = CgGL.cgGetNamedParameter(prog, name); + int res = parameters.size(); + parameters.add(param); + return res; + } + + public void setVertexProgramParameter1f(GL gl, int param, float val) { + CgGL.cgGLSetParameter1f((CGparameter) parameters.get(param), val); + } + + public void setVertexProgramParameter3f(GL gl, int param, float x, float y, float z) { + CgGL.cgGLSetParameter3f((CGparameter) parameters.get(param), x, y, z); + } + + public void setVertexProgramParameter4f(GL gl, int param, float x, float y, float z, float w) { + CgGL.cgGLSetParameter4f((CGparameter) parameters.get(param), x, y, z, w); + } + + public void setFragmentProgramParameter1f(GL gl, int param, float val) { + CgGL.cgGLSetParameter1f((CGparameter) parameters.get(param), val); + } + + public void setFragmentProgramParameter3f(GL gl, int param, float x, float y, float z) { + CgGL.cgGLSetParameter3f((CGparameter) parameters.get(param), x, y, z); + } + + public void setFragmentProgramParameter4f(GL gl, int param, float x, float y, float z, float w) { + CgGL.cgGLSetParameter4f((CGparameter) parameters.get(param), x, y, z, w); + } + + public void trackModelViewProjectionMatrix(GL gl, int param) { + CgGL.cgGLSetStateMatrixParameter((CGparameter) parameters.get(param), CgGL.CG_GL_MODELVIEW_PROJECTION_MATRIX, CgGL.CG_GL_MATRIX_IDENTITY); + } + + public void setMatrixParameterfc(GL gl, int param, float[] matrix) { + CgGL.cgGLSetMatrixParameterfc((CGparameter) parameters.get(param), matrix); + } +} diff --git a/src/demos/hdr/HDR.java b/src/demos/hdr/HDR.java new file mode 100755 index 0000000..312741d --- /dev/null +++ b/src/demos/hdr/HDR.java @@ -0,0 +1,1179 @@ +package demos.hdr; + +import java.awt.*; +import java.awt.event.*; +import java.io.*; +import java.nio.*; +import java.util.*; +import javax.swing.*; + +import net.java.games.jogl.*; +import net.java.games.cg.*; +import net.java.games.jogl.util.*; +import demos.util.*; +import gleem.*; +import gleem.linalg.*; + +/** HDR demo by NVidia Corporation - Simon Green, [email protected] <P> + + Ported to Java by Kenneth Russell +*/ + +public class HDR { + private boolean useCg; + private GLCanvas canvas; + private Frame frame; + private Animator animator; + private boolean initFailed; + private HDRTexture hdr; + private String modelFilename; + private ObjReader model; + private Pipeline pipeline; + + private GLUT glut = new GLUT(); + + private boolean[] b = new boolean[256]; + + private ExaminerViewer viewer; + private boolean doViewAll = true; + + private DurationTimer timer = new DurationTimer(); + private boolean firstRender = true; + private int frameCount; + + private Time time = new SystemTime(); + private float animRate = (float) Math.toRadians(-12.0f); // Radians / sec + + private String hdrFilename; + private int win_w; + private int win_h; + private float win_scale; + private int pbuffer_w; + private int pbuffer_h; + private int blurWidth; + private int blur_scale; + private int blur_w; + private int blur_h; + private float blurAmount = 0.5f; + + private int modelno = 4; + private int numModels = 5; + + private boolean hilo = false; + private int hdr_tex; + private int hdr_tex2; + private int gamma_tex; + private int vignette_tex; + + private int textureTarget; // Either GL_TEXTURE_RECTANGLE_NV or GL_TEXTURE_RECTANGLE_EXT/ARB + + private GLPbuffer pbuffer; + private GLPbuffer blur_pbuffer; + private GLPbuffer blur2_pbuffer; + private GLPbuffer tonemap_pbuffer; + // Texture objects for these pbuffers + private int pbuffer_tex; + private int blur_pbuffer_tex; + private int blur2_pbuffer_tex; + private int tonemap_pbuffer_tex; + + // Render passes for blur2_pbuffer + private static final int BLUR2_SHRINK_PASS = 0; + private static final int BLUR2_VERT_BLUR_PASS = 1; + private int blur2Pass; + + private int blurh_fprog, blurv_fprog; + private int skybox_fprog, object_fprog, object_vprog; + private int tonemap_fprog, shrink_fprog; + private int blurAmount_param, windowSize_param, exposure_param; + private int modelViewProj_param, model_param, eyePos_param; + + + private float exposure = 32.0f; + + private float[] identityMatrix = { 1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f }; + + public static void main(String[] args) { + new HDR().run(args); + } + + public void run(String[] args) { + if (args.length < 6 || args.length > 8) { + usage(); + } + + try { + int argNo = 0; + if (args[argNo].equals("-cg")) { + useCg = true; + ++argNo; + } + hdrFilename = args[argNo++]; + pbuffer_w = Integer.parseInt(args[argNo++]); + pbuffer_h = Integer.parseInt(args[argNo++]); + win_scale = Float.parseFloat(args[argNo++]); + blurWidth = Integer.parseInt(args[argNo++]); + blur_scale = Integer.parseInt(args[argNo++]); + if (argNo < args.length) { + modelFilename = args[argNo++]; + } + + blur_w = pbuffer_w / blur_scale; + blur_h = pbuffer_h / blur_scale; + win_w = (int) (pbuffer_w * win_scale); + win_h = (int) (pbuffer_h * win_scale); + } catch (NumberFormatException e) { + e.printStackTrace(); + usage(); + } + + if (modelFilename != null) { + try { + InputStream in = getClass().getClassLoader().getResourceAsStream(modelFilename); + if (in == null) { + throw new IOException("Unable to open model file " + modelFilename); + } + model = new ObjReader(in); + if (model.getVerticesPerFace() != 3) { + throw new IOException("Sorry, only triangle-based WaveFront OBJ files supported"); + } + model.rescale(1.2f / model.getRadius()); + ++numModels; + modelno = 5; + } catch (IOException e) { + e.printStackTrace(); + System.exit(1); + } + } + + b['f'] = true; // fragment programs + b['g'] = true; // glare + b['l'] = true; + b[' '] = true; // animation + b['n'] = true; // upsampling smoothing + + try { + InputStream in = getClass().getClassLoader().getResourceAsStream(hdrFilename); + if (in == null) { + throw new IOException("Unable to open HDR file " + hdrFilename); + } + hdr = new HDRTexture(in); + hdr.analyze(); + hdr.convert(); + } catch (IOException e) { + e.printStackTrace(); + System.exit(0); + } + + canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities()); + canvas.addGLEventListener(new Listener()); + canvas.setNoAutoRedrawMode(true); + + animator = new Animator(canvas); + + frame = new Frame("HDR test"); + frame.setLayout(new BorderLayout()); + frame.setResizable(false); + canvas.setSize(win_w, win_h); + + frame.add(canvas, BorderLayout.CENTER); + frame.pack(); + frame.show(); + canvas.requestFocus(); + + frame.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + runExit(); + } + }); + + animator.start(); + } + + //---------------------------------------------------------------------- + // Internals only below this point + // + + //---------------------------------------------------------------------- + // Listeners for main window and pbuffers + // + + class Listener implements GLEventListener { + private float zNear = 0.1f; + private float zFar = 10.0f; + private boolean wire = false; + private boolean toggleWire = false; + + public void init(GLDrawable drawable) { + // printThreadName("init for Listener"); + + GL gl = drawable.getGL(); + GLU glu = drawable.getGLU(); + + checkExtension(gl, "GL_ARB_multitexture"); + checkExtension(gl, "GL_ARB_pbuffer"); + checkExtension(gl, "GL_ARB_vertex_program"); + checkExtension(gl, "GL_ARB_fragment_program"); + if (!gl.isExtensionAvailable("GL_NV_texture_rectangle") && + !gl.isExtensionAvailable("GL_EXT_texture_rectangle") && + !gl.isExtensionAvailable("GL_ARB_texture_rectangle")) { + // NOTE: it turns out the constants associated with these extensions are all identical + unavailableExtension("Texture rectangle extension not available (need one of GL_NV_texture_rectangle, GL_EXT_texture_rectangle or GL_ARB_texture_rectangle"); + } + + if (!gl.isExtensionAvailable("GL_NV_float_buffer") && + !gl.isExtensionAvailable("GL_ATI_texture_float") && + !gl.isExtensionAvailable("GL_APPLE_float_pixels")) { + unavailableExtension("Floating-point textures not available (need one of GL_NV_float_buffer, GL_ATI_texture_float, or GL_APPLE_float_pixels"); + } + + setOrthoProjection(gl, win_w, win_h); + + gamma_tex = createGammaTexture(gl, 1024, 1.0f / 2.2f); + vignette_tex = createVignetteTexture(gl, pbuffer_w, pbuffer_h, 0.25f*pbuffer_w, 0.7f*pbuffer_w); + + int floatBits = 16; + int floatAlphaBits = 0; + // int floatDepthBits = 16; + // Workaround for apparent bug when not using render-to-texture-rectangle + int floatDepthBits = 1; + + GLCapabilities caps = new GLCapabilities(); + caps.setDoubleBuffered(false); + caps.setOffscreenFloatingPointBuffers(true); + caps.setRedBits(floatBits); + caps.setGreenBits(floatBits); + caps.setBlueBits(floatBits); + caps.setAlphaBits(floatAlphaBits); + caps.setDepthBits(floatDepthBits); + int[] tmp = new int[1]; + pbuffer = drawable.createOffscreenDrawable(caps, pbuffer_w, pbuffer_h); + pbuffer.addGLEventListener(new PbufferListener()); + gl.glGenTextures(1, tmp); + pbuffer_tex = tmp[0]; + blur_pbuffer = drawable.createOffscreenDrawable(caps, blur_w, blur_h); + blur_pbuffer.addGLEventListener(new BlurPbufferListener()); + gl.glGenTextures(1, tmp); + blur_pbuffer_tex = tmp[0]; + blur2_pbuffer = drawable.createOffscreenDrawable(caps, blur_w, blur_h); + blur2_pbuffer.addGLEventListener(new Blur2PbufferListener()); + gl.glGenTextures(1, tmp); + blur2_pbuffer_tex = tmp[0]; + caps.setOffscreenFloatingPointBuffers(false); + caps.setRedBits(8); + caps.setGreenBits(8); + caps.setBlueBits(8); + caps.setDepthBits(24); + tonemap_pbuffer = drawable.createOffscreenDrawable(caps, pbuffer_w, pbuffer_h); + tonemap_pbuffer.addGLEventListener(new TonemapPbufferListener()); + gl.glGenTextures(1, tmp); + tonemap_pbuffer_tex = tmp[0]; + + drawable.addKeyListener(new KeyAdapter() { + public void keyPressed(KeyEvent e) { + dispatchKey(e.getKeyCode(), e.getKeyChar()); + } + }); + + // Register the window with the ManipManager + ManipManager manager = ManipManager.getManipManager(); + manager.registerWindow(drawable); + + viewer = new ExaminerViewer(MouseButtonHelper.numMouseButtons()); + viewer.setNoAltKeyMode(true); + viewer.attach(drawable, new BSphereProvider() { + public BSphere getBoundingSphere() { + return new BSphere(new Vec3f(0, 0, 0), 1.0f); + } + }); + viewer.setZNear(zNear); + viewer.setZFar(zFar); + } + + public void display(GLDrawable drawable) { + // printThreadName("display for Listener"); + + if (initFailed) { + return; + } + + if (!firstRender) { + if (++frameCount == 30) { + timer.stop(); + System.err.println("Frames per second: " + (30.0f / timer.getDurationAsSeconds())); + timer.reset(); + timer.start(); + frameCount = 0; + } + } else { + firstRender = false; + timer.start(); + } + + time.update(); + + GL gl = drawable.getGL(); + GLU glu = drawable.getGLU(); + + // OK, ready to go + if (b[' ']) { + viewer.rotateAboutFocalPoint(new Rotf(Vec3f.Y_AXIS, (float) (time.deltaT() * animRate))); + } + + pbuffer.display(); + + // blur pass + if (b['g']) { + // shrink image + blur2Pass = BLUR2_SHRINK_PASS; + blur2_pbuffer.display(); + } + + // horizontal blur + blur_pbuffer.display(); + + // vertical blur + blur2Pass = BLUR2_VERT_BLUR_PASS; + blur2_pbuffer.display(); + + // tone mapping pass + tonemap_pbuffer.display(); + + // display in window + gl.glEnable(GL.GL_TEXTURE_RECTANGLE_NV); + gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB); + gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, tonemap_pbuffer_tex); + if (b['n']) { + gl.glTexParameteri( GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); + } else { + gl.glTexParameteri( GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); + } + drawQuadRect4(gl, win_w, win_h, pbuffer_w, pbuffer_h); + gl.glDisable(GL.GL_TEXTURE_RECTANGLE_NV); + } + + public void reshape(GLDrawable drawable, int x, int y, int width, int height) {} + + // Unused routines + public void displayChanged(GLDrawable drawable, boolean modeChanged, boolean deviceChanged) {} + + //---------------------------------------------------------------------- + // Internals only below this point + // + private void checkExtension(GL gl, String glExtensionName) { + if (!gl.isExtensionAvailable(glExtensionName)) { + unavailableExtension("Unable to initialize " + glExtensionName + " OpenGL extension"); + } + } + + private void unavailableExtension(String message) { + JOptionPane.showMessageDialog(null, message, "Unavailable extension", JOptionPane.ERROR_MESSAGE); + initFailed = true; + runExit(); + throw new GLException(message); + } + + private void dispatchKey(int keyCode, char k) { + if (k < 256) + b[k] = !b[k]; + + switch (keyCode) { + case KeyEvent.VK_ESCAPE: + case KeyEvent.VK_Q: + runExit(); + break; + + case KeyEvent.VK_EQUALS: + exposure *= 2; + break; + + case KeyEvent.VK_MINUS: + exposure *= 0.5f; + break; + + case KeyEvent.VK_PLUS: + exposure += 1.0f; + break; + + case KeyEvent.VK_UNDERSCORE: + exposure -= 1.0f; + break; + + case KeyEvent.VK_PERIOD: + blurAmount += 0.1f; + break; + + case KeyEvent.VK_COMMA: + blurAmount -= 0.1f; + break; + + case KeyEvent.VK_G: + if (b['g']) + blurAmount = 0.5f; + else + blurAmount = 0.0f; + break; + + case KeyEvent.VK_O: + modelno = (modelno + 1) % numModels; + break; + + case KeyEvent.VK_V: + doViewAll = true; + break; + } + } + + // create gamma lookup table texture + private int createGammaTexture(GL gl, int size, float gamma) { + int[] tmp = new int[1]; + gl.glGenTextures(1, tmp); + int texid = tmp[0]; + + int target = GL.GL_TEXTURE_1D; + gl.glBindTexture(target, texid); + gl.glTexParameteri(target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); + gl.glTexParameteri(target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); + gl.glTexParameteri(target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); + + gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); + + float[] img = new float [size]; + + for(int i=0; i<size; i++) { + float x = i / (float) size; + img[i] = (float) Math.pow(x, gamma); + } + + gl.glTexImage1D(target, 0, GL.GL_LUMINANCE, size, 0, GL.GL_LUMINANCE, GL.GL_FLOAT, img); + + return texid; + } + + // create vignette texture + // based on Debevec's pflare.c + int createVignetteTexture(GL gl, int xsiz, int ysiz, float r0, float r1) { + int[] tmp = new int[1]; + gl.glGenTextures(1, tmp); + int texid = tmp[0]; + + gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, texid); + gl.glTexParameteri(GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); + gl.glTexParameteri(GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); + gl.glTexParameteri(GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); + gl.glTexParameteri(GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); + + gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); + + float[] img = new float [xsiz*ysiz]; + + for (int y = 0; y < ysiz; y++) { + for (int x = 0; x < xsiz; x++) { + float radius = (float) Math.sqrt((x-xsiz/2)*(x-xsiz/2) + (y-ysiz/2)*(y-ysiz/2)); + if (radius > r0) { + if (radius < r1) { + float t = 1.0f - (radius-r0)/(r1-r0); + float a = t * 2 - 1; + float reduce = (float) ((0.25 * Math.PI + 0.5 * Math.asin(a) + 0.5 * a * Math.sqrt( 1 - a*a ))/(0.5 * Math.PI)); + img[y*xsiz + x] = reduce; + } else { + img[y*xsiz + x] = 0.0f; + } + } else { + img[y*xsiz + x] = 1.0f; + } + } + } + + gl.glTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, GL.GL_LUMINANCE, xsiz, ysiz, 0, GL.GL_LUMINANCE, GL.GL_FLOAT, img); + + return texid; + } + } + + //---------------------------------------------------------------------- + // Listeners for pbuffers + // + + class PbufferListener implements GLEventListener { + public void init(GLDrawable drawable) { + // printThreadName("init for PbufferListener"); + + // drawable.setGL(new DebugGL(drawable.getGL())); + + GL gl = drawable.getGL(); + GLU glu = drawable.getGLU(); + gl.glEnable(GL.GL_DEPTH_TEST); + + // FIXME: what about the ExaminerViewer? + setPerspectiveProjection(gl, glu, pbuffer_w, pbuffer_h); + + GLPbuffer pbuffer = (GLPbuffer) drawable; + int fpmode = pbuffer.getFloatingPointMode(); + int texmode = 0; + switch (fpmode) { + case GLPbuffer.NV_FLOAT: + System.err.println("Creating HILO cubemap"); + hdr_tex = hdr.createCubemapHILO(gl, true); + hdr_tex2 = hdr.createCubemapHILO(gl, false); + texmode = GL.GL_FLOAT_RGBA16_NV; + hilo = true; + break; + case GLPbuffer.APPLE_FLOAT: + System.err.println("Creating FLOAT16_APPLE cubemap"); + hdr_tex = hdr.createCubemap(gl, GL.GL_RGB_FLOAT16_APPLE); + texmode = GL.GL_RGBA_FLOAT16_APPLE; + break; + case GLPbuffer.ATI_FLOAT: + System.err.println("Creating FLOAT16_ATI cubemap"); + hdr_tex = hdr.createCubemap(gl, GL.GL_RGB_FLOAT16_ATI); + texmode = GL.GL_RGBA_FLOAT16_ATI; + break; + default: + throw new RuntimeException("Unexpected floating-point mode " + fpmode); + } + + if (useCg) { + initCg(gl); + } else { + initARBFP(gl, texmode); + } + initBlurCode(gl, blurWidth); + + pipeline.initFloatingPointTexture(gl, pbuffer_tex, pbuffer_w, pbuffer_h); + } + + public void display(GLDrawable drawable) { + // printThreadName("display for PbufferListener"); + + GL gl = drawable.getGL(); + GLU glu = drawable.getGLU(); + + renderScene(gl, glu); + + // Copy results back to texture + pipeline.copyToTexture(gl, pbuffer_tex, pbuffer_w, pbuffer_h); + } + + // Unused routines + public void reshape(GLDrawable drawable, int x, int y, int width, int height) {} + public void displayChanged(GLDrawable drawable, boolean modeChanged, boolean deviceChanged) {} + + //---------------------------------------------------------------------- + // Internals only below this point + // + + // render scene to float pbuffer + private void renderScene(GL gl, GLU glu) { + gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); + + if (doViewAll) { + viewer.viewAll(gl); + } + + if (b['w']) + gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE); + else + gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL); + + if (b['m']) { + gl.glEnable(GL.GL_MULTISAMPLE_ARB); + gl.glHint(GL.GL_MULTISAMPLE_FILTER_HINT_NV, GL.GL_NICEST); + } else { + gl.glDisable(GL.GL_MULTISAMPLE_ARB); + } + + if (!b['e']) { + // draw background + pipeline.enableFragmentProgram(gl, skybox_fprog); + gl.glDisable(GL.GL_DEPTH_TEST); + drawSkyBox(gl); + gl.glEnable(GL.GL_DEPTH_TEST); + } + + // draw object + pipeline.enableVertexProgram(gl, object_vprog); + pipeline.enableFragmentProgram(gl, object_fprog); + + gl.glMatrixMode(GL.GL_TEXTURE); + gl.glLoadIdentity(); + viewer.update(); + viewer.updateInverseRotation(gl); + + gl.glMatrixMode( GL.GL_MODELVIEW ); + gl.glLoadIdentity(); + CameraParameters params = viewer.getCameraParameters(); + Mat4f view = params.getModelviewMatrix(); + applyTransform(gl, view); + + pipeline.trackModelViewProjectionMatrix(gl, modelViewProj_param); + + // FIXME: add interation for object separately from camera? + // cgGLSetMatrixParameterfc(model_param, object.get_transform().get_value()); + pipeline.setMatrixParameterfc(gl, model_param, identityMatrix); + + // calculate eye position in cubemap space + Vec3f eyePos_eye = new Vec3f(); + Vec3f eyePos_model = new Vec3f(); + view.invertRigid(); + view.xformPt(eyePos_eye, eyePos_model); + pipeline.setVertexProgramParameter3f(gl, eyePos_param, eyePos_model.x(), eyePos_model.y(), eyePos_model.z()); + + gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB); + gl.glBindTexture(GL.GL_TEXTURE_CUBE_MAP_ARB, hdr_tex); + gl.glEnable(GL.GL_TEXTURE_CUBE_MAP_ARB); + + boolean linear = b['l']; + if (linear) { + gl.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR); + gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); + } else { + // glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST_MIPMAP_NEAREST); + gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); + gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); + } + + if (hilo) { + gl.glActiveTextureARB(GL.GL_TEXTURE1_ARB); + gl.glBindTexture(GL.GL_TEXTURE_CUBE_MAP_ARB, hdr_tex2); + gl.glEnable(GL.GL_TEXTURE_CUBE_MAP_ARB); + + if (linear) { + gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR); + gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); + } else { + // glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST_MIPMAP_NEAREST); + gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); + gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); + } + } + + gl.glEnable(GL.GL_CULL_FACE); + + switch(modelno) { + case 0: + glut.glutSolidTorus(gl, 0.25, 0.5, 40, 40); + break; + case 1: + glut.glutSolidSphere(glu, 0.75f, 40, 40); + break; + case 2: + glut.glutSolidTetrahedron(gl); + break; + case 3: + glut.glutSolidCube(gl, 1.0f); + break; + case 4: + // Something about the teapot's geometry causes bad artifacts + // glut.glutSolidTeapot(gl, 1.0f); + break; + case 5: + gl.glEnableClientState(GL.GL_VERTEX_ARRAY); + gl.glEnableClientState(GL.GL_NORMAL_ARRAY); + gl.glVertexPointer(3, GL.GL_FLOAT, 0, model.getVertices()); + gl.glNormalPointer(GL.GL_FLOAT, 0, model.getVertexNormals()); + int[] indices = model.getFaceIndices(); + gl.glDrawElements(GL.GL_TRIANGLES, indices.length, GL.GL_UNSIGNED_INT, indices); + gl.glDisableClientState(GL.GL_VERTEX_ARRAY); + gl.glDisableClientState(GL.GL_NORMAL_ARRAY); + break; + } + + gl.glDisable(GL.GL_CULL_FACE); + pipeline.disableVertexProgram(gl); + pipeline.disableFragmentProgram(gl); + gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL); + } + } + + class BlurPbufferListener implements GLEventListener { + public void init(GLDrawable drawable) { + // printThreadName("init for BlurPbufferListener"); + + // drawable.setGL(new DebugGL(drawable.getGL())); + + GL gl = drawable.getGL(); + + // FIXME: what about the ExaminerViewer? + setOrthoProjection(gl, blur_w, blur_h); + + pipeline.initFloatingPointTexture(gl, blur_pbuffer_tex, blur_w, blur_h); + } + + public void display(GLDrawable drawable) { + // printThreadName("display for BlurPbufferListener"); + + GL gl = drawable.getGL(); + + // horizontal blur + gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, blurh_fprog); + gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB); + pipeline.bindTexture(gl, blur2_pbuffer_tex); + glowPass(gl); + + pipeline.copyToTexture(gl, blur_pbuffer_tex, blur_w, blur_h); + } + + // Unused routines + public void reshape(GLDrawable drawable, int x, int y, int width, int height) {} + public void displayChanged(GLDrawable drawable, boolean modeChanged, boolean deviceChanged) {} + } + + class Blur2PbufferListener implements GLEventListener { + public void init(GLDrawable drawable) { + // printThreadName("init for Blur2PbufferListener"); + + // drawable.setGL(new DebugGL(drawable.getGL())); + + GL gl = drawable.getGL(); + // FIXME: what about the ExaminerViewer? + setOrthoProjection(gl, blur_w, blur_h); + + pipeline.initFloatingPointTexture(gl, blur2_pbuffer_tex, blur_w, blur_h); + } + + public void display(GLDrawable drawable) { + // printThreadName("display for Blur2PbufferListener"); + + GL gl = drawable.getGL(); + + if (blur2Pass == BLUR2_SHRINK_PASS) { + gl.glClear(GL.GL_COLOR_BUFFER_BIT); + + pipeline.enableFragmentProgram(gl, shrink_fprog); + setOrthoProjection(gl, blur_w, blur_h); + gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB); + gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, pbuffer_tex); + drawQuadRect2(gl, blur_w, blur_h, pbuffer_w, pbuffer_h); + pipeline.disableFragmentProgram(gl); + + } else if (blur2Pass == BLUR2_VERT_BLUR_PASS) { + + // vertical blur + gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, blurv_fprog); + gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB); + pipeline.bindTexture(gl, blur_pbuffer_tex); + glowPass(gl); + + } else { + throw new RuntimeException("Illegal value of blur2Pass: " + blur2Pass); + } + + pipeline.copyToTexture(gl, blur2_pbuffer_tex, blur_w, blur_h); + } + + // Unused routines + public void reshape(GLDrawable drawable, int x, int y, int width, int height) {} + public void displayChanged(GLDrawable drawable, boolean modeChanged, boolean deviceChanged) {} + } + + class TonemapPbufferListener implements GLEventListener { + public void init(GLDrawable drawable) { + GL gl = drawable.getGL(); + + setOrthoProjection(gl, pbuffer_w, pbuffer_h); + + pipeline.initTexture(gl, tonemap_pbuffer_tex, pbuffer_w, pbuffer_h); + } + + public void display(GLDrawable drawable) { + GL gl = drawable.getGL(); + + toneMappingPass(gl); + + pipeline.copyToTexture(gl, tonemap_pbuffer_tex, pbuffer_w, pbuffer_h); + } + + // Unused routines + public void reshape(GLDrawable drawable, int x, int y, int width, int height) {} + public void displayChanged(GLDrawable drawable, boolean modeChanged, boolean deviceChanged) {} + } + + //---------------------------------------------------------------------- + // Rendering routines + // + + private void setOrthoProjection(GL gl, int w, int h) { + gl.glMatrixMode(GL.GL_PROJECTION); + gl.glLoadIdentity(); + gl.glOrtho(0, w, 0, h, -1.0, 1.0); + gl.glMatrixMode(GL.GL_TEXTURE); + gl.glLoadIdentity(); + gl.glMatrixMode(GL.GL_MODELVIEW); + gl.glLoadIdentity(); + gl.glViewport(0, 0, w, h); + } + + private void setPerspectiveProjection(GL gl, GLU glu, int w, int h) { + // FIXME: what about ExaminerViewer? + gl.glMatrixMode(GL.GL_PROJECTION); + gl.glLoadIdentity(); + glu.gluPerspective(60.0, (float) w / (float) h, 0.1, 10.0); + gl.glMatrixMode(GL.GL_MODELVIEW); + gl.glLoadIdentity(); + gl.glViewport(0, 0, w, h); + } + + // blur floating point image + private void glowPass(GL gl) { + gl.glDisable(GL.GL_DEPTH_TEST); + gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB); + + setOrthoProjection(gl, blur_w, blur_h); + drawQuadRect(gl, blur_w, blur_h); + + gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB); + } + + private void drawQuadRect(GL gl, int w, int h) { + gl.glBegin(GL.GL_QUADS); + gl.glTexCoord2f(0, h); gl.glMultiTexCoord2fARB(GL.GL_TEXTURE1_ARB, 0, h / blur_scale); gl.glVertex3f(0, h, 0); + gl.glTexCoord2f(w, h); gl.glMultiTexCoord2fARB(GL.GL_TEXTURE1_ARB, w / blur_scale, h / blur_scale); gl.glVertex3f(w, h, 0); + gl.glTexCoord2f(w, 0); gl.glMultiTexCoord2fARB(GL.GL_TEXTURE1_ARB, w / blur_scale, 0); gl.glVertex3f(w, 0, 0); + gl.glTexCoord2f(0, 0); gl.glMultiTexCoord2fARB(GL.GL_TEXTURE1_ARB, 0, 0); gl.glVertex3f(0, 0, 0); + gl.glEnd(); + } + + private void drawQuadRect2(GL gl, int w, int h, int tw, int th) { + gl.glBegin(GL.GL_QUADS); + gl.glTexCoord2f(0, th); gl.glVertex3f(0, h, 0); + gl.glTexCoord2f(tw, th); gl.glVertex3f(w, h, 0); + gl.glTexCoord2f(tw, 0); gl.glVertex3f(w, 0, 0); + gl.glTexCoord2f(0, 0); gl.glVertex3f(0, 0, 0); + gl.glEnd(); + } + + private void drawQuadRect4(GL gl, int w, int h, int tw, int th) { + float offset = 0.5f; + gl.glBegin(GL.GL_QUADS); + gl.glTexCoord2f(offset, th - offset); gl.glVertex3f(0, h, 0); + gl.glTexCoord2f(tw - offset, th - offset); gl.glVertex3f(w, h, 0); + gl.glTexCoord2f(tw - offset, offset); gl.glVertex3f(w, 0, 0); + gl.glTexCoord2f(offset, offset); gl.glVertex3f(0, 0, 0); + gl.glEnd(); + } + + private void disableTexGen(GL gl) { + gl.glDisable(GL.GL_TEXTURE_GEN_S); + gl.glDisable(GL.GL_TEXTURE_GEN_T); + gl.glDisable(GL.GL_TEXTURE_GEN_R); + } + + private void enableTexGen(GL gl) { + gl.glEnable(GL.GL_TEXTURE_GEN_S); + gl.glEnable(GL.GL_TEXTURE_GEN_T); + gl.glEnable(GL.GL_TEXTURE_GEN_R); + } + + // draw cubemap background + private void drawSkyBox(GL gl) { + gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB); + gl.glBindTexture(GL.GL_TEXTURE_CUBE_MAP_ARB, hdr_tex); + gl.glEnable(GL.GL_TEXTURE_CUBE_MAP_ARB); + + if (hilo) { + gl.glActiveTextureARB(GL.GL_TEXTURE1_ARB); + gl.glBindTexture(GL.GL_TEXTURE_CUBE_MAP_ARB, hdr_tex2); + gl.glEnable(GL.GL_TEXTURE_CUBE_MAP_ARB); + } + + // initialize object linear texgen + gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB); + gl.glMatrixMode(GL.GL_MODELVIEW); + gl.glPushMatrix(); + gl.glLoadIdentity(); + float[] s_plane = { 1.0f, 0.0f, 0.0f, 0.0f }; + float[] t_plane = { 0.0f, 1.0f, 0.0f, 0.0f }; + float[] r_plane = { 0.0f, 0.0f, 1.0f, 0.0f }; + gl.glTexGenfv(GL.GL_S, GL.GL_OBJECT_PLANE, s_plane); + gl.glTexGenfv(GL.GL_T, GL.GL_OBJECT_PLANE, t_plane); + gl.glTexGenfv(GL.GL_R, GL.GL_OBJECT_PLANE, r_plane); + gl.glPopMatrix(); + gl.glTexGeni(GL.GL_S, GL.GL_TEXTURE_GEN_MODE, GL.GL_OBJECT_LINEAR); + gl.glTexGeni(GL.GL_T, GL.GL_TEXTURE_GEN_MODE, GL.GL_OBJECT_LINEAR); + gl.glTexGeni(GL.GL_R, GL.GL_TEXTURE_GEN_MODE, GL.GL_OBJECT_LINEAR); + enableTexGen(gl); + + gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE); + + gl.glMatrixMode(GL.GL_TEXTURE); + gl.glPushMatrix(); + gl.glLoadIdentity(); + viewer.updateInverseRotation(gl); + + gl.glMatrixMode(GL.GL_MODELVIEW); + gl.glPushMatrix(); + gl.glLoadIdentity(); + gl.glScalef(10.0f, 10.0f, 10.0f); + glut.glutSolidCube(gl, 1.0f); + gl.glPopMatrix(); + + gl.glDisable(GL.GL_TEXTURE_CUBE_MAP_ARB); + + gl.glMatrixMode(GL.GL_TEXTURE); + gl.glPopMatrix(); + gl.glMatrixMode(GL.GL_MODELVIEW); + + disableTexGen(gl); + } + + // read from float texture, apply tone mapping, render to regular 8/8/8 display + private void toneMappingPass(GL gl) { + gl.glFinish(); + + gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB); + gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, pbuffer_tex); + + gl.glActiveTextureARB(GL.GL_TEXTURE1_ARB); + if (blur2_pbuffer != null) { + gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, blur2_pbuffer_tex); + } + + gl.glActiveTextureARB(GL.GL_TEXTURE2_ARB); + gl.glBindTexture(GL.GL_TEXTURE_1D, gamma_tex); + + gl.glActiveTextureARB(GL.GL_TEXTURE3_ARB); + pipeline.bindTexture(gl, vignette_tex); + + pipeline.enableFragmentProgram(gl, tonemap_fprog); + + pipeline.setFragmentProgramParameter1f(gl, blurAmount_param, blurAmount); + pipeline.setFragmentProgramParameter4f(gl, windowSize_param, 2.0f/win_w, 2.0f/win_h, -1.0f, -1.0f); + pipeline.setFragmentProgramParameter1f(gl, exposure_param, exposure); + + drawQuadRect(gl, win_w, win_h); + + pipeline.disableFragmentProgram(gl); + } + + //---------------------------------------------------------------------- + // Cg and blur code initialization + // + + private String shaderRoot = "demos/hdr/shaders/"; + private void initCg(GL gl) { + pipeline = new CgPipeline(); + pipeline.init(); + + try { + tonemap_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/tonemap.cg"); + blurAmount_param = pipeline.getNamedParameter(tonemap_fprog, "blurAmount"); + windowSize_param = pipeline.getNamedParameter(tonemap_fprog, "windowSize"); + exposure_param = pipeline.getNamedParameter(tonemap_fprog, "exposure"); + + if (hilo) { + skybox_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/skybox_hilo.cg"); + object_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/object_hilo.cg"); + } else { + skybox_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/skybox.cg"); + object_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/object.cg"); + } + + shrink_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/shrink.cg"); + + object_vprog = pipeline.loadVertexProgram(gl, shaderRoot + "cg/object_vp.cg"); + modelViewProj_param = pipeline.getNamedParameter(object_vprog, "modelViewProj"); + model_param = pipeline.getNamedParameter(object_vprog, "model"); + eyePos_param = pipeline.getNamedParameter(object_vprog, "eyePos"); + } catch (IOException e) { + throw new RuntimeException("Error loading shaders", e); + } + } + + private void initARBFP(GL gl, int texmode) { + pipeline = new ARBFPPipeline(texmode); + pipeline.init(); + + try { + // NOTE that the program parameters are hard-coded; in the + // future we can use GLSL but for this demo we desire good + // backward compatibility + tonemap_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/tonemap.arbfp1"); + blurAmount_param = 1; + windowSize_param = -1; // Not used + exposure_param = 2; + + if (hilo) { + skybox_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/skybox_hilo.arbfp1"); + object_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/object_hilo.arbfp1"); + } else { + skybox_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/skybox.arbfp1"); + object_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/object.arbfp1"); + } + + shrink_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/shrink.arbfp1"); + + object_vprog = pipeline.loadVertexProgram(gl, shaderRoot + "arbfp1/object_vp.arbvp1"); + modelViewProj_param = 0; + model_param = 4; + eyePos_param = 8; + } catch (IOException e) { + throw new RuntimeException("Error loading shaders", e); + } + } + + private void initBlurCode(GL gl, int blurWidth) { + // generate blur code + String blurCode = generateBlurCodeFP2(blurWidth, false); + blurh_fprog = loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, blurCode); + // printf("%s\n", blurCode); + + blurCode = generateBlurCodeFP2(blurWidth, true); + blurv_fprog = loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, blurCode); + // printf("%s\n", blurCode); + } + + private int loadProgram(GL gl, int target, String code) { + int prog_id; + int[] tmp = new int[1]; + gl.glGenProgramsARB(1, tmp); + prog_id = tmp[0]; + gl.glBindProgramARB(target, prog_id); + int size = code.length(); + gl.glProgramStringARB(target, GL.GL_PROGRAM_FORMAT_ASCII_ARB, code.length(), code); + int[] errPos = new int[1]; + gl.glGetIntegerv(GL.GL_PROGRAM_ERROR_POSITION_ARB, errPos); + if (errPos[0] >= 0) { + String kind = "Program"; + if (target == GL.GL_VERTEX_PROGRAM_ARB) { + kind = "Vertex program"; + } else if (target == GL.GL_FRAGMENT_PROGRAM_ARB) { + kind = "Fragment program"; + } + System.out.println(kind + " failed to load:"); + String errMsg = gl.glGetString(GL.GL_PROGRAM_ERROR_STRING_ARB); + if (errMsg == null) { + System.out.println("[No error message available]"); + } else { + System.out.println("Error message: \"" + errMsg + "\""); + } + System.out.println("Error occurred at position " + errPos[0] + " in program:"); + int endPos = errPos[0]; + while (endPos < code.length() && code.charAt(endPos) != '\n') { + ++endPos; + } + System.out.println(code.substring(errPos[0], endPos)); + throw new GLException("Error loading " + kind); + } else { + if (target == GL.GL_FRAGMENT_PROGRAM_ARB) { + int[] isNative = new int[1]; + gl.glGetProgramivARB(GL.GL_FRAGMENT_PROGRAM_ARB, + GL.GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB, + isNative); + if (isNative[0] != 1) { + System.out.println("WARNING: fragment program is over native resource limits"); + Thread.dumpStack(); + } + } + } + return prog_id; + } + + // 1d Gaussian distribution + private float gaussian(float x, float s) { + return (float) (Math.exp(-x*x/(2*s*s)) / (s*Math.sqrt(2*Math.PI))); + } + + private void dumpWeights(int n) { + float s = n / 3.0f; + float sum = 0.0f; + System.err.println("gaussian weights, s = " + s + ", n = " + n); + for(int x=-n; x<=n; x++) { + float w = gaussian(x, s); + sum += w; + System.err.println("" + x + ": " + w); + } + System.err.println("sum = " + sum); + } + + // optimized version + // pairs texture lookups, uses half precision + private String generateBlurCodeFP2(int n, boolean vertical) { + StringBuffer buf = new StringBuffer(); + + float sum = 0; + for(int i=-n; i<=n; i++) { + float weight = gaussian(3.0f*i / (float) n, 1.0f); + sum += weight; + } + System.err.println("sum = " + sum); + + buf.append("!!ARBfp1.0\n"); + buf.append("TEMP H0, H1, H2;\n"); + for(int i=-n; i<=n; i+=2) { + float weight = gaussian(3.0f*i / (float) n, 1.0f) / sum; + float weight2 = gaussian(3.0f*(i+1) / (float) n, 1.0f) / sum; + + int x_offset, y_offset, x_offset2, y_offset2; + if (vertical) { + x_offset = 0; x_offset2 = 0; + y_offset = i; y_offset2 = i+1; + } else { + x_offset = i; x_offset2 = i+1; + y_offset = 0; y_offset2 = 0; + } + + // calculate texcoords + buf.append("ADD H0, fragment.texcoord[0], {" + x_offset + ", " + y_offset + "};\n"); + if (i+1 <= n) { + buf.append("ADD H1, fragment.texcoord[0], {" + x_offset2 + ", " + y_offset2 + "};\n"); + } + // do texture lookups + buf.append("TEX H0, H0, texture[0], RECT;\n"); + if (i+1 <= n) { + buf.append("TEX H1, H1, texture[0], RECT;\n"); + } + + // accumulate results + if (i==-n) { + // first sample + buf.append("MUL H2, H0, {" + weight + "}.x;\n"); + buf.append("MAD H2, H1, {" + weight2 + "}.x, H2;\n"); + } else { + buf.append("MAD H2, H0, {" + weight + "}.x, H2;\n"); + if (i+1 <= n) { + buf.append("MAD H2, H1, {" + weight2 + "}.x, H2;\n"); + } + } + } + + buf.append( + "MOV result.color, H2;\n" + + "END\n" + ); + + return buf.toString(); + } + + private void applyTransform(GL gl, Mat4f mat) { + float[] data = new float[16]; + mat.getColumnMajorData(data); + gl.glMultMatrixf(data); + } + + private void usage() { + System.err.println("usage: java demos.hdr.HDR [-cg] image.hdr pbuffer_w pbuffer_h window_scale blur_width blur_decimate [obj file]"); + System.exit(1); + } + + private void printThreadName(String where) { + System.err.println("In " + where + ": current thread = " + Thread.currentThread().getName()); + } + + private void runExit() { + // Note: calling System.exit() synchronously inside the draw, + // reshape or init callbacks can lead to deadlocks on certain + // platforms (in particular, X11) because the JAWT's locking + // routines cause a global AWT lock to be grabbed. Run the + // exit routine in another thread. + new Thread(new Runnable() { + public void run() { + animator.stop(); + System.exit(0); + } + }).start(); + } +} diff --git a/src/demos/hdr/HDRTexture.java b/src/demos/hdr/HDRTexture.java new file mode 100755 index 0000000..fcaac11 --- /dev/null +++ b/src/demos/hdr/HDRTexture.java @@ -0,0 +1,494 @@ +package demos.hdr; + +import java.io.*; + +import net.java.games.jogl.*; + +public class HDRTexture { + private RGBE.Header header; + private byte[] m_data; + private float[] m_floatdata; + private int m_width, m_height; + private float m_max_r, m_max_g, m_max_b; + private float m_min_r, m_min_g, m_min_b; + private float m_max; + private int m_target; + + public HDRTexture(String filename) throws IOException { + this(new FileInputStream(filename)); + } + + public HDRTexture(InputStream in) throws IOException { + DataInputStream datain = new DataInputStream(new BufferedInputStream(in)); + header = RGBE.readHeader(datain); + m_width = header.getWidth(); + m_height = header.getHeight(); + m_data = new byte[m_width * m_height * 4]; + RGBE.readPixelsRawRLE(datain, m_data, 0, m_width, m_height); + System.err.println("Loaded HDR image " + m_width + " x " + m_height); + } + + public byte[] getData() { return m_data; } + public int getPixelIndex(int x, int y) { + return ((m_width * (m_height - 1 - y)) + x) * 4; + } + public float[] getFloatData() { return m_floatdata; } + public int getPixelFloatIndex(int x, int y) { + return ((m_width * (m_height - 1 - y)) + x) * 3; + } + + public void analyze() { + m_max_r = m_max_g = m_max_b = 0.0f; + m_min_r = m_min_g = m_min_b = 1e10f; + int mine = 255; + int maxe = 0; + + int ptr = 0; + float[] rgb = new float[3]; + for(int i=0; i<m_width*m_height; i++) { + int e = m_data[ptr+3] & 0xFF; + if (e < mine) mine = e; + if (e > maxe) maxe = e; + + RGBE.rgbe2float(rgb, m_data, ptr); + float r = rgb[0]; + float g = rgb[1]; + float b = rgb[2]; + if (r > m_max_r) m_max_r = r; + if (g > m_max_g) m_max_g = g; + if (b > m_max_b) m_max_b = b; + if (r < m_min_r) m_min_r = r; + if (g < m_min_g) m_min_g = g; + if (b < m_min_b) m_min_b = b; + ptr += 4; + } + System.err.println("max intensity: " + m_max_r + " " + m_max_g + " " + m_max_b); + System.err.println("min intensity: " + m_min_r + " " + m_min_g + " " + m_min_b); + System.err.println("max e: " + maxe + " = " + RGBE.ldexp(1.0, maxe-128)); + System.err.println("min e: " + mine + " = " + RGBE.ldexp(1.0, mine-128)); + + m_max = m_max_r; + if (m_max_g > m_max) m_max = m_max_g; + if (m_max_b > m_max) m_max = m_max_b; + System.err.println("max: " + m_max); + } + + /** Converts from RGBE to floating-point RGB data. */ + public void convert() { + m_floatdata = new float [m_width*m_height*3]; + + int src = 0; + int dest = 0; + float[] rgb = new float[3]; + for(int i=0; i<m_width*m_height; i++) { + RGBE.rgbe2float(rgb, m_data, src); + + m_floatdata[dest++] = remap(rgb[0], m_max); + m_floatdata[dest++] = remap(rgb[1], m_max); + m_floatdata[dest++] = remap(rgb[2], m_max); + + src += 4; + } + } + + public int create2DTextureRGBE(GL gl, int targetTextureType) { + m_target = targetTextureType; + int[] tmp = new int[1]; + gl.glGenTextures(1, tmp); + int texid = tmp[1]; + + gl.glBindTexture(m_target, texid); + + gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); + + gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); + gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE); + gl.glTexImage2D(m_target, 0, GL.GL_RGBA, m_width, m_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, m_data); + + return texid; + } + + public int create2DTextureHILO(GL gl, int targetTextureType, boolean rg) { + m_target = targetTextureType; + int[] tmp = new int[1]; + gl.glGenTextures(1, tmp); + int texid = tmp[0]; + + gl.glBindTexture(m_target, texid); + + gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); + + gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); + gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE); + + float[] img = new float [m_width * m_height * 2]; + int src = 0; + int dest = 0; + for (int j=0; j<m_height; j++) { + for (int i=0; i<m_width; i++) { + if (rg) { + img[dest++] = m_floatdata[src + 0]; + img[dest++] = m_floatdata[src + 1]; + } else { + img[dest++] = m_floatdata[src + 2]; + img[dest++] = 0; + } + src+=3; + } + } + + gl.glTexImage2D(m_target, 0, GL.GL_HILO16_NV, m_width, m_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, img); + + return texid; + } + + // create a cubemap texture from a 2D image in cross format (thanks to Jonathon McGee) + public int createCubemapRGBE(GL gl) { + // cross is 3 faces wide, 4 faces high + int face_width = m_width / 3; + int face_height = m_height / 4; + byte[] face = new byte[face_width * face_height * 4]; + + m_target = GL.GL_TEXTURE_CUBE_MAP_ARB; + int[] tmp = new int[1]; + gl.glGenTextures(1, tmp); + int texid = tmp[0]; + gl.glBindTexture(m_target, texid); + + gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); + gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE); + + // gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); + // gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); + + // extract 6 faces + + // positive Y + int ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelIndex(2 * face_width - (i + 1), 3 * face_height + j); + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, face); + + // positive X + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelIndex(i, m_height - (face_height + j + 1)); + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, face); + + // negative Z + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelIndex(face_width + i, m_height - (face_height + j + 1)); + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, face); + + // negative X + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelIndex(2 * face_width + i, m_height - (face_height + j + 1)); + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, face); + + // negative Y + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelIndex(2 * face_width - (i + 1), face_height + j); + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, face); + + // positive Z + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelIndex(2 * face_width - (i + 1), j); + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + face[ptr++] = m_data[src++]; + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, face); + + return texid; + } + + public int createCubemapHILO(GL gl, boolean rg) { + // cross is 3 faces wide, 4 faces high + int face_width = m_width / 3; + int face_height = m_height / 4; + float[] face = new float [face_width * face_height * 2]; + + m_target = GL.GL_TEXTURE_CUBE_MAP_ARB; + int[] tmp = new int[1]; + gl.glGenTextures(1, tmp); + int texid = tmp[0]; + gl.glBindTexture(m_target, texid); + + gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); + gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE); + + gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); + + // extract 6 faces + + // positive Y + int ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelFloatIndex(2 * face_width - (i + 1), 3 * face_height + j); + if (rg) { + face[ptr++] = m_floatdata[src + 0]; + face[ptr++] = m_floatdata[src + 1]; + } else { + face[ptr++] = m_floatdata[src + 2]; + face[ptr++] = 0; + } + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, face); + + // positive X + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelFloatIndex(i, m_height - (face_height + j + 1)); + if (rg) { + face[ptr++] = m_floatdata[src + 0]; + face[ptr++] = m_floatdata[src + 1]; + } else { + face[ptr++] = m_floatdata[src + 2]; + face[ptr++] = 0; + } + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, face); + + // negative Z + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelFloatIndex(face_width + i, m_height - (face_height + j + 1)); + if (rg) { + face[ptr++] = m_floatdata[src + 0]; + face[ptr++] = m_floatdata[src + 1]; + } else { + face[ptr++] = m_floatdata[src + 2]; + face[ptr++] = 0; + } + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, face); + + // negative X + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelFloatIndex(2 * face_width + i, m_height - (face_height + j + 1)); + if (rg) { + face[ptr++] = m_floatdata[src + 0]; + face[ptr++] = m_floatdata[src + 1]; + } else { + face[ptr++] = m_floatdata[src + 2]; + face[ptr++] = 0; + } + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, face); + + // negative Y + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelFloatIndex(2 * face_width - (i + 1), face_height + j); + if (rg) { + face[ptr++] = m_floatdata[src + 0]; + face[ptr++] = m_floatdata[src + 1]; + } else { + face[ptr++] = m_floatdata[src + 2]; + face[ptr++] = 0; + } + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, face); + + // positive Z + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelFloatIndex(2 * face_width - (i + 1), j); + if (rg) { + face[ptr++] = m_floatdata[src + 0]; + face[ptr++] = m_floatdata[src + 1]; + } else { + face[ptr++] = m_floatdata[src + 2]; + face[ptr++] = 0; + } + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, face); + + return texid; + } + + public int createCubemap(GL gl, int format) { + // cross is 3 faces wide, 4 faces high + int face_width = m_width / 3; + int face_height = m_height / 4; + float[] face = new float [face_width * face_height * 3]; + + m_target = GL.GL_TEXTURE_CUBE_MAP_ARB; + int[] tmp = new int[1]; + gl.glGenTextures(1, tmp); + int texid = tmp[0]; + gl.glBindTexture(m_target, texid); + + gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); + gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE); + + gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE); + gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE); + + // extract 6 faces + + // positive Y + int ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelFloatIndex(2 * face_width - (i + 1), 3 * face_height + j); + face[ptr++] = m_floatdata[src + 0]; + face[ptr++] = m_floatdata[src + 1]; + face[ptr++] = m_floatdata[src + 2]; + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, face); + + // positive X + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelFloatIndex(i, m_height - (face_height + j + 1)); + face[ptr++] = m_floatdata[src + 0]; + face[ptr++] = m_floatdata[src + 1]; + face[ptr++] = m_floatdata[src + 2]; + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, face); + + // negative Z + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelFloatIndex(face_width + i, m_height - (face_height + j + 1)); + face[ptr++] = m_floatdata[src + 0]; + face[ptr++] = m_floatdata[src + 1]; + face[ptr++] = m_floatdata[src + 2]; + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, face); + + // negative X + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelFloatIndex(2 * face_width + i, m_height - (face_height + j + 1)); + face[ptr++] = m_floatdata[src + 0]; + face[ptr++] = m_floatdata[src + 1]; + face[ptr++] = m_floatdata[src + 2]; + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, face); + + // negative Y + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelFloatIndex(2 * face_width - (i + 1), face_height + j); + face[ptr++] = m_floatdata[src + 0]; + face[ptr++] = m_floatdata[src + 1]; + face[ptr++] = m_floatdata[src + 2]; + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, face); + + // positive Z + ptr = 0; + for (int j=0; j<face_height; j++) { + for (int i=0; i<face_width; i++) { + int src = getPixelFloatIndex(2 * face_width - (i + 1), j); + face[ptr++] = m_floatdata[src + 0]; + face[ptr++] = m_floatdata[src + 1]; + face[ptr++] = m_floatdata[src + 2]; + } + } + gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, face); + + return texid; + } + + //---------------------------------------------------------------------- + // Internals only below this point + // + + private static float remap(float x, float max) { + if (x > max) x = max; + return (float) Math.sqrt(x / max); + } + + public static void main(String[] args) { + for (int i = 0; i < args.length; i++) { + try { + HDRTexture tex = new HDRTexture(args[i]); + tex.analyze(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/demos/hdr/Pipeline.java b/src/demos/hdr/Pipeline.java new file mode 100755 index 0000000..822c3fb --- /dev/null +++ b/src/demos/hdr/Pipeline.java @@ -0,0 +1,31 @@ +package demos.hdr; + +import java.io.*; +import java.util.*; + +import net.java.games.jogl.*; +import net.java.games.cg.*; +import demos.util.*; + +public interface Pipeline { + public void init(); + public void initFloatingPointTexture (GL gl, int textureObject, int w, int h); + public void initTexture (GL gl, int textureObject, int w, int h); + public void copyToTexture (GL gl, int textureObject, int w, int h); + public void bindTexture (GL gl, int textureObject); + public int loadVertexProgram (GL gl, String filename) throws IOException; + public int loadFragmentProgram (GL gl, String filename) throws IOException; + public void enableVertexProgram (GL gl, int program); + public void enableFragmentProgram (GL gl, int program); + public void disableVertexProgram (GL gl); + public void disableFragmentProgram (GL gl); + public int getNamedParameter (int program, String name); + public void setVertexProgramParameter1f (GL gl, int param, float val); + public void setVertexProgramParameter3f (GL gl, int param, float x, float y, float z); + public void setVertexProgramParameter4f (GL gl, int param, float x, float y, float z, float w); + public void setFragmentProgramParameter1f (GL gl, int param, float val); + public void setFragmentProgramParameter3f (GL gl, int param, float x, float y, float z); + public void setFragmentProgramParameter4f (GL gl, int param, float x, float y, float z, float w); + public void trackModelViewProjectionMatrix(GL gl, int param); + public void setMatrixParameterfc (GL gl, int param, float[] matrix); +} diff --git a/src/demos/hdr/RGBE.java b/src/demos/hdr/RGBE.java new file mode 100755 index 0000000..9c83ae6 --- /dev/null +++ b/src/demos/hdr/RGBE.java @@ -0,0 +1,452 @@ +package demos.hdr; + +import java.io.*; +import java.util.regex.*; + +/** This file contains code to read and write four byte rgbe file format + developed by Greg Ward. It handles the conversions between rgbe and + pixels consisting of floats. The data is assumed to be an array of floats. + By default there are three floats per pixel in the order red, green, blue. + (RGBE_DATA_??? values control this.) Only the mimimal header reading and + writing is implemented. Each routine does error checking and will return + a status value as defined below. This code is intended as a skeleton so + feel free to modify it to suit your needs. <P> + + Ported to Java and restructured by Kenneth Russell. <BR> + posted to http://www.graphics.cornell.edu/~bjw/ <BR> + written by Bruce Walter ([email protected]) 5/26/95 <BR> + based on code written by Greg Ward <BR> +*/ + +public class RGBE { + // Flags indicating which fields in a Header are valid + private static final int VALID_PROGRAMTYPE = 0x01; + private static final int VALID_GAMMA = 0x02; + private static final int VALID_EXPOSURE = 0x04; + + private static final String gammaString = "GAMMA="; + private static final String exposureString = "EXPOSURE="; + + private static final Pattern widthHeightPattern = Pattern.compile("-Y (\\d+) \\+X (\\d+)"); + + public static class Header { + // Indicates which fields are valid + private int valid; + + // Listed at beginning of file to identify it after "#?". + // Defaults to "RGBE" + private String programType; + + // Image has already been gamma corrected with given gamma. + // Defaults to 1.0 (no correction) + private float gamma; + + // A value of 1.0 in an image corresponds to <exposure> + // watts/steradian/m^2. Defaults to 1.0. + private float exposure; + + // Width and height of image + private int width; + private int height; + + private Header(int valid, + String programType, + float gamma, + float exposure, + int width, + int height) { + this.valid = valid; + this.programType = programType; + this.gamma = gamma; + this.exposure = exposure; + this.width = width; + this.height = height; + } + + public boolean isProgramTypeValid() { return ((valid & VALID_PROGRAMTYPE) != 0); } + public boolean isGammaValid() { return ((valid & VALID_GAMMA) != 0); } + public boolean isExposureValid() { return ((valid & VALID_EXPOSURE) != 0); } + + public String getProgramType() { return programType; } + public float getGamma() { return gamma; } + public float getExposure() { return exposure; } + public int getWidth() { return width; } + public int getHeight() { return height; } + + public String toString() { + StringBuffer buf = new StringBuffer(); + if (isProgramTypeValid()) { + buf.append(" Program type: "); + buf.append(getProgramType()); + } + buf.append(" Gamma"); + if (isGammaValid()) { + buf.append(" [valid]"); + } + buf.append(": "); + buf.append(getGamma()); + buf.append(" Exposure"); + if (isExposureValid()) { + buf.append(" [valid]"); + } + buf.append(": "); + buf.append(getExposure()); + buf.append(" Width: "); + buf.append(getWidth()); + buf.append(" Height: "); + buf.append(getHeight()); + return buf.toString(); + } + } + + public static Header readHeader(DataInputStream in) throws IOException { + int valid = 0; + String programType = null; + float gamma = 1.0f; + float exposure = 1.0f; + int width = 0; + int height = 0; + + String buf = in.readLine(); + if (buf == null) { + throw new IOException("Unexpected EOF reading magic token"); + } + if (buf.charAt(0) == '#' && buf.charAt(1) == '?') { + valid |= VALID_PROGRAMTYPE; + programType = buf.substring(2); + buf = in.readLine(); + if (buf == null) { + throw new IOException("Unexpected EOF reading line after magic token"); + } + } + + boolean foundFormat = false; + boolean done = false; + while (!done) { + if (buf.equals("FORMAT=32-bit_rle_rgbe")) { + foundFormat = true; + } else if (buf.startsWith(gammaString)) { + valid |= VALID_GAMMA; + gamma = Float.parseFloat(buf.substring(gammaString.length())); + } else if (buf.startsWith(exposureString)) { + valid |= VALID_EXPOSURE; + exposure = Float.parseFloat(buf.substring(exposureString.length())); + } else { + Matcher m = widthHeightPattern.matcher(buf); + if (m.matches()) { + width = Integer.parseInt(m.group(2)); + height = Integer.parseInt(m.group(1)); + done = true; + } + } + + if (!done) { + buf = in.readLine(); + if (buf == null) { + throw new IOException("Unexpected EOF reading header"); + } + } + } + + if (!foundFormat) { + throw new IOException("No FORMAT specifier found"); + } + + return new Header(valid, programType, gamma, exposure, width, height); + } + + /** Simple read routine. Will not correctly handle run length encoding. */ + public static void readPixels(DataInputStream in, float[] data, int numpixels) throws IOException { + byte[] rgbe = new byte[4]; + float[] rgb = new float[3]; + int offset = 0; + + while(numpixels-- > 0) { + int numRead = in.read(rgbe); + if (numRead < 4) { + throw new IOException("Only able to read " + numRead + " out of expected " + rgbe.length + " bytes"); + } + rgbe2float(rgb, rgbe, 0); + data[offset++] = rgb[0]; + data[offset++] = rgb[1]; + data[offset++] = rgb[2]; + } + } + + public static void readPixelsRaw(DataInputStream in, byte[] data, int offset, int numpixels) throws IOException { + int numExpected = 4 * numpixels; + int numRead = in.read(data, offset, numExpected); + if (numRead < numExpected) + throw new IOException("Error reading raw pixels: got " + numRead + " bytes, expected " + numExpected); + } + + public static void readPixelsRawRLE(DataInputStream in, byte[] data, int offset, + int scanline_width, int num_scanlines) throws IOException { + byte[] rgbe = new byte[4]; + byte[] scanline_buffer = null; + int ptr, ptr_end; + int count; + byte[] buf = new byte[2]; + + if ((scanline_width < 8)||(scanline_width > 0x7fff)) { + /* run length encoding is not allowed so read flat*/ + readPixelsRaw(in, data, offset, scanline_width*num_scanlines); + } + + /* read in each successive scanline */ + while (num_scanlines > 0) { + if (in.read(rgbe) < rgbe.length) { + throw new IOException("Error reading bytes: expected " + rgbe.length); + } + + if ((rgbe[0] != 2)||(rgbe[1] != 2)||((rgbe[2] & 0x80) != 0)) { + /* this file is not run length encoded */ + data[offset++] = rgbe[0]; + data[offset++] = rgbe[1]; + data[offset++] = rgbe[2]; + data[offset++] = rgbe[3]; + readPixelsRaw(in, data, offset, scanline_width*num_scanlines-1); + } + + if ((((rgbe[2] & 0xFF)<<8) | (rgbe[3] & 0xFF)) != scanline_width) { + throw new IOException("Wrong scanline width " + + (((rgbe[2] & 0xFF)<<8) | (rgbe[3] & 0xFF)) + + ", expected " + scanline_width); + } + + if (scanline_buffer == null) { + scanline_buffer = new byte[4*scanline_width]; + } + + ptr = 0; + /* read each of the four channels for the scanline into the buffer */ + for (int i=0; i<4; i++) { + ptr_end = (i+1)*scanline_width; + while(ptr < ptr_end) { + if (in.read(buf) < buf.length) { + throw new IOException("Error reading 2-byte buffer"); + } + if ((buf[0] & 0xFF) > 128) { + /* a run of the same value */ + count = (buf[0] & 0xFF)-128; + if ((count == 0)||(count > ptr_end - ptr)) { + throw new IOException("Bad scanline data"); + } + while(count-- > 0) + scanline_buffer[ptr++] = buf[1]; + } + else { + /* a non-run */ + count = buf[0] & 0xFF; + if ((count == 0)||(count > ptr_end - ptr)) { + throw new IOException("Bad scanline data"); + } + scanline_buffer[ptr++] = buf[1]; + if (--count > 0) { + if (in.read(scanline_buffer, ptr, count) < count) { + throw new IOException("Error reading non-run data"); + } + ptr += count; + } + } + } + } + /* copy byte data to output */ + for(int i = 0; i < scanline_width; i++) { + data[offset++] = scanline_buffer[i]; + data[offset++] = scanline_buffer[i+scanline_width]; + data[offset++] = scanline_buffer[i+2*scanline_width]; + data[offset++] = scanline_buffer[i+3*scanline_width]; + } + num_scanlines--; + } + } + + /** Standard conversion from float pixels to rgbe pixels. */ + public static void float2rgbe(byte[] rgbe, float red, float green, float blue) { + float v; + int e; + + v = red; + if (green > v) v = green; + if (blue > v) v = blue; + if (v < 1e-32f) { + rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0; + } + else { + FracExp fe = frexp(v); + v = (float) (fe.getFraction() * 256.0 / v); + rgbe[0] = (byte) (red * v); + rgbe[1] = (byte) (green * v); + rgbe[2] = (byte) (blue * v); + rgbe[3] = (byte) (fe.getExponent() + 128); + } + } + + /** Standard conversion from rgbe to float pixels. Note: Ward uses + ldexp(col+0.5,exp-(128+8)). However we wanted pixels in the + range [0,1] to map back into the range [0,1]. */ + public static void rgbe2float(float[] rgb, byte[] rgbe, int startRGBEOffset) { + float f; + + if (rgbe[startRGBEOffset + 3] != 0) { /*nonzero pixel*/ + f = (float) ldexp(1.0,(rgbe[startRGBEOffset + 3] & 0xFF)-(128+8)); + rgb[0] = (rgbe[startRGBEOffset + 0] & 0xFF) * f; + rgb[1] = (rgbe[startRGBEOffset + 1] & 0xFF) * f; + rgb[2] = (rgbe[startRGBEOffset + 2] & 0xFF) * f; + } else { + rgb[0] = 0; + rgb[1] = 0; + rgb[2] = 0; + } + } + + public static double ldexp(double value, int exp) { + if(!finite(value)||value==0.0) return value; + value = scalbn(value,exp); + // No good way to indicate errno (want to avoid throwing + // exceptions because don't know about stability of calculations) + // if(!finite(value)||value==0.0) errno = ERANGE; + return value; + } + + //---------------------------------------------------------------------- + // Internals only below this point + // + + //---------------------------------------------------------------------- + // Math routines, some fdlibm-derived + // + + static class FracExp { + private double fraction; + private int exponent; + + public FracExp(double fraction, int exponent) { + this.fraction = fraction; + this.exponent = exponent; + } + + public double getFraction() { return fraction; } + public int getExponent() { return exponent; } + } + + private static final double two54 = 1.80143985094819840000e+16; /* 43500000 00000000 */ + private static final double twom54 = 5.55111512312578270212e-17; /* 0x3C900000 0x00000000 */ + private static final double huge = 1.0e+300; + private static final double tiny = 1.0e-300; + + private static int hi(double x) { + long bits = Double.doubleToRawLongBits(x); + return (int) (bits >>> 32); + } + + private static int lo(double x) { + long bits = Double.doubleToRawLongBits(x); + return (int) bits; + } + + private static double fromhilo(int hi, int lo) { + return Double.longBitsToDouble((((long) hi) << 32) | + (((long) lo) & 0xFFFFFFFFL)); + } + + private static FracExp frexp(double x) { + int hx = hi(x); + int ix = 0x7fffffff&hx; + int lx = lo(x); + int e = 0; + if(ix>=0x7ff00000||((ix|lx)==0)) + return new FracExp(x, e); /* 0,inf,nan */ + if (ix<0x00100000) { /* subnormal */ + x *= two54; + hx = hi(x); + ix = hx&0x7fffffff; + e = -54; + } + e += (ix>>20)-1022; + hx = (hx&0x800fffff)|0x3fe00000; + lx = lo(x); + return new FracExp(fromhilo(hx, lx), e); + } + + private static boolean finite(double x) { + int hx; + hx = hi(x); + return (((hx&0x7fffffff)-0x7ff00000)>>31) != 0; + } + + /** + * copysign(double x, double y) <BR> + * copysign(x,y) returns a value with the magnitude of x and + * with the sign bit of y. + */ + private static double copysign(double x, double y) { + return fromhilo((hi(x)&0x7fffffff)|(hi(y)&0x80000000), lo(x)); + } + + /** + * scalbn (double x, int n) <BR> + * scalbn(x,n) returns x* 2**n computed by exponent + * manipulation rather than by actually performing an + * exponentiation or a multiplication. + */ + private static double scalbn(double x, int n) { + int hx = hi(x); + int lx = lo(x); + int k = (hx&0x7ff00000)>>20; /* extract exponent */ + if (k==0) { /* 0 or subnormal x */ + if ((lx|(hx&0x7fffffff))==0) { + return x; /* +-0 */ + } + x *= two54; + hx = hi(x); + k = ((hx&0x7ff00000)>>20) - 54; + if (n< -50000) { + return tiny*x; /*underflow*/ + } + } + if (k==0x7ff) { + return x+x; /* NaN or Inf */ + } + k = k+n; + if (k > 0x7fe) { + return huge*copysign(huge,x); /* overflow */ + } + if (k > 0) { + /* normal result */ + return fromhilo((hx&0x800fffff)|(k<<20), lo(x)); + } + if (k <= -54) { + if (n > 50000) { + /* in case integer overflow in n+k */ + return huge*copysign(huge,x); /* overflow */ + } else { + return tiny*copysign(tiny,x); /* underflow */ + } + } + k += 54; /* subnormal result */ + x = fromhilo((hx&0x800fffff)|(k<<20), lo(x)); + return x*twom54; + } + + //---------------------------------------------------------------------- + // Test harness + // + + public static void main(String[] args) { + for (int i = 0; i < args.length; i++) { + try { + DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(args[i]))); + Header header = RGBE.readHeader(in); + System.err.println("Header for file \"" + args[i] + "\":"); + System.err.println(" " + header); + byte[] data = new byte[header.getWidth() * header.getHeight() * 4]; + readPixelsRawRLE(in, data, 0, header.getWidth(), header.getHeight()); + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/demos/hdr/readme.txt b/src/demos/hdr/readme.txt new file mode 100755 index 0000000..ebc5a32 --- /dev/null +++ b/src/demos/hdr/readme.txt @@ -0,0 +1,3 @@ +Run with e.g. + +java -Dsun.java2d.noddraw=true demos.hdr.HDR demos/data/images/stpeters_cross.hdr 512 384 2 7 3 demos/data/models/teapot.obj diff --git a/src/demos/hdr/shaders/arbfp1/object.arbfp1 b/src/demos/hdr/shaders/arbfp1/object.arbfp1 new file mode 100755 index 0000000..30ee986 --- /dev/null +++ b/src/demos/hdr/shaders/arbfp1/object.arbfp1 @@ -0,0 +1,41 @@ +!!ARBfp1.0 +# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 +# command line args: -profile arbfp1 +# source file: ../cg/object.cg +# source file: ../cg/hdr.cg +#vendor NVIDIA Corporation +#version 1.0.02 +#profile arbfp1 +#program main +#semantic main.envMap : TEXUNIT0 +#var float4 In.HPosition : : : 0 : 0 +#var float4 In.P : : : 0 : 0 +#var float3 In.N : $vin.TEX1 : TEX1 : 0 : 1 +#var float3 In.I : $vin.TEX2 : TEX2 : 0 : 1 +#var samplerCUBE envMap : TEXUNIT0 : texunit 0 : 1 : 1 +#var half4 main : $vout.COL : COL : -1 : 1 +#const c[0] = 2 1 0 5 +#const c[1] = 0.9799805 0.02000427 +PARAM c[2] = { { 2, 1, 0, 5 }, + { 0.97998047, 0.020004272 } }; +TEMP R0; +TEMP R1; +DP3 R0.y, fragment.texcoord[2], fragment.texcoord[2]; +RSQ R0.w, R0.y; +DP3 R0.x, fragment.texcoord[1], fragment.texcoord[1]; +RSQ R0.x, R0.x; +MUL R1.xyz, R0.w, fragment.texcoord[2]; +MUL R0.xyz, R0.x, fragment.texcoord[1]; +DP3 R0.w, -R1, R0; +ADD R0.w, -R0, c[0].y; +DP3 R1.w, R0, R1; +MAX R0.w, R0, c[0].z; +MUL R0.xyz, R0, R1.w; +POW R0.w, R0.w, c[0].w; +MAD R0.xyz, -R0, c[0].x, R1; +MAD R0.w, R0, c[1].x, c[1].y; +TEX R0.xyz, R0, texture[0], CUBE; +MUL result.color.xyz, R0, R0.w; +MOV result.color.w, c[0].y; +END +# 17 instructions, 2 R-regs diff --git a/src/demos/hdr/shaders/arbfp1/object_hilo.arbfp1 b/src/demos/hdr/shaders/arbfp1/object_hilo.arbfp1 new file mode 100755 index 0000000..c6d5b55 --- /dev/null +++ b/src/demos/hdr/shaders/arbfp1/object_hilo.arbfp1 @@ -0,0 +1,45 @@ +!!ARBfp1.0 +# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 +# command line args: -profile arbfp1 +# source file: ../cg/object_hilo.cg +# source file: ../cg/hdr.cg +#vendor NVIDIA Corporation +#version 1.0.02 +#profile arbfp1 +#program main +#semantic main.envMap_rg : TEXUNIT0 +#semantic main.envMap_b : TEXUNIT1 +#var float4 In.HPosition : : : 0 : 0 +#var float4 In.P : : : 0 : 0 +#var float3 In.N : $vin.TEX1 : TEX1 : 0 : 1 +#var float3 In.I : $vin.TEX2 : TEX2 : 0 : 1 +#var samplerCUBE envMap_rg : TEXUNIT0 : texunit 0 : 1 : 1 +#var samplerCUBE envMap_b : TEXUNIT1 : texunit 1 : 2 : 1 +#var half4 main : $vout.COL : COL : -1 : 1 +#const c[0] = 2 1 0 5 +#const c[1] = 0.9799805 0.02000427 +PARAM c[2] = { { 2, 1, 0, 5 }, + { 0.97998047, 0.020004272 } }; +TEMP R0; +TEMP R1; +DP3 R0.y, fragment.texcoord[2], fragment.texcoord[2]; +RSQ R0.y, R0.y; +DP3 R0.x, fragment.texcoord[1], fragment.texcoord[1]; +MUL R1.xyz, R0.y, fragment.texcoord[2]; +RSQ R0.x, R0.x; +MUL R0.xyz, R0.x, fragment.texcoord[1]; +DP3 R0.w, -R1, R0; +DP3 R1.w, R0, R1; +MUL R0.xyz, R0, R1.w; +MAD R1.xyz, -R0, c[0].x, R1; +ADD R0.w, -R0, c[0].y; +MAX R0.y, R0.w, c[0].z; +TEX R0.x, R1, texture[1], CUBE; +POW R0.y, R0.y, c[0].w; +MOV R0.z, R0.x; +MAD R0.w, R0.y, c[1].x, c[1].y; +TEX R0.xy, R1, texture[0], CUBE; +MUL result.color.xyz, R0, R0.w; +MOV result.color.w, c[0].y; +END +# 19 instructions, 2 R-regs diff --git a/src/demos/hdr/shaders/arbfp1/object_vp.arbvp1 b/src/demos/hdr/shaders/arbfp1/object_vp.arbvp1 new file mode 100755 index 0000000..1f2a6fa --- /dev/null +++ b/src/demos/hdr/shaders/arbfp1/object_vp.arbvp1 @@ -0,0 +1,42 @@ +!!ARBvp1.0 +# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 +# command line args: -profile arbvp1 +# source file: ../cg/object_vp.cg +# source file: ../cg/hdr.cg +#vendor NVIDIA Corporation +#version 1.0.02 +#profile arbvp1 +#program main +#semantic main.modelViewProj +#semantic main.model +#semantic main.eyePos +#var float4 In.Position : $vin.POSITION : POSITION : 0 : 1 +#var float4 In.Normal : $vin.NORMAL : NORMAL : 0 : 1 +#var float4x4 modelViewProj : : c[0], 4 : 1 : 1 +#var float4x4 model : : c[4], 4 : 2 : 1 +#var float3 eyePos : : c[8] : 3 : 1 +#var float4 main.HPosition : $vout.HPOS : HPOS : -1 : 1 +#var float4 main.P : $vout.TEX0 : TEX0 : -1 : 1 +#var float3 main.N : $vout.TEX1 : TEX1 : -1 : 1 +#var float3 main.I : $vout.TEX2 : TEX2 : -1 : 1 +PARAM c[9] = { program.local[0..8] }; +TEMP R0; +TEMP R1; +DP4 result.position.w, vertex.position, c[3]; +DP4 result.position.z, vertex.position, c[2]; +DP4 result.position.y, vertex.position, c[1]; +DP4 result.position.x, vertex.position, c[0]; +DP4 R0.w, vertex.position, c[7]; +DP4 R0.z, vertex.position, c[6]; +DP4 R0.y, vertex.position, c[5]; +DP3 R1.z, vertex.normal, c[6]; +DP3 R1.y, vertex.normal, c[5]; +DP3 R1.x, vertex.normal, c[4]; +DP4 R0.x, vertex.position, c[4]; +DP3 R1.w, R1, R1; +ADD result.texcoord[2].xyz, R0, -c[8]; +RSQ R1.w, R1.w; +MOV result.texcoord[0], R0; +MUL result.texcoord[1].xyz, R1.w, R1; +END +# 16 instructions, 2 R-regs diff --git a/src/demos/hdr/shaders/arbfp1/recompile.txt b/src/demos/hdr/shaders/arbfp1/recompile.txt new file mode 100755 index 0000000..48469f3 --- /dev/null +++ b/src/demos/hdr/shaders/arbfp1/recompile.txt @@ -0,0 +1,7 @@ +cgc -profile arbfp1 -o object.arbfp1 ../cg/object.cg +cgc -profile arbfp1 -o object_hilo.arbfp1 ../cg/object_hilo.cg +cgc -profile arbvp1 -o object_vp.arbvp1 ../cg/object_vp.cg +cgc -profile arbfp1 -o shrink.arbfp1 ../cg/shrink.cg +cgc -profile arbfp1 -o skybox.arbfp1 ../cg/skybox.cg +cgc -profile arbfp1 -o skybox_hilo.arbfp1 ../cg/skybox_hilo.cg +cgc -profile arbfp1 -o tonemap.arbfp1 ../cg/tonemap.cg diff --git a/src/demos/hdr/shaders/arbfp1/shrink.arbfp1 b/src/demos/hdr/shaders/arbfp1/shrink.arbfp1 new file mode 100755 index 0000000..ddf7a4b --- /dev/null +++ b/src/demos/hdr/shaders/arbfp1/shrink.arbfp1 @@ -0,0 +1,34 @@ +!!ARBfp1.0 +# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 +# command line args: -profile arbfp1 +# source file: ../cg/shrink.cg +# source file: ../cg/hdr.cg +#vendor NVIDIA Corporation +#version 1.0.02 +#profile arbfp1 +#program main +#semantic main.sceneTex : TEXUNIT0 +#var float4 In.wpos : : : 0 : 0 +#var float3 In.tex0 : $vin.TEX0 : TEX0 : 0 : 1 +#var float3 In.tex1 : : : 0 : 0 +#var float4 In.col0 : : : 0 : 0 +#var samplerRECT sceneTex : TEXUNIT0 : texunit 0 : 1 : 1 +#var half4 main : $vout.COL : COL : -1 : 1 +#const c[0] = 1 0 0.25 +PARAM c[1] = { { 1, 0, 0.25 } }; +TEMP R0; +TEMP R1; +TEMP R2; +ADD R0.xy, fragment.texcoord[0], c[0]; +TEX R1, R0, texture[0], RECT; +TEX R0, fragment.texcoord[0], texture[0], RECT; +ADD R2, R0, R1; +ADD R0.xy, fragment.texcoord[0], c[0].yxzw; +ADD R1.xy, fragment.texcoord[0], c[0].x; +TEX R0, R0, texture[0], RECT; +TEX R1, R1, texture[0], RECT; +ADD R0, R2, R0; +ADD R0, R0, R1; +MUL result.color, R0, c[0].z; +END +# 11 instructions, 3 R-regs diff --git a/src/demos/hdr/shaders/arbfp1/skybox.arbfp1 b/src/demos/hdr/shaders/arbfp1/skybox.arbfp1 new file mode 100755 index 0000000..8d3d9db --- /dev/null +++ b/src/demos/hdr/shaders/arbfp1/skybox.arbfp1 @@ -0,0 +1,22 @@ +!!ARBfp1.0 +# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 +# command line args: -profile arbfp1 +# source file: ../cg/skybox.cg +# source file: ../cg/hdr.cg +#vendor NVIDIA Corporation +#version 1.0.02 +#profile arbfp1 +#program main +#semantic main.envMap : TEXUNIT0 +#var float4 In.wpos : : : 0 : 0 +#var float3 In.tex0 : $vin.TEX0 : TEX0 : 0 : 1 +#var float3 In.tex1 : : : 0 : 0 +#var float4 In.col0 : : : 0 : 0 +#var samplerCUBE envMap : TEXUNIT0 : texunit 0 : 1 : 1 +#var half4 main : $vout.COL : COL : -1 : 1 +#const c[0] = 1 +PARAM c[1] = { { 1 } }; +TEX result.color.xyz, fragment.texcoord[0], texture[0], CUBE; +MOV result.color.w, c[0].x; +END +# 2 instructions, 0 R-regs diff --git a/src/demos/hdr/shaders/arbfp1/skybox_hilo.arbfp1 b/src/demos/hdr/shaders/arbfp1/skybox_hilo.arbfp1 new file mode 100755 index 0000000..fe0d910 --- /dev/null +++ b/src/demos/hdr/shaders/arbfp1/skybox_hilo.arbfp1 @@ -0,0 +1,27 @@ +!!ARBfp1.0 +# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 +# command line args: -profile arbfp1 +# source file: ../cg/skybox_hilo.cg +# source file: ../cg/hdr.cg +#vendor NVIDIA Corporation +#version 1.0.02 +#profile arbfp1 +#program main +#semantic main.envMap_rg : TEXUNIT0 +#semantic main.envMap_b : TEXUNIT1 +#var float4 In.wpos : : : 0 : 0 +#var float3 In.tex0 : $vin.TEX0 : TEX0 : 0 : 1 +#var float3 In.tex1 : : : 0 : 0 +#var float4 In.col0 : : : 0 : 0 +#var samplerCUBE envMap_rg : TEXUNIT0 : texunit 0 : 1 : 1 +#var samplerCUBE envMap_b : TEXUNIT1 : texunit 1 : 2 : 1 +#var half4 main : $vout.COL : COL : -1 : 1 +#const c[0] = 1 +PARAM c[1] = { { 1 } }; +TEMP R0; +TEX R0.x, fragment.texcoord[0], texture[1], CUBE; +TEX result.color.xy, fragment.texcoord[0], texture[0], CUBE; +MOV result.color.z, R0.x; +MOV result.color.w, c[0].x; +END +# 4 instructions, 1 R-regs diff --git a/src/demos/hdr/shaders/arbfp1/tonemap.arbfp1 b/src/demos/hdr/shaders/arbfp1/tonemap.arbfp1 new file mode 100755 index 0000000..0dd5a5a --- /dev/null +++ b/src/demos/hdr/shaders/arbfp1/tonemap.arbfp1 @@ -0,0 +1,64 @@ +!!ARBfp1.0 +# cgc version 1.3.0001, build date Aug 4 2004 10:01:10 +# command line args: -profile arbfp1 +# source file: ../cg/tonemap.cg +# source file: ../cg/hdr.cg +#vendor NVIDIA Corporation +#version 1.0.02 +#profile arbfp1 +#program main +#semantic main.sceneTex : TEXUNIT0 +#semantic main.blurTex : TEXUNIT1 +#semantic main.gammaTex : TEXUNIT2 +#semantic main.vignetteTex : TEXUNIT3 +#semantic main.blurAmount +#semantic main.windowSize +#semantic main.exposure +#var float4 In.wpos : : : 0 : 0 +#var float3 In.tex0 : $vin.TEX0 : TEX0 : 0 : 1 +#var float3 In.tex1 : $vin.TEX1 : TEX1 : 0 : 1 +#var float4 In.col0 : : : 0 : 0 +#var samplerRECT sceneTex : TEXUNIT0 : texunit 0 : 1 : 1 +#var samplerRECT blurTex : TEXUNIT1 : texunit 1 : 2 : 1 +#var sampler1D gammaTex : TEXUNIT2 : texunit 2 : 3 : 1 +#var samplerRECT vignetteTex : TEXUNIT3 : texunit 3 : 4 : 1 +#var float blurAmount : : c[1] : 5 : 1 +#var float4 windowSize : : : 6 : 0 +#var float exposure : : c[2] : 7 : 1 +#var half4 main : $vout.COL : COL : -1 : 1 +#const c[0] = 1 0 +PARAM c[3] = { { 1, 0 }, + program.local[1..2] }; +TEMP R0; +TEMP R1; +TEMP R2; +TEMP R3; +TEMP R4; +ADD R0.xy, fragment.texcoord[1], c[0].yxzw; +ADD R1.xy, fragment.texcoord[1], c[0].x; +TEX R1.xyz, R1, texture[1], RECT; +TEX R0.xyz, R0, texture[1], RECT; +ADD R3.xyz, R1, -R0; +FRC R4.xy, fragment.texcoord[1]; +ADD R1.xy, fragment.texcoord[1], c[0]; +TEX R2.xyz, fragment.texcoord[1], texture[1], RECT; +TEX R1.xyz, R1, texture[1], RECT; +ADD R1.xyz, R1, -R2; +MAD R1.xyz, R4.x, R1, R2; +MAD R0.xyz, R4.x, R3, R0; +ADD R2.xyz, R0, -R1; +TEX R0.xyz, fragment.texcoord[0], texture[0], RECT; +MAD R1.xyz, R4.y, R2, R1; +ADD R1.xyz, R1, -R0; +MAD R1.xyz, R1, c[1].x, R0; +MUL R1.xyz, R1, c[2].x; +TEX R0.xyz, fragment.texcoord[0], texture[3], RECT; +MUL R0.xyz, R1, R0; +TEX result.color.x, R0, texture[2], 1D; +TEX R0.x, R0.y, texture[2], 1D; +TEX R1.x, R0.z, texture[2], 1D; +MOV result.color.y, R0.x; +MOV result.color.z, R1.x; +MOV result.color.w, c[0].x; +END +# 26 instructions, 5 R-regs diff --git a/src/demos/hdr/shaders/cg/hdr.cg b/src/demos/hdr/shaders/cg/hdr.cg new file mode 100755 index 0000000..3a0cafd --- /dev/null +++ b/src/demos/hdr/shaders/cg/hdr.cg @@ -0,0 +1,130 @@ +/* + Cg functions to decode and filter textures in Radiance (RGBE) high dynamic range format + sgg 2/15/02 + + http://www.graphics.cornell.edu/~bjw/rgbe.html +*/ + +#if 0 +typedef float4 vec4; +typedef float3 vec3; +typedef float2 vec2; +typedef float real; +#define texRECT f4texRECT +#define texCUBE f4texCUBE +#else +typedef half4 vec4; +typedef half3 vec3; +typedef half2 vec2; +typedef half real; +#define texRECT h4texRECT +#define texCUBE h4texCUBE +#endif + +struct fragin +{ + float4 wpos : WPOS; + float3 tex0 : TEXCOORD0; + float3 tex1 : TEXCOORD1; + float4 col0 : COLOR0; +}; + +// Lookup in RGBE-encoded rectangle texture +vec3 texRECT_RGBE(uniform samplerRECT tex, float2 t) +{ + vec4 rgbe = texRECT(tex, t); + real e = (rgbe[3] * 255) - 128; + return rgbe.xyz * exp2(e); +} + +// Lookup in RGBE-encoded cube map texture +vec3 texCUBE_RGBE(uniform samplerCUBE tex, float3 t) +{ + vec4 rgbe = texCUBE(tex, t); + real e = (rgbe[3] * 255) - 128; + return rgbe.xyz * exp2(e); +} + +// Lookup in RGBE-encoded rectangle texture with filtering +vec3 texRECT_RGBE_Bilinear(uniform samplerRECT tex, half2 t) +{ + float2 f = frac(t); + vec3 t0 = texRECT_RGBE(tex, t); + vec3 t1 = texRECT_RGBE(tex, t + half2(1,0) ); + vec3 t2 = lerp(t0, t1, f[0]); + t0 = texRECT_RGBE(tex, t + half2(0,1) ); + t1 = texRECT_RGBE(tex, t + half2(1,1) ); + t0 = lerp(t0, t1, f[0]); + t0 = lerp(t2, t0, f[1]); + return t0; +} + +// Lookup in cubemap encoded as two HILO cube maps +vec3 texCUBE_hilo(uniform samplerCUBE rg_tex : TEXUNIT0, uniform samplerCUBE b_tex : TEXUNIT1, float3 t) +{ + vec3 c; + c.xy = texCUBE(rg_tex, t).xy; + c.z = texCUBE(b_tex, t).x; +// c = c * c; + return c; +} + +// Lookup in rectangle texture encoded as two HILO cube maps +vec3 texRECT_hilo(uniform samplerRECT rg_tex : TEXUNIT0, uniform samplerRECT b_tex : TEXUNIT1, float2 t) +{ + vec3 c; + c.xy = texRECT(rg_tex, t).xy; + c.z = texRECT(b_tex, t).x; + return c; +} + +// bilinear lookup in float texture +vec4 texRECT_bilinear(uniform samplerRECT tex, half2 t) +{ + float2 f = frac(t); + vec4 t0 = texRECT(tex, t); + vec4 t1 = texRECT(tex, t + half2(1,0) ); + vec4 t2 = lerp(t0, t1, f[0]); + t0 = texRECT(tex, t + half2(0,1) ); + t1 = texRECT(tex, t + half2(1,1) ); + t0 = lerp(t0, t1, f[0]); + t0 = lerp(t2, t0, f[1]); + return t0; +} + +// applying vignetting based on window coordinates +void vignette(inout float3 c, float4 wpos, const float2 win_bias, const float2 win_scale) +{ + // convert window coord to [-1, 1] range + wpos.xy = (wpos.xy - win_bias) * win_scale; + // calculate distance from origin + float r = length(wpos.xy); + r = 1.0 - smoothstep(0.8, 1.5, r); + c = c * r; +} + +// refraction function from Renderman spec +// I = incident direction, N = normal, eta = relative index of refraction +half3 my_refract(half3 I, half3 N, half eta) +{ + half IdotN = dot(I,N); + half k = 1 - eta*eta*(1 - IdotN*IdotN); + + return eta*I - (eta*IdotN + sqrt(k))*N; +} + +// fresnel approximation +half my_fresnel(half3 I, half3 N, half power, half scale, half bias) +{ + return bias + (pow(max(0.0, 1.0 - dot(I, N)), power) * scale); +} + +// transform a direction vector by a 4x4 matrix +float3 transform_dir(float4x4 m, float3 v) +{ + float3 o; + o.x = dot(v, m._11_12_13); + o.y = dot(v, m._21_22_23); + o.z = dot(v, m._31_32_33); + return o; +} diff --git a/src/demos/hdr/shaders/cg/object.cg b/src/demos/hdr/shaders/cg/object.cg new file mode 100755 index 0000000..a242bc6 --- /dev/null +++ b/src/demos/hdr/shaders/cg/object.cg @@ -0,0 +1,30 @@ +// object shader + +#include "hdr.cg" + +struct v2f +{ + float4 HPosition : POSITION; + float4 P : TEXCOORD0; // position + float3 N : TEXCOORD1; // normal + float3 I : TEXCOORD2; // incident vector +}; + +half4 main(v2f In, + uniform samplerCUBE envMap : TEXUNIT0) : COLOR +{ + half3 I = normalize(half3(In.I)); + half3 N = normalize(half3(In.N)); + + half3 R = reflect(I, N); +// half3 T = refract(I, N, 0.9); + half fresnel = my_fresnel(-I, N, 5.0, 0.98, 0.02); + + half3 Creflect = texCUBE(envMap, R).rgb; // lookup reflection in HDR cube map +// half3 Crefract = texCUBE(envMap, T).rgb; // refraction + +// half3 Cout = lerp(Crefract, Creflect, fresnel); +// return half4(Cout, fresnel*0.5 + 0.5); + + return half4(Creflect * fresnel, 1.0); +} diff --git a/src/demos/hdr/shaders/cg/object_hilo.cg b/src/demos/hdr/shaders/cg/object_hilo.cg new file mode 100755 index 0000000..88a3348 --- /dev/null +++ b/src/demos/hdr/shaders/cg/object_hilo.cg @@ -0,0 +1,31 @@ +// object shader + +#include "hdr.cg" + +struct v2f +{ + float4 HPosition : POSITION; + float4 P : TEXCOORD0; // position + float3 N : TEXCOORD1; // normal + float3 I : TEXCOORD2; // incident vector +}; + +half4 main(v2f In, + uniform samplerCUBE envMap_rg : TEXUNIT0, + uniform samplerCUBE envMap_b : TEXUNIT1) : COLOR +{ + half3 I = normalize(half3(In.I)); + half3 N = normalize(half3(In.N)); + + half3 R = reflect(I, N); +// half3 T = refract(I, N, 0.9); + half fresnel = my_fresnel(-I, N, 5.0, 0.98, 0.02); + + half3 Creflect = texCUBE_hilo(envMap_rg, envMap_b, R).rgb; // lookup reflection in HDR cube map +// half3 Crefract = texCUBE_hilo(envMap_rg, envMap_b, T).rgb; // refraction + +// half3 Cout = lerp(Crefract, Creflect, fresnel); +// return half4(Cout, 1.0); + + return half4(Creflect * fresnel, 1.0); +} diff --git a/src/demos/hdr/shaders/cg/object_vp.cg b/src/demos/hdr/shaders/cg/object_vp.cg new file mode 100755 index 0000000..895dc28 --- /dev/null +++ b/src/demos/hdr/shaders/cg/object_vp.cg @@ -0,0 +1,43 @@ +#include "hdr.cg" + +// application to vertex shader +struct a2v +{ + float4 Position : POSITION; + float4 Normal : NORMAL; +}; + +// vertex shader to fragment shader +struct v2f +{ + float4 HPosition : POSITION; + float4 P : TEXCOORD0; // position + float3 N : TEXCOORD1; // normal + float3 I : TEXCOORD2; // incident vector +}; + +v2f main(a2v In, + uniform float4x4 modelViewProj, + uniform float4x4 model, + uniform float3 eyePos + ) +{ + v2f Out; + + // transform position + float4 P = mul(model, In.Position); + + // transform normal + float3 N = transform_dir(model, In.Normal.xyz); + N = normalize(N); + + // calculate incident vector + float3 I = P.xyz - eyePos; + + Out.P = P; + Out.N = N; + Out.I = I; + + Out.HPosition = mul(modelViewProj, In.Position); + return Out; +} diff --git a/src/demos/hdr/shaders/cg/shrink.cg b/src/demos/hdr/shaders/cg/shrink.cg new file mode 100755 index 0000000..7e01947 --- /dev/null +++ b/src/demos/hdr/shaders/cg/shrink.cg @@ -0,0 +1,17 @@ +// downsample float image by half + +#include "hdr.cg" + +half4 main(fragin In, + uniform samplerRECT sceneTex : TEXUNIT0 + ) : COLOR +{ + // should calculate texcoords in vertex shader here: + half4 c; + c = texRECT(sceneTex, In.tex0.xy); + c = c + texRECT(sceneTex, In.tex0.xy + float2(1, 0)); + c = c + texRECT(sceneTex, In.tex0.xy + float2(0, 1)); + c = c + texRECT(sceneTex, In.tex0.xy + float2(1, 1)); + c = c * 0.25; + return c; +} diff --git a/src/demos/hdr/shaders/cg/skybox.cg b/src/demos/hdr/shaders/cg/skybox.cg new file mode 100755 index 0000000..5ca6e6f --- /dev/null +++ b/src/demos/hdr/shaders/cg/skybox.cg @@ -0,0 +1,8 @@ +#include "hdr.cg" + +half4 main(fragin In, + uniform samplerCUBE envMap : TEXUNIT0) : COLOR +{ + half3 c = texCUBE(envMap, In.tex0).rgb; + return half4(c, 1.0); +} diff --git a/src/demos/hdr/shaders/cg/skybox_hilo.cg b/src/demos/hdr/shaders/cg/skybox_hilo.cg new file mode 100755 index 0000000..d7392bf --- /dev/null +++ b/src/demos/hdr/shaders/cg/skybox_hilo.cg @@ -0,0 +1,9 @@ +#include "hdr.cg" + +half4 main(fragin In, + uniform samplerCUBE envMap_rg : TEXUNIT0, + uniform samplerCUBE envMap_b : TEXUNIT1) : COLOR +{ + half3 c = texCUBE_hilo(envMap_rg, envMap_b, In.tex0).rgb; + return half4(c, 1.0); +} diff --git a/src/demos/hdr/shaders/cg/tonemap.cg b/src/demos/hdr/shaders/cg/tonemap.cg new file mode 100755 index 0000000..c3d218f --- /dev/null +++ b/src/demos/hdr/shaders/cg/tonemap.cg @@ -0,0 +1,37 @@ +// Tone mapping pass + +#include "hdr.cg" + +half4 main(fragin In, + uniform samplerRECT sceneTex : TEXUNIT0, + uniform samplerRECT blurTex : TEXUNIT1, + uniform sampler1D gammaTex : TEXUNIT2, + uniform samplerRECT vignetteTex : TEXUNIT3, + uniform float blurAmount, + uniform float4 windowSize, + uniform float exposure + ) : COLOR +{ + // sum original and blurred image + half3 c = lerp(texRECT(sceneTex, In.tex0.xy), texRECT_bilinear(blurTex, In.tex1.xy), blurAmount).xyz; + + // exposure + c = c * half(exposure); + + // vignette effect (makes brightness drop off with distance from center) +// vignette(c, In.wpos, windowSize.xy, windowSize.zw); + c = c * texRECT(vignetteTex, In.tex0.xy).rgb; + + // gamma correction +#if 0 + // use math + c = pow(c, 1.0 / 2.2); +#else + // use lut + c.r = h1tex1D(gammaTex, c.r); + c.g = h1tex1D(gammaTex, c.g); + c.b = h1tex1D(gammaTex, c.b); +#endif + + return half4(c, 1.0); +} |